* add basic util function for later use
* sketch up useRelationMultiple implementation
* update relation util and start reworking relational interfaces
* support filter in m2o
* start working on useRelationMultiple
* continue working on relational foundation
* finish basic use-relation-multiple composable
* get o2m pretty close to being finished
* finish up list-o2m
* replace old interfaces
* copy existing interface
* rewrite vue file
* highlight deleted items
* use Search instead of Get
* support selection on m2m
* finish up m2m
* replace old files
* update files interface
* fix permission checks
* fix styling
* add sketches to explain relations
* rewrite m2a interface
* add usage hint to use-relation-multiple
* update file interface to use new composable
* update file-image interface
* fix image not being shown
* revert names
* fix selection of existing items
* fix loading selected items
* in between commit
* update translations interface
* try using composable recursive
* try linear approach on value modeling
* finish rewriting list-o2m-tree-view interface
* revert api changes
* fix sorting for list-o2m-tree-view
* fix selected items in created array
* Add direct download option to files interface
* Fix linter warnings
* Weird that it's being difficult, but ok
* Cast existingItemCount to number at all times
* fix page gets set below 1
* align pagination to the right
* highlight deselecting row
* show min 1 skeleton loader
* only filter selected when item exists
* fix working on new items
* Fix linter warning
* fix deselecting selected items
* show different icon depending if icon is local
* add changes from #12611
* Add _some vs _none support to o2m
* finish filtering out selected items
* Use get instead of search request
* fix save and stay
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* fix adding items to m2o
* Fix linter warning
* Handle no-type better
* Clean up axios usage
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
* Remove UTC conversion from date, time and datetime fields
* Fix mysql / maria timestamps when not in UTC timezone
* Add sequential tests with node timezone change
* Increase connection attempt check
* Add error catching in tests flow setup
* Check for server connectivity
* Fix promises
* Fix timestamp inconsistencies
* Revert to previously used parseISO
* Ensure database and directus connection
* Add another timezone to test positive and negative GMT
* Set local server hostname to localhost
* Add tests for SQLite
* Use notNullable primary key
* Revert connection testing sleep duration
* Fix nested transactions on SQLite
* Increase MSSQL request timeout
* Add type override flag for SQLite
* Remove commented code
* Add type override flags for Oracle
* Updated test file path
* Increase test servers launch timeout
* Increase test servers launch timeout
* Update format of tests
* Fix typo
* Increase test timeout for CockroachDB
* Add type overrides when creating fields through collections service
* Remove time field type conversion for Oracle
* Update collections list in test
* Remove check for time field in Oracle
* Add missing continue...
* Remove database override
* Add note for SQLite
* Rename flags and extract shared util
* Abstract remaining DB specific checks
* Revert flags renaming except renaming of test files
* Use date helper to add field flag
* Move field date typecasting upstream
* Use timestamp helper for date-created and date-updated
* Fix tests
* Remove unused vars
* Add tests for date-created
* Increase connection attempt count
* Fix test for mariadb
* Increase allowable difference to account for delays
* Add tests for date-updated
* Fix tests again for mariadb
* Add date helpers post merge
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Rename date functions to fn, add json_array_length for pg
* Add json count to mssql
* Add json array count support to other vendors
* Add UI for selecting API functions
* Make it not break
* Render functions in filter preview better
* Include functions in field altering
* Add schema access to database helper
* Allow filtering against o2m/m2m/m2a count
* Add data function execution helpers in utils
* Fix type issue
* Inject function results in validate step
* Render field keys with function names translated
* Allow selecting nested/functions in field validation step
* Make sure number comparisons are treated as numbers
* Add check if instanceof date when casting to a Number
* Prevent selecting foreign keys for junction sort (#12463)
* [SDK] Add further request options to `items` functions (#12503)
* add possibility to set further options to the request
* fix options type
* add typings to interface
* add test if headers are passed thourght
* create reusable options param
* set higher priority to options param
* Small stylistic cleanup
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Jürg Hunziker <juerg.hunziker@gmail.com>
* Add field validation column
* Add frontend config for validation
* Make it work
* Add regex to filter configuration
* Fix const/let
* Add custom validation message support
* Add custom validation message tooltip inline
* Fix custom names in validation errors up top
* Fix type error
* Nog eentje om het af te leren
* resolve unused import warnings
* Prefix typecasting field flags
* Fix payload test
* Update flags for system tables and for field creation in app
* Revert cast-hash and cast-uuid
* Rename migrations file to current date
* Use script setup
* Start on export dialog
* Use new system field interface, replace limit with numeric input
* Set placeholder
* Add sort config
* Use folder picker, correct layoutQuery use
* Add local download button
* Allow writing exports to file
* Add notification after export
* Fix sort config, use new export endpoint
* Setup notification hints
* Add information notice
* Fix local limit, cancel button
* Add (basic) docs for export functionality
* Fix json export file format
* Implement xml batch stitching
* Resolve review points
* Add "authenticate" filter hook that allows custom auth check
* Start on test
* Update Jest, restructure API tests, start implementing authenticate test
* Move access token verify to util function
* Ensure jest can show inline warnings on correct lines
* Update is-directus-jwt to use jsonwebtoken decode + add tests
* Remove unused package
* Tweak and finish + test authenticate
* Tweak test
* Add authenticate filter to docs
* Don't scan tests for codeql
* No seriously, ignore tests
* Start by stripping out the previous Union attempt
* Then set limit to -1, causing massive memory issues on big data sets
* Now fix the memory problem by batching the responses
* Use env var for max relational batch size
* Rename env var, add to docs
* tsconfig loosened to match api
* integration test folder and script
* .env mock isn't needed
* mock-env, locations of tests
* I was wrong.
* Updated progress
* schemas => getSchema(), exported getColumnPreprocessor()
* change imports to allow build
* add MockClient as DB Client (should mock getDBClient())
* move authservice into. not used elsewhere
* test passing
* remove unneeded test for this PR
* removed unneded fields from rawItem
* formatting
* createOne test passing
* typo
* removed int specific jest.config
* use systemSchema over getSchema()
* this.knex over getDatabase()
* mock getDatabaseClient
* removed unused mock-env
* formatting
* removed unused collections from schema
* response => responseOnce
* more direct
* unused var
* more tests please!
* test for: createOne no permissions
* removed broken test for now
* clean up
* readOne tests what does into db and returned
* added bindings check
* added into db sql check
* moved tests outside src
* changed ts config
* cli test location changed
* removed looking for tests in src
* readding it for e2e tests? Seems fishy
* Integration tests for ItemsService user tables (#11208)
* renamed ItemsService test to match src file name
* add user table schema
* system/user tables use .each, formatting needed
* format system and user better in title
* tables/table=> schemas/schema
* filter _eq test passing
* comment for later and formatting
* everything in it's right place
* future proofing as more fields are added
* removed duplicate test
* formatting
* readMany() filter: _or
Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
* added knex check before getDatabase()
* Move util test to tests folder
Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Fix date resolution in share info endpoint
* Add note on leaving fields blank
* Tweak example to use proper db client
* Treat mysql 0000-00-00 00:00:00 as null
* Fix migration for mysql 5
* Add missing defaults to system fields
* Separate caching of dynamic user vars from permissions
* Cache filterContext only when permissions are cached
* Reset merge
* Reapply changes
* Reduce nesting
* Add missing assignment
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Refactor parseFilter to only flatten filter entries that need it
* Fixed typescript check
* Use custom get function instead of lodash's.
* Improved get function readability
* Allow null result from shared parseFilter
* Add missing defaultValue in get function
* Change parseFilter argument type from Record<string, any> to Filter | null
Co-authored-by: ian <licitdev@gmail.com>
* [API] m2a filtering fix
MySQL does not support CAST to VARCHAR type.
* Use CHAR(255) instead of CHAR
Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>