* Speed query up by reusing existing aliases which reduces table joins * Use subquery in top level m2o to remove duplicates * Fix linting * Apply distinct on primary key field in subqueries * Use distinct instead as there are only primary keys * Apply subquery on top level * Try remove sub sub query * Test if working for all vendors * Add support for _none and _some * Use subquery only when field depth > 1 * Add tests * Use original table names for columns with functions (#14690) * Use original table names for columns with functions * Extract filter function path parsing as shared util * Fix filter function path when adding node * Pass the originalCollectionName into filter functions * Update unit test * Replace functions within deep GraphQL * Fix invalid operator error for _none and _some * Add filter function tests * Revert triggering for all vendors * Simplify aliasMap * Replace functions in filter within GraphQL aggregate query * Add API support for filtering of alias field * Mark schema as optional * Shift logical operators upwards * Separate recursive parseFilter * Rework shifting of logical operators * Error on invalid usage of _none and _some * Use inner join to preserve sort order * Run tests for all vendors * Reuse aliasMap for sort and filter * Sort on top level query * Remove unnecessary limit on wrapper query * Refactor applyQuery options * Remove duplicates from nested multi relational sort * Fix offset in MSSQL requiring OrderBy * Disable schema cache * Use inner query only for nested sort or multi relational filter * Fix MSSQL duplicate order column * Use inner query only for multi relational * Additional integration tests * Order within partition for multi relational sorts * Rename to directus_row_number * Fix unit test * Add base sort and filter tests * Fix Oracle uppercased rowNumber column * Fix unit test * Fix top level query sort with function * Parse functions in inner query * Increase clarity with knex.ref() * Remove sort filter for top level primary key * Fix unit test * Bypass queries with groupBy * Add collection to aliasMap to fix functions in nested sort * Fix multi relational sort with functions * Add tests for filter and sort with functions * Fix accidental deletion of brackets * Fix top level alias filter node interface * Update M2M sort tests * Add M2A tests * Cast m2a primary key as varchar2 for oracle * Enable filtering tests for M2A * Fix prototype polluting assignment in aliasMap * Remove unnecessary currentKey * Simplify code to increase readability Co-authored-by: Brainslug <br41nslug@users.noreply.github.com> * Fix linting and missing 'this' error * Revert optional chaining * Add mysql5 to tests * Fix mysql5 missing rowNumber() * Overcome indexing delays in MySQL5 * Verify MySQL5 sorting is in order as the result count varies between runs * Skip joining when sorting field already exists * Simplify variable assignment Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com> * Fix linting * Reduce duplicate logic with vars * Transform _func fields in GraphQL only for valid functions * Fix unit test * Fix unsupported date_part() in CrDB Co-authored-by: Brainslug <br41nslug@users.noreply.github.com> Co-authored-by: Roger Stringer <roger@directus.io> Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com> Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Introduction
Directus is a free and open-source data platform for headless content management. It can be installed on top of any new or existing SQL database, instantly providing a dynamic API (REST+GraphQL) and accompanying App for managing content. Built entirely in TypeScript (in Node and Vue), Directus is completely modular and end-to-end extensible... with absolutely no paywalls or artificial limitations.
Modern and intuitive, the Directus App enables no-code data discovery, allowing for even the most non-technical users to view, author, and manage your raw database content. Our performant and flexible API is able to adapt to any relational schema, and includes rule-based permissions, event/web hooks, custom endpoints, numerous auth options, configurable storage adapters, and much more.
Current database support includes: PostgreSQL, MySQL, SQLite, MS-SQL Server, OracleDB, MariaDB, and variants such as AWS Aurora/Redshift or Google Cloud Platform SQL.
Learn more at...
Installing
Directus requires NodeJS 10+. Create a new project with our simple CLI tool:
npm init directus-project my-project
Or using yarn:
yarn create directus-project my-project
The above command will create a directory with your project name, then walk you through the database configuration and creation of your first admin user.
Updating
To update an existing Directus project, navigate to your project directory and run:
npm update
Contributing
Please report any and all issues on our GitHub.
Pull-requests are more than welcome, and always appreciated. Please be sure to read our Contributors Guide before starting work on a new feature/fix, or reach out a member of the Core Team via GitHub or Discord with any questions.
Supporting
Directus is a free and open-source project with development made possible by support from our passionate core team, amazing contributors, and generous sponsors. It's not easy building premium open-source software; if you would like to help ensure Directus stays free, please consider becoming a sponsor.
License
Directus is released under the GPLv3 license. Monospace Inc owns all Directus trademarks, logos, and intellectual property on behalf of our project's community. Copyright © 2004-2020, Monospace Inc.
