* Expose schema endpoints
* respond with 204
* fix payload for export flag
* allow export as YAML
* use SchemaService
* move getStringFromStream to utils
* clearer exceptions with logs
* check empty request body
* specs
* add bypassCache flag and remove flushCaches calls
* Identify integer typed fields in Oracle
* Fix uuid foreign keys type for Oracle
* Detect autoincrement for CockroachDB
* Bypass cache for fields and relations services
* Add same DB tests
* Test if working for all vendors
* Add schema snapshot testing into sequential flow
* Fix schema re-apply attempts when it's a different database vendor (#14816)
* prevent diffing on certain properties
* fix apply-snapshot test
* prevent updates to autoincrement fields' schema
* sanitize relations
* remove `colleciton.schema.sql` parsing in test
It is now being sanitized by `sanitizeCollection()` function in get-snapshot-diff.ts
* Change concurrency group to not cancel test running on main
* remove multipart for apply & add hash checking
* check incoming version & add force query param
* refine error message & stub for nested hash
* add `vendor` top-level property
as an additional safety net for cross db vendor applies
* sanitize generated schema snapshots
* snapshot joi validation
* diff joi validation
* minor cleanup
* extract applyDiff & use deep-diff applyChange
* use applyDiff in schema service
* Mark vendor as optional
* Update tests to apply diffs
* move force flag check into service
* Patch mssql vendor typo
* Set relation no action in cyclic relations
* Update mysql timestamp default value
* Oracle cannot define no action
* Update oracle timestamp type default values
* add hash checking for outdated diffs
* fix diff service & endpoint
* Add hashes when returning after
* Fix self referencing relations for Oracle
* Add temp fix for CURRENT_TIMESTAMP defaults in Oracle
* clean up driver and database client types
* only require diff hash if not kind N
* update hash comparison logic for create/delete
* Set no action constraint for self referencing M2M in MSSQL
* Add basic hash check tests
* omit default value when hashing auto increments
Specifically for CockroachDB with differing sequences
* add vendor check
* update specs
* Validate vendors with type definition
* Spread the vendors input array
* re-add Export component
* re-add js-yaml to root
* Propagate mutation options for schema apply
* Verify that snapshots differ and clear cache before hash tests
* Fix unit test
* Revert temp fix for CURRENT_TIMESTAMP defaults in Oracle
* Define and reuse type for export format
* Define and reuse list of database clients
* change `were` to `was`
* change `where` to `were`
* add some empty lines for readability
* tweak exception message
* fix test
* use object-hash
* use boolean to check whether file is included
* simplify request content type check
* throw error when multiple files were uploaded
* use nullish coalesce instead of short circuit
* Update api/src/services/schema.ts
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Remove unnecessary `Omit` on `SnapshotWithHash` type
* Revert "Remove unnecessary `Omit` on `SnapshotWithHash` type"
This reverts commit d22ac771ec.
* check empty snapshot earlier
* use allow-list logic via pick instead of omit
* Update api/src/services/schema.ts
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* Move to own /schema endpoint controller
* Fix refs to schema endpoint
* move streamToString to utils package
* move get-versioned-hash and add test
* extract kind into an enum
* Fix mysql5 timestamp value
* Fix test collection existing on rerun
* resolve TODO comment in blackbox test
* Drop deep level hashes in diff
These hashes are used only for more accurate error reporting
but are otherwise superfluous, since changes are already
detected by the top level hash.
Therefore we remove them in favor of a simpler diff format and
implementation.
* Revert schema "fix" for createItem, add comment
* Strict diff schema validation
* Revert CrDB auto-increment detection patch in 816c998
* Clear systemCache to expose newly added fields
* Use DiffKind constants
* Extract diff & snapshot validation into own tested utils
* Apply suggestions from @azrikahar
* Update knex-schema-inspector to 3.0.1
Includes the fix for CrDB auto-increment detection (knex/knex-schema-inspector#135)
* Update knex-schema-inspector in packages
* Update lock file
* add test for schema service
* add test for export service
* add relevant tests to modified util functions
* fix csv test to account for os end of line
* fix files controller test
* dedupe test data for schema service
* Align schema specs with docs
* Update api/src/controllers/schema.ts
* Revert testing for all vendors
---------
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* Fix field configuration view not updating when navigating between different fields in New Field drawer
* Used Vue toRef instead of computed as per the feedback
* Make type reactive too
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Parse string filter as JSON
* Parse content as JSON when toggling raw editor
* Refactor missing Dashboard type
* Convert filter to gql format
* Disable alias field filter selection in insights
* Use parseJSON util
* Refactor to allow selectivity of relational field for GraphQL filters
* Emit variables
* Skip emitting invalid JSON
* Add unit tests
* New translations en-US.yaml (Thai)
* New translations en-US.yaml (Thai)
* New translations en-US.yaml (Greek)
* New translations en-US.yaml (Greek)
* New translations en-US.yaml (Thai)
* New translations en-US.yaml (Spanish, Latin America)
* New translations en-US.yaml (Spanish, Latin America)
* New translations en-US.yaml (Spanish, Latin America)
* New translations en-US.yaml (Spanish, Latin America)
* New translations en-US.yaml (Ukrainian)
* New translations en-US.yaml (Ukrainian)
* New translations en-US.yaml (Hindi)
* New translations en-US.yaml (Spanish, Latin America)
* New translations en-US.yaml (Chinese Simplified)
* New translations en-US.yaml (Turkish)
* New translations en-US.yaml (Khmer)
* New translations en-US.yaml (English, United Kingdom)
* New translations en-US.yaml (English, United Kingdom)
* New translations en-US.yaml (Spanish)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (German)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Chinese Simplified)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Arabic)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Arabic)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Slovak)
* New translations en-US.yaml (Arabic)
* New translations en-US.yaml (Arabic)
* New translations en-US.yaml (Arabic)
* New translations en-US.yaml (Arabic)
* prevent 500 error when limit=0
* short circuit parser instead
* removed unneeded comment
* setting a sensible minimum and step for export limit
* fixed notif message when exporting limit=-1
* re-added !exportSettings.limit fallback behavior
* guard against negative limit values lower than -1
* add unit test for sanitizeQuery
* remove unnecessary test cases
because offset and page are validated in validateQuery
* delegate validation to validateQuery instead
* use sanitizeQuery util for export
* Added check for integers
Co-authored-by: ian <licitdev@gmail.com>
* validate instead of sanitize
* removed obsolete test
* added integer checks for limit, offset, page and sensible minimums
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Fix paths of imports
* Process not-found.vue as ts
To prevent the following error from 'vue-tsc':
error TS6504: File '/Users/pascal/Development/directus/app/src/modules/insights/routes/not-found.vue.js' is a JavaScript file. Did you mean to enable the 'allowJs' option?
Note: We could also enable 'allowJS' but since this is the only js file
this seems to be a more fitting fix
* Drop hljs language definition for GraphQL (now in core)
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* check for auto increment when saving as copy
* updated check to cover uuid generated IDs
* attempt to test use-item composable
* updated test objects
* do not rely on is_generated
* fix readonly regression
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
* implements server sort when dealing with multple relational pages
* always use server sort
* fixed unsetting sort
* removed frontend sorting
* make loading total count more accurate
* remove removed prop
Co-authored-by: Nitwel <mail@nitwel.de>
* add link command and small improvements
* put local bundles into own folder on link
* get rid of packs and add bundle support for local extensions
* make bundle type extensions work locally and remove traces of pack
* fix hot reloading of bundles
* fix app.js not refreshing
* fixed linter errors
* add endpoint to install extensions
* update package.json validation and support top level extensions
* update endpoints
* added some URL escapes and ran linter
* remove installation part
* readd endpoint
* update dependencies
* fix types and validation in extension-sdk
* run linter
* fix linter
* add defaults to manifest
* Added missing constant export
* ensure all the extension folders
* ignore unneeded vite error
* update linking process
* run parser separate
* add await
* fixed linter errors
Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
* Allow env access in Flows Run Script operation
* Add env variable
* Expose env for consistency
* Remove global variable from run script operation
* Rename env to FLOWS_ENV_ALLOW_LIST
* Use env within data for consistency
* Remove env notice in run script operation
* Remove translation and tests
* Fix unit test
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
* 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>
* add embed hook definitions
* inject embeds in the App html
* fixed typo
* removed unnecessary env parameter
* Added comment marking the custom embeds
* attempt to add test for createApp
* mock db in app test
* temporarily set log style to raw in test
* one more round
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>