directus 9.23.1 → 9.23.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/dist/app.js +14 -10
  2. package/dist/auth/auth.d.ts +3 -3
  3. package/dist/auth/auth.js +2 -0
  4. package/dist/auth/drivers/ldap.d.ts +1 -1
  5. package/dist/auth/drivers/ldap.js +39 -28
  6. package/dist/auth/drivers/local.d.ts +1 -1
  7. package/dist/auth/drivers/local.js +13 -10
  8. package/dist/auth/drivers/oauth2.d.ts +1 -1
  9. package/dist/auth/drivers/oauth2.js +20 -13
  10. package/dist/auth/drivers/openid.d.ts +1 -1
  11. package/dist/auth/drivers/openid.js +21 -14
  12. package/dist/auth/drivers/saml.d.ts +1 -1
  13. package/dist/auth/drivers/saml.js +10 -7
  14. package/dist/auth.d.ts +1 -1
  15. package/dist/auth.js +4 -4
  16. package/dist/cache.d.ts +9 -1
  17. package/dist/cache.js +57 -14
  18. package/dist/cli/commands/bootstrap/index.js +2 -2
  19. package/dist/cli/commands/init/index.js +3 -3
  20. package/dist/cli/commands/schema/apply.js +14 -15
  21. package/dist/cli/commands/schema/snapshot.js +2 -2
  22. package/dist/cli/utils/create-db-connection.d.ts +1 -1
  23. package/dist/cli/utils/create-db-connection.js +2 -1
  24. package/dist/cli/utils/create-env/index.d.ts +2 -2
  25. package/dist/cli/utils/drivers.d.ts +1 -1
  26. package/dist/constants.d.ts +2 -2
  27. package/dist/constants.js +2 -3
  28. package/dist/controllers/activity.js +1 -2
  29. package/dist/controllers/assets.js +14 -9
  30. package/dist/controllers/auth.js +29 -15
  31. package/dist/controllers/dashboards.js +5 -2
  32. package/dist/controllers/fields.js +4 -4
  33. package/dist/controllers/files.js +10 -5
  34. package/dist/controllers/flows.js +5 -2
  35. package/dist/controllers/folders.js +5 -2
  36. package/dist/controllers/graphql.js +2 -4
  37. package/dist/controllers/items.js +5 -2
  38. package/dist/controllers/not-found.d.ts +1 -1
  39. package/dist/controllers/not-found.js +1 -2
  40. package/dist/controllers/notifications.js +5 -2
  41. package/dist/controllers/operations.js +5 -2
  42. package/dist/controllers/panels.js +5 -2
  43. package/dist/controllers/permissions.js +5 -2
  44. package/dist/controllers/presets.js +5 -2
  45. package/dist/controllers/roles.js +5 -2
  46. package/dist/controllers/shares.js +8 -5
  47. package/dist/controllers/users.js +16 -20
  48. package/dist/controllers/utils.js +6 -11
  49. package/dist/controllers/webhooks.js +5 -2
  50. package/dist/database/helpers/fn/dialects/mssql.d.ts +1 -1
  51. package/dist/database/helpers/fn/dialects/mssql.js +10 -11
  52. package/dist/database/helpers/fn/dialects/mysql.d.ts +1 -1
  53. package/dist/database/helpers/fn/dialects/mysql.js +2 -3
  54. package/dist/database/helpers/fn/dialects/oracle.d.ts +1 -1
  55. package/dist/database/helpers/fn/dialects/oracle.js +10 -11
  56. package/dist/database/helpers/fn/dialects/postgres.d.ts +1 -1
  57. package/dist/database/helpers/fn/dialects/postgres.js +10 -11
  58. package/dist/database/helpers/fn/dialects/sqlite.d.ts +1 -1
  59. package/dist/database/helpers/fn/dialects/sqlite.js +10 -11
  60. package/dist/database/helpers/fn/types.d.ts +5 -5
  61. package/dist/database/helpers/fn/types.js +5 -4
  62. package/dist/database/helpers/geometry/dialects/mssql.d.ts +3 -3
  63. package/dist/database/helpers/geometry/dialects/mysql.d.ts +1 -1
  64. package/dist/database/helpers/geometry/dialects/oracle.d.ts +3 -3
  65. package/dist/database/helpers/geometry/dialects/postgres.d.ts +3 -3
  66. package/dist/database/helpers/geometry/dialects/postgres.js +1 -2
  67. package/dist/database/helpers/geometry/dialects/redshift.d.ts +2 -2
  68. package/dist/database/helpers/geometry/dialects/sqlite.d.ts +1 -1
  69. package/dist/database/helpers/geometry/types.d.ts +2 -2
  70. package/dist/database/helpers/geometry/types.js +1 -2
  71. package/dist/database/helpers/index.d.ts +5 -5
  72. package/dist/database/helpers/schema/dialects/cockroachdb.d.ts +1 -1
  73. package/dist/database/helpers/schema/dialects/mssql.d.ts +1 -1
  74. package/dist/database/helpers/schema/dialects/mysql.d.ts +1 -1
  75. package/dist/database/helpers/schema/dialects/mysql.js +1 -2
  76. package/dist/database/helpers/schema/dialects/oracle.d.ts +2 -2
  77. package/dist/database/helpers/schema/dialects/oracle.js +4 -6
  78. package/dist/database/helpers/schema/types.d.ts +4 -4
  79. package/dist/database/helpers/types.d.ts +1 -1
  80. package/dist/database/helpers/types.js +1 -0
  81. package/dist/database/index.d.ts +1 -1
  82. package/dist/database/index.js +8 -8
  83. package/dist/database/migrations/20201028A-remove-collection-foreign-keys.d.ts +1 -1
  84. package/dist/database/migrations/20201029A-remove-system-relations.d.ts +1 -1
  85. package/dist/database/migrations/20201029B-remove-system-collections.d.ts +1 -1
  86. package/dist/database/migrations/20201029C-remove-system-fields.d.ts +1 -1
  87. package/dist/database/migrations/20201105A-add-cascade-system-relations.d.ts +1 -1
  88. package/dist/database/migrations/20201105B-change-webhook-url-type.d.ts +1 -1
  89. package/dist/database/migrations/20210225A-add-relations-sort-field.d.ts +1 -1
  90. package/dist/database/migrations/20210225A-add-relations-sort-field.js +1 -2
  91. package/dist/database/migrations/20210304A-remove-locked-fields.d.ts +1 -1
  92. package/dist/database/migrations/20210312A-webhooks-collections-text.d.ts +1 -1
  93. package/dist/database/migrations/20210331A-add-refresh-interval.d.ts +1 -1
  94. package/dist/database/migrations/20210415A-make-filesize-nullable.d.ts +1 -1
  95. package/dist/database/migrations/20210416A-add-collections-accountability.d.ts +1 -1
  96. package/dist/database/migrations/20210422A-remove-files-interface.d.ts +1 -1
  97. package/dist/database/migrations/20210506A-rename-interfaces.d.ts +1 -1
  98. package/dist/database/migrations/20210510A-restructure-relations.d.ts +1 -1
  99. package/dist/database/migrations/20210518A-add-foreign-key-constraints.d.ts +1 -1
  100. package/dist/database/migrations/20210518A-add-foreign-key-constraints.js +1 -1
  101. package/dist/database/migrations/20210519A-add-system-fk-triggers.d.ts +1 -1
  102. package/dist/database/migrations/20210519A-add-system-fk-triggers.js +2 -2
  103. package/dist/database/migrations/20210521A-add-collections-icon-color.d.ts +1 -1
  104. package/dist/database/migrations/20210525A-add-insights.d.ts +1 -1
  105. package/dist/database/migrations/20210608A-add-deep-clone-config.d.ts +1 -1
  106. package/dist/database/migrations/20210626A-change-filesize-bigint.d.ts +1 -1
  107. package/dist/database/migrations/20210716A-add-conditions-to-fields.d.ts +1 -1
  108. package/dist/database/migrations/20210721A-add-default-folder.d.ts +1 -1
  109. package/dist/database/migrations/20210802A-replace-groups.d.ts +1 -1
  110. package/dist/database/migrations/20210803A-add-required-to-fields.d.ts +1 -1
  111. package/dist/database/migrations/20210805A-update-groups.d.ts +1 -1
  112. package/dist/database/migrations/20210805B-change-image-metadata-structure.d.ts +1 -1
  113. package/dist/database/migrations/20210811A-add-geometry-config.d.ts +1 -1
  114. package/dist/database/migrations/20210831A-remove-limit-column.d.ts +1 -1
  115. package/dist/database/migrations/20210903A-add-auth-provider.d.ts +1 -1
  116. package/dist/database/migrations/20210907A-webhooks-collections-not-null.d.ts +1 -1
  117. package/dist/database/migrations/20210910A-move-module-setup.d.ts +1 -1
  118. package/dist/database/migrations/20210920A-webhooks-url-not-null.d.ts +1 -1
  119. package/dist/database/migrations/20210924A-add-collection-organization.d.ts +1 -1
  120. package/dist/database/migrations/20210927A-replace-fields-group.d.ts +1 -1
  121. package/dist/database/migrations/20210927B-replace-m2m-interface.d.ts +1 -1
  122. package/dist/database/migrations/20210929A-rename-login-action.d.ts +1 -1
  123. package/dist/database/migrations/20211007A-update-presets.d.ts +1 -1
  124. package/dist/database/migrations/20211007A-update-presets.js +7 -9
  125. package/dist/database/migrations/20211009A-add-auth-data.d.ts +1 -1
  126. package/dist/database/migrations/20211016A-add-webhook-headers.d.ts +1 -1
  127. package/dist/database/migrations/20211103A-set-unique-to-user-token.d.ts +1 -1
  128. package/dist/database/migrations/20211103B-update-special-geometry.d.ts +1 -1
  129. package/dist/database/migrations/20211104A-remove-collections-listing.d.ts +1 -1
  130. package/dist/database/migrations/20211118A-add-notifications.d.ts +1 -1
  131. package/dist/database/migrations/20211211A-add-shares.d.ts +1 -1
  132. package/dist/database/migrations/20211230A-add-project-descriptor.d.ts +1 -1
  133. package/dist/database/migrations/20220303A-remove-default-project-color.d.ts +1 -1
  134. package/dist/database/migrations/20220308A-add-bookmark-icon-and-color.d.ts +1 -1
  135. package/dist/database/migrations/20220314A-add-translation-strings.d.ts +1 -1
  136. package/dist/database/migrations/20220322A-rename-field-typecast-flags.d.ts +1 -1
  137. package/dist/database/migrations/20220323A-add-field-validation.d.ts +1 -1
  138. package/dist/database/migrations/20220325A-fix-typecast-flags.d.ts +1 -1
  139. package/dist/database/migrations/20220325B-add-default-language.d.ts +1 -1
  140. package/dist/database/migrations/20220402A-remove-default-value-panel-icon.d.ts +1 -1
  141. package/dist/database/migrations/20220429A-add-flows.d.ts +1 -1
  142. package/dist/database/migrations/20220429B-add-color-to-insights-icon.d.ts +1 -1
  143. package/dist/database/migrations/20220429C-drop-non-null-from-ip-of-activity.d.ts +1 -1
  144. package/dist/database/migrations/20220429D-drop-non-null-from-sender-of-notifications.d.ts +1 -1
  145. package/dist/database/migrations/20220614A-rename-hook-trigger-to-event.d.ts +1 -1
  146. package/dist/database/migrations/20220801A-update-notifications-timestamp-column.d.ts +1 -1
  147. package/dist/database/migrations/20220802A-add-custom-aspect-ratios.d.ts +1 -1
  148. package/dist/database/migrations/20220826A-add-origin-to-accountability.d.ts +1 -1
  149. package/dist/database/migrations/run.d.ts +1 -1
  150. package/dist/database/run-ast.d.ts +3 -3
  151. package/dist/database/run-ast.js +17 -26
  152. package/dist/database/seeds/run.d.ts +1 -1
  153. package/dist/database/seeds/run.js +1 -2
  154. package/dist/database/system-data/app-access-permissions/index.d.ts +1 -1
  155. package/dist/database/system-data/collections/index.d.ts +1 -1
  156. package/dist/database/system-data/fields/collections.yaml +2 -0
  157. package/dist/database/system-data/fields/index.d.ts +1 -1
  158. package/dist/database/system-data/fields/index.js +1 -2
  159. package/dist/database/system-data/fields/settings.yaml +4 -0
  160. package/dist/database/system-data/relations/index.d.ts +1 -1
  161. package/dist/emitter.d.ts +1 -1
  162. package/dist/emitter.js +3 -0
  163. package/dist/env.js +10 -2
  164. package/dist/exceptions/database/dialects/mssql.d.ts +1 -1
  165. package/dist/exceptions/database/dialects/mssql.js +5 -6
  166. package/dist/exceptions/database/dialects/mysql.d.ts +1 -1
  167. package/dist/exceptions/database/dialects/mysql.js +19 -25
  168. package/dist/exceptions/database/dialects/oracle.d.ts +1 -1
  169. package/dist/exceptions/database/dialects/postgres.d.ts +1 -1
  170. package/dist/exceptions/database/dialects/sqlite.d.ts +1 -1
  171. package/dist/exceptions/database/translate.d.ts +1 -1
  172. package/dist/exceptions/database/value-out-of-range.js +1 -1
  173. package/dist/exceptions/range-not-satisfiable.js +2 -3
  174. package/dist/extensions.d.ts +1 -1
  175. package/dist/extensions.js +33 -23
  176. package/dist/flows.js +42 -25
  177. package/dist/logger.d.ts +1 -1
  178. package/dist/logger.js +19 -3
  179. package/dist/messenger.js +8 -6
  180. package/dist/middleware/authenticate.d.ts +1 -1
  181. package/dist/middleware/authenticate.js +12 -5
  182. package/dist/middleware/cache.d.ts +1 -1
  183. package/dist/middleware/cache.js +5 -5
  184. package/dist/middleware/check-ip.d.ts +1 -1
  185. package/dist/middleware/check-ip.js +1 -1
  186. package/dist/middleware/collection-exists.d.ts +1 -1
  187. package/dist/middleware/collection-exists.js +2 -2
  188. package/dist/middleware/cors.d.ts +1 -1
  189. package/dist/middleware/error-handler.d.ts +1 -1
  190. package/dist/middleware/error-handler.js +9 -10
  191. package/dist/middleware/extract-token.d.ts +1 -1
  192. package/dist/middleware/get-permissions.d.ts +1 -1
  193. package/dist/middleware/graphql.d.ts +1 -1
  194. package/dist/middleware/graphql.js +3 -3
  195. package/dist/middleware/rate-limiter-global.d.ts +5 -0
  196. package/dist/middleware/rate-limiter-global.js +48 -0
  197. package/dist/middleware/{rate-limiter.d.ts → rate-limiter-ip.d.ts} +2 -2
  198. package/dist/middleware/{rate-limiter.js → rate-limiter-ip.js} +3 -3
  199. package/dist/middleware/respond.d.ts +1 -1
  200. package/dist/middleware/respond.js +6 -7
  201. package/dist/middleware/sanitize-query.d.ts +1 -1
  202. package/dist/middleware/schema.d.ts +1 -1
  203. package/dist/middleware/use-collection.d.ts +1 -1
  204. package/dist/operations/condition/index.d.ts +1 -1
  205. package/dist/operations/exec/index.js +14 -3
  206. package/dist/operations/item-create/index.js +1 -2
  207. package/dist/operations/item-delete/index.d.ts +1 -1
  208. package/dist/operations/item-read/index.d.ts +1 -1
  209. package/dist/operations/item-update/index.d.ts +1 -1
  210. package/dist/operations/item-update/index.js +1 -2
  211. package/dist/operations/notification/index.js +1 -2
  212. package/dist/operations/request/index.js +19 -19
  213. package/dist/operations/trigger/index.js +2 -3
  214. package/dist/rate-limiter.d.ts +1 -1
  215. package/dist/rate-limiter.js +8 -8
  216. package/dist/server.js +8 -9
  217. package/dist/services/activity.d.ts +1 -1
  218. package/dist/services/activity.js +7 -6
  219. package/dist/services/assets.d.ts +3 -3
  220. package/dist/services/assets.js +33 -35
  221. package/dist/services/authentication.d.ts +2 -2
  222. package/dist/services/authentication.js +13 -10
  223. package/dist/services/authorization.d.ts +3 -3
  224. package/dist/services/authorization.js +27 -31
  225. package/dist/services/collections.d.ts +5 -5
  226. package/dist/services/collections.js +52 -48
  227. package/dist/services/dashboards.d.ts +1 -1
  228. package/dist/services/fields.d.ts +5 -5
  229. package/dist/services/fields.js +48 -48
  230. package/dist/services/files.d.ts +1 -2
  231. package/dist/services/files.js +27 -21
  232. package/dist/services/flows.d.ts +2 -2
  233. package/dist/services/folders.d.ts +1 -1
  234. package/dist/services/graphql/index.d.ts +4 -4
  235. package/dist/services/graphql/index.js +172 -167
  236. package/dist/services/graphql/utils/add-path-to-validation-error.js +1 -2
  237. package/dist/services/graphql/utils/process-error.d.ts +2 -2
  238. package/dist/services/graphql/utils/process-error.js +11 -4
  239. package/dist/services/import-export.d.ts +3 -3
  240. package/dist/services/import-export.js +25 -22
  241. package/dist/services/items.d.ts +3 -3
  242. package/dist/services/items.js +42 -36
  243. package/dist/services/mail/index.d.ts +4 -4
  244. package/dist/services/mail/index.js +9 -5
  245. package/dist/services/meta.d.ts +3 -3
  246. package/dist/services/meta.js +10 -9
  247. package/dist/services/notifications.d.ts +3 -3
  248. package/dist/services/notifications.js +7 -6
  249. package/dist/services/operations.d.ts +2 -2
  250. package/dist/services/panels.d.ts +1 -1
  251. package/dist/services/payload.d.ts +3 -3
  252. package/dist/services/payload.js +124 -122
  253. package/dist/services/permissions.d.ts +3 -3
  254. package/dist/services/permissions.js +11 -11
  255. package/dist/services/presets.d.ts +1 -1
  256. package/dist/services/relations.d.ts +6 -6
  257. package/dist/services/relations.js +45 -43
  258. package/dist/services/revisions.d.ts +1 -1
  259. package/dist/services/roles.d.ts +2 -2
  260. package/dist/services/roles.js +2 -2
  261. package/dist/services/schema.d.ts +3 -3
  262. package/dist/services/schema.js +9 -11
  263. package/dist/services/server.d.ts +3 -3
  264. package/dist/services/server.js +69 -13
  265. package/dist/services/settings.d.ts +1 -1
  266. package/dist/services/shares.d.ts +1 -1
  267. package/dist/services/shares.js +5 -6
  268. package/dist/services/specifications.d.ts +4 -4
  269. package/dist/services/specifications.js +132 -116
  270. package/dist/services/tfa.d.ts +2 -2
  271. package/dist/services/tfa.js +7 -5
  272. package/dist/services/users.d.ts +3 -3
  273. package/dist/services/users.js +17 -17
  274. package/dist/services/utils.d.ts +3 -3
  275. package/dist/services/utils.js +10 -8
  276. package/dist/services/webhooks.d.ts +2 -2
  277. package/dist/services/webhooks.js +2 -1
  278. package/dist/types/assets.d.ts +1 -1
  279. package/dist/types/ast.d.ts +1 -1
  280. package/dist/types/auth.d.ts +2 -2
  281. package/dist/types/collection.d.ts +2 -2
  282. package/dist/types/events.d.ts +2 -2
  283. package/dist/types/graphql.d.ts +2 -2
  284. package/dist/types/items.d.ts +3 -3
  285. package/dist/types/services.d.ts +5 -5
  286. package/dist/types/snapshot.d.ts +4 -4
  287. package/dist/utils/apply-diff.d.ts +3 -3
  288. package/dist/utils/apply-diff.js +25 -28
  289. package/dist/utils/apply-query.d.ts +3 -3
  290. package/dist/utils/apply-query.js +8 -11
  291. package/dist/utils/apply-snapshot.d.ts +3 -3
  292. package/dist/utils/apply-snapshot.js +5 -6
  293. package/dist/utils/construct-flow-tree.d.ts +1 -1
  294. package/dist/utils/construct-flow-tree.js +2 -2
  295. package/dist/utils/filter-items.d.ts +1 -1
  296. package/dist/utils/get-accountability-for-role.d.ts +2 -2
  297. package/dist/utils/get-accountability-for-role.js +1 -1
  298. package/dist/utils/get-ast-from-query.d.ts +3 -3
  299. package/dist/utils/get-ast-from-query.js +22 -28
  300. package/dist/utils/get-cache-headers.d.ts +1 -1
  301. package/dist/utils/get-cache-headers.js +3 -4
  302. package/dist/utils/get-cache-key.d.ts +1 -1
  303. package/dist/utils/get-cache-key.js +2 -3
  304. package/dist/utils/get-collection-from-alias.d.ts +1 -1
  305. package/dist/utils/get-column-path.d.ts +2 -2
  306. package/dist/utils/get-column-path.js +3 -4
  307. package/dist/utils/get-column.d.ts +4 -4
  308. package/dist/utils/get-column.js +4 -5
  309. package/dist/utils/get-default-value.d.ts +2 -2
  310. package/dist/utils/get-default-value.js +1 -2
  311. package/dist/utils/get-graphql-query-and-variables.d.ts +1 -1
  312. package/dist/utils/get-graphql-query-and-variables.js +1 -2
  313. package/dist/utils/get-graphql-type.d.ts +2 -2
  314. package/dist/utils/get-graphql-type.js +1 -1
  315. package/dist/utils/get-ip-from-req.d.ts +1 -1
  316. package/dist/utils/get-local-type.d.ts +1 -1
  317. package/dist/utils/get-local-type.js +3 -3
  318. package/dist/utils/get-milliseconds.js +1 -2
  319. package/dist/utils/get-permissions.d.ts +1 -1
  320. package/dist/utils/get-permissions.js +1 -1
  321. package/dist/utils/get-relation-info.d.ts +1 -1
  322. package/dist/utils/get-relation-info.js +3 -5
  323. package/dist/utils/get-relation-type.d.ts +1 -1
  324. package/dist/utils/get-relation-type.js +3 -4
  325. package/dist/utils/get-schema.d.ts +2 -2
  326. package/dist/utils/get-schema.js +19 -21
  327. package/dist/utils/get-snapshot-diff.js +2 -3
  328. package/dist/utils/get-snapshot.d.ts +3 -3
  329. package/dist/utils/get-snapshot.js +6 -8
  330. package/dist/utils/is-directus-jwt.js +1 -1
  331. package/dist/utils/job-queue.js +2 -0
  332. package/dist/utils/jwt.d.ts +1 -1
  333. package/dist/utils/merge-permissions-for-share.d.ts +1 -1
  334. package/dist/utils/merge-permissions-for-share.js +3 -4
  335. package/dist/utils/merge-permissions.d.ts +3 -3
  336. package/dist/utils/redact-header-cookies.d.ts +1 -0
  337. package/dist/utils/redact-header-cookies.js +11 -0
  338. package/dist/utils/redact-header-cookies.test.d.ts +1 -0
  339. package/dist/utils/reduce-schema.d.ts +1 -1
  340. package/dist/utils/reduce-schema.js +12 -12
  341. package/dist/utils/sanitize-query.d.ts +1 -1
  342. package/dist/utils/sanitize-query.js +1 -1
  343. package/dist/utils/sanitize-schema.d.ts +2 -2
  344. package/dist/utils/should-skip-cache.d.ts +7 -0
  345. package/dist/utils/should-skip-cache.js +21 -0
  346. package/dist/utils/should-skip-cache.test.d.ts +1 -0
  347. package/dist/utils/transformations.d.ts +1 -1
  348. package/dist/utils/transformations.js +2 -4
  349. package/dist/utils/url.js +7 -2
  350. package/dist/utils/user-name.d.ts +1 -1
  351. package/dist/utils/validate-diff.js +7 -8
  352. package/dist/utils/validate-keys.d.ts +2 -2
  353. package/dist/utils/validate-keys.js +1 -1
  354. package/dist/utils/validate-query.d.ts +1 -1
  355. package/dist/utils/validate-query.js +2 -2
  356. package/dist/webhooks.js +1 -1
  357. package/package.json +36 -37
  358. package/dist/utils/with-timeout.d.ts +0 -1
  359. package/dist/utils/with-timeout.js +0 -16
@@ -1,5 +1,5 @@
1
+ import type { Knex } from 'knex';
1
2
  import { FnHelper, FnHelperOptions } from '../types';
2
- import { Knex } from 'knex';
3
3
  export declare class FnHelperOracle extends FnHelper {
4
4
  year(table: string, column: string, options: FnHelperOptions): Knex.Raw;
5
5
  month(table: string, column: string, options: FnHelperOptions): Knex.Raw;
@@ -10,33 +10,32 @@ const parseLocaltime = (columnType) => {
10
10
  };
11
11
  class FnHelperOracle extends types_1.FnHelper {
12
12
  year(table, column, options) {
13
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'IYYY')`, [table, column]);
13
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'IYYY')`, [table, column]);
14
14
  }
15
15
  month(table, column, options) {
16
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'MM')`, [table, column]);
16
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'MM')`, [table, column]);
17
17
  }
18
18
  week(table, column, options) {
19
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'IW')`, [table, column]);
19
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'IW')`, [table, column]);
20
20
  }
21
21
  day(table, column, options) {
22
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'DD')`, [table, column]);
22
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'DD')`, [table, column]);
23
23
  }
24
24
  weekday(table, column, options) {
25
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'D')`, [table, column]);
25
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'D')`, [table, column]);
26
26
  }
27
27
  hour(table, column, options) {
28
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'HH24')`, [table, column]);
28
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'HH24')`, [table, column]);
29
29
  }
30
30
  minute(table, column, options) {
31
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'MI')`, [table, column]);
31
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'MI')`, [table, column]);
32
32
  }
33
33
  second(table, column, options) {
34
- return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}, 'SS')`, [table, column]);
34
+ return this.knex.raw(`TO_CHAR(??.??${parseLocaltime(options?.type)}, 'SS')`, [table, column]);
35
35
  }
36
36
  count(table, column, options) {
37
- var _a, _b, _c, _d, _e;
38
- const collectionName = (options === null || options === void 0 ? void 0 : options.originalCollectionName) || table;
39
- const type = (_e = (_d = (_c = (_b = (_a = this.schema.collections) === null || _a === void 0 ? void 0 : _a[collectionName]) === null || _b === void 0 ? void 0 : _b.fields) === null || _c === void 0 ? void 0 : _c[column]) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : 'unknown';
37
+ const collectionName = options?.originalCollectionName || table;
38
+ const type = this.schema.collections?.[collectionName]?.fields?.[column]?.type ?? 'unknown';
40
39
  if (type === 'json') {
41
40
  return this.knex.raw("json_value(??.??, '$.size()')", [table, column]);
42
41
  }
@@ -1,5 +1,5 @@
1
+ import type { Knex } from 'knex';
1
2
  import { FnHelper, FnHelperOptions } from '../types';
2
- import { Knex } from 'knex';
3
3
  export declare class FnHelperPostgres extends FnHelper {
4
4
  year(table: string, column: string, options: FnHelperOptions): Knex.Raw;
5
5
  month(table: string, column: string, options: FnHelperOptions): Knex.Raw;
@@ -10,33 +10,32 @@ const parseLocaltime = (columnType) => {
10
10
  };
11
11
  class FnHelperPostgres extends types_1.FnHelper {
12
12
  year(table, column, options) {
13
- return this.knex.raw(`EXTRACT(YEAR FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
13
+ return this.knex.raw(`EXTRACT(YEAR FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
14
14
  }
15
15
  month(table, column, options) {
16
- return this.knex.raw(`EXTRACT(MONTH FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
16
+ return this.knex.raw(`EXTRACT(MONTH FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
17
17
  }
18
18
  week(table, column, options) {
19
- return this.knex.raw(`EXTRACT(WEEK FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
19
+ return this.knex.raw(`EXTRACT(WEEK FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
20
20
  }
21
21
  day(table, column, options) {
22
- return this.knex.raw(`EXTRACT(DAY FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
22
+ return this.knex.raw(`EXTRACT(DAY FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
23
23
  }
24
24
  weekday(table, column, options) {
25
- return this.knex.raw(`EXTRACT(DOW FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
25
+ return this.knex.raw(`EXTRACT(DOW FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
26
26
  }
27
27
  hour(table, column, options) {
28
- return this.knex.raw(`EXTRACT(HOUR FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
28
+ return this.knex.raw(`EXTRACT(HOUR FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
29
29
  }
30
30
  minute(table, column, options) {
31
- return this.knex.raw(`EXTRACT(MINUTE FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
31
+ return this.knex.raw(`EXTRACT(MINUTE FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
32
32
  }
33
33
  second(table, column, options) {
34
- return this.knex.raw(`EXTRACT(SECOND FROM ??.??${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)})`, [table, column]);
34
+ return this.knex.raw(`EXTRACT(SECOND FROM ??.??${parseLocaltime(options?.type)})`, [table, column]);
35
35
  }
36
36
  count(table, column, options) {
37
- var _a, _b, _c, _d, _e;
38
- const collectionName = (options === null || options === void 0 ? void 0 : options.originalCollectionName) || table;
39
- const type = (_e = (_d = (_c = (_b = (_a = this.schema.collections) === null || _a === void 0 ? void 0 : _a[collectionName]) === null || _b === void 0 ? void 0 : _b.fields) === null || _c === void 0 ? void 0 : _c[column]) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : 'unknown';
37
+ const collectionName = options?.originalCollectionName || table;
38
+ const type = this.schema.collections?.[collectionName]?.fields?.[column]?.type ?? 'unknown';
40
39
  if (type === 'json') {
41
40
  const { dbType } = this.schema.collections[table].fields[column];
42
41
  return this.knex.raw(dbType === 'jsonb' ? 'jsonb_array_length(??.??)' : 'json_array_length(??.??)', [
@@ -1,5 +1,5 @@
1
+ import type { Knex } from 'knex';
1
2
  import { FnHelper, FnHelperOptions } from '../types';
2
- import { Knex } from 'knex';
3
3
  export declare class FnHelperSQLite extends FnHelper {
4
4
  year(table: string, column: string, options?: FnHelperOptions): Knex.Raw;
5
5
  month(table: string, column: string, options?: FnHelperOptions): Knex.Raw;
@@ -10,57 +10,56 @@ const parseLocaltime = (columnType) => {
10
10
  };
11
11
  class FnHelperSQLite extends types_1.FnHelper {
12
12
  year(table, column, options) {
13
- return this.knex.raw(`CAST(strftime('%Y', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
13
+ return this.knex.raw(`CAST(strftime('%Y', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
14
14
  table,
15
15
  column,
16
16
  ]);
17
17
  }
18
18
  month(table, column, options) {
19
- return this.knex.raw(`CAST(strftime('%m', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
19
+ return this.knex.raw(`CAST(strftime('%m', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
20
20
  table,
21
21
  column,
22
22
  ]);
23
23
  }
24
24
  week(table, column, options) {
25
- return this.knex.raw(`CAST(strftime('%W', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
25
+ return this.knex.raw(`CAST(strftime('%W', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
26
26
  table,
27
27
  column,
28
28
  ]);
29
29
  }
30
30
  day(table, column, options) {
31
- return this.knex.raw(`CAST(strftime('%d', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
31
+ return this.knex.raw(`CAST(strftime('%d', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
32
32
  table,
33
33
  column,
34
34
  ]);
35
35
  }
36
36
  weekday(table, column, options) {
37
- return this.knex.raw(`CAST(strftime('%w', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
37
+ return this.knex.raw(`CAST(strftime('%w', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
38
38
  table,
39
39
  column,
40
40
  ]);
41
41
  }
42
42
  hour(table, column, options) {
43
- return this.knex.raw(`CAST(strftime('%H', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
43
+ return this.knex.raw(`CAST(strftime('%H', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
44
44
  table,
45
45
  column,
46
46
  ]);
47
47
  }
48
48
  minute(table, column, options) {
49
- return this.knex.raw(`CAST(strftime('%M', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
49
+ return this.knex.raw(`CAST(strftime('%M', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
50
50
  table,
51
51
  column,
52
52
  ]);
53
53
  }
54
54
  second(table, column, options) {
55
- return this.knex.raw(`CAST(strftime('%S', ??.?? / 1000, 'unixepoch'${parseLocaltime(options === null || options === void 0 ? void 0 : options.type)}) AS INTEGER)`, [
55
+ return this.knex.raw(`CAST(strftime('%S', ??.?? / 1000, 'unixepoch'${parseLocaltime(options?.type)}) AS INTEGER)`, [
56
56
  table,
57
57
  column,
58
58
  ]);
59
59
  }
60
60
  count(table, column, options) {
61
- var _a, _b, _c, _d, _e;
62
- const collectionName = (options === null || options === void 0 ? void 0 : options.originalCollectionName) || table;
63
- const type = (_e = (_d = (_c = (_b = (_a = this.schema.collections) === null || _a === void 0 ? void 0 : _a[collectionName]) === null || _b === void 0 ? void 0 : _b.fields) === null || _c === void 0 ? void 0 : _c[column]) === null || _d === void 0 ? void 0 : _d.type) !== null && _e !== void 0 ? _e : 'unknown';
61
+ const collectionName = options?.originalCollectionName || table;
62
+ const type = this.schema.collections?.[collectionName]?.fields?.[column]?.type ?? 'unknown';
64
63
  if (type === 'json') {
65
64
  return this.knex.raw(`json_array_length(??.??, '$')`, [table, column]);
66
65
  }
@@ -1,10 +1,10 @@
1
- import { Query, SchemaOverview } from '@directus/shared/types';
2
- import { Knex } from 'knex';
1
+ import type { Query, SchemaOverview } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
3
  import { DatabaseHelper } from '../types';
4
4
  export type FnHelperOptions = {
5
- type?: string;
6
- query?: Query;
7
- originalCollectionName?: string;
5
+ type: string | undefined;
6
+ query: Query | undefined;
7
+ originalCollectionName: string | undefined;
8
8
  };
9
9
  export declare abstract class FnHelper extends DatabaseHelper {
10
10
  protected knex: Knex;
@@ -4,6 +4,8 @@ exports.FnHelper = void 0;
4
4
  const apply_query_1 = require("../../../utils/apply-query");
5
5
  const types_1 = require("../types");
6
6
  class FnHelper extends types_1.DatabaseHelper {
7
+ knex;
8
+ schema;
7
9
  constructor(knex, schema) {
8
10
  super(knex);
9
11
  this.knex = knex;
@@ -11,9 +13,8 @@ class FnHelper extends types_1.DatabaseHelper {
11
13
  this.schema = schema;
12
14
  }
13
15
  _relationalCount(table, column, options) {
14
- var _a;
15
- const collectionName = (options === null || options === void 0 ? void 0 : options.originalCollectionName) || table;
16
- const relation = this.schema.relations.find((relation) => { var _a; return relation.related_collection === collectionName && ((_a = relation === null || relation === void 0 ? void 0 : relation.meta) === null || _a === void 0 ? void 0 : _a.one_field) === column; });
16
+ const collectionName = options?.originalCollectionName || table;
17
+ const relation = this.schema.relations.find((relation) => relation.related_collection === collectionName && relation?.meta?.one_field === column);
17
18
  const currentPrimary = this.schema.collections[collectionName].primary;
18
19
  if (!relation) {
19
20
  throw new Error(`Field ${collectionName}.${column} isn't a nested relational collection`);
@@ -22,7 +23,7 @@ class FnHelper extends types_1.DatabaseHelper {
22
23
  .count('*')
23
24
  .from(relation.collection)
24
25
  .where(relation.field, '=', this.knex.raw(`??.??`, [table, currentPrimary]));
25
- if ((_a = options === null || options === void 0 ? void 0 : options.query) === null || _a === void 0 ? void 0 : _a.filter) {
26
+ if (options?.query?.filter) {
26
27
  countQuery = (0, apply_query_1.applyFilter)(this.knex, this.schema, countQuery, options.query.filter, relation.collection, {}).query;
27
28
  }
28
29
  return this.knex.raw('(' + countQuery.toQuery() + ')');
@@ -1,7 +1,7 @@
1
+ import type { Field, RawField } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
+ import type { GeoJSONGeometry } from 'wellknown';
1
4
  import { GeometryHelper } from '../types';
2
- import { Field, RawField } from '@directus/shared/types';
3
- import { GeoJSONGeometry } from 'wellknown';
4
- import { Knex } from 'knex';
5
5
  export declare class GeometryHelperMSSQL extends GeometryHelper {
6
6
  isTrue(expression: Knex.Raw): Knex.Raw<any>;
7
7
  isFalse(expression: Knex.Raw): Knex.Raw<any>;
@@ -1,5 +1,5 @@
1
+ import type { Knex } from 'knex';
1
2
  import { GeometryHelper } from '../types';
2
- import { Knex } from 'knex';
3
3
  export declare class GeometryHelperMySQL extends GeometryHelper {
4
4
  collect(table: string, column: string): Knex.Raw;
5
5
  fromText(text: string): Knex.Raw;
@@ -1,7 +1,7 @@
1
+ import type { Field, RawField } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
+ import type { GeoJSONGeometry } from 'wellknown';
1
4
  import { GeometryHelper } from '../types';
2
- import { Field, RawField } from '@directus/shared/types';
3
- import { GeoJSONGeometry } from 'wellknown';
4
- import { Knex } from 'knex';
5
5
  export declare class GeometryHelperOracle extends GeometryHelper {
6
6
  isTrue(expression: Knex.Raw): Knex.Raw<any>;
7
7
  isFalse(expression: Knex.Raw): Knex.Raw<any>;
@@ -1,7 +1,7 @@
1
+ import type { Field, RawField } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
+ import type { GeoJSONGeometry } from 'wellknown';
1
4
  import { GeometryHelper } from '../types';
2
- import { Field, RawField } from '@directus/shared/types';
3
- import { GeoJSONGeometry } from 'wellknown';
4
- import { Knex } from 'knex';
5
5
  export declare class GeometryHelperPostgres extends GeometryHelper {
6
6
  supported(): Promise<boolean>;
7
7
  createColumn(table: Knex.CreateTableBuilder, field: RawField | Field): Knex.ColumnBuilder;
@@ -8,8 +8,7 @@ class GeometryHelperPostgres extends types_1.GeometryHelper {
8
8
  return res.length > 0;
9
9
  }
10
10
  createColumn(table, field) {
11
- var _a;
12
- const type = (_a = field.type.split('.')[1]) !== null && _a !== void 0 ? _a : 'geometry';
11
+ const type = field.type.split('.')[1] ?? 'geometry';
13
12
  return table.specificType(field.field, `geometry(${type}, 4326)`);
14
13
  }
15
14
  _intersects_bbox(key, geojson) {
@@ -1,6 +1,6 @@
1
+ import type { Field, RawField } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
1
3
  import { GeometryHelper } from '../types';
2
- import { Field, RawField } from '@directus/shared/types';
3
- import { Knex } from 'knex';
4
4
  export declare class GeometryHelperRedshift extends GeometryHelper {
5
5
  createColumn(table: Knex.CreateTableBuilder, field: RawField | Field): Knex.ColumnBuilder;
6
6
  asGeoJSON(table: string, column: string): Knex.Raw;
@@ -1,5 +1,5 @@
1
+ import type { Knex } from 'knex';
1
2
  import { GeometryHelper } from '../types';
2
- import { Knex } from 'knex';
3
3
  export declare class GeometryHelperSQLite extends GeometryHelper {
4
4
  supported(): Promise<boolean>;
5
5
  asGeoJSON(table: string, column: string): Knex.Raw;
@@ -1,7 +1,7 @@
1
+ import type { Field, RawField } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
1
3
  import { GeoJSONGeometry } from 'wellknown';
2
- import { Field, RawField } from '@directus/shared/types';
3
4
  import { DatabaseHelper } from '../types';
4
- import { Knex } from 'knex';
5
5
  export declare abstract class GeometryHelper extends DatabaseHelper {
6
6
  supported(): boolean | Promise<boolean>;
7
7
  isTrue(expression: Knex.Raw): Knex.Raw<any>;
@@ -14,8 +14,7 @@ class GeometryHelper extends types_1.DatabaseHelper {
14
14
  return expression.wrap('NOT ', '');
15
15
  }
16
16
  createColumn(table, field) {
17
- var _a;
18
- const type = (_a = field.type.split('.')[1]) !== null && _a !== void 0 ? _a : 'geometry';
17
+ const type = field.type.split('.')[1] ?? 'geometry';
19
18
  return table.specificType(field.field, type);
20
19
  }
21
20
  asText(table, column) {
@@ -1,13 +1,13 @@
1
- import { SchemaOverview } from '@directus/shared/types';
2
- import { Knex } from 'knex';
1
+ import type { SchemaOverview } from '@directus/shared/types';
2
+ import type { Knex } from 'knex';
3
3
  import * as dateHelpers from './date';
4
4
  import * as fnHelpers from './fn';
5
5
  import * as geometryHelpers from './geometry';
6
6
  import * as schemaHelpers from './schema';
7
7
  export declare function getHelpers(database: Knex): {
8
8
  date: dateHelpers.postgres | dateHelpers.oracle | dateHelpers.mysql | dateHelpers.mssql | dateHelpers.sqlite;
9
- st: geometryHelpers.sqlite | geometryHelpers.postgres | geometryHelpers.mysql | geometryHelpers.oracle | geometryHelpers.mssql | geometryHelpers.redshift;
10
- schema: schemaHelpers.sqlite | schemaHelpers.postgres | schemaHelpers.mysql | schemaHelpers.cockroachdb | schemaHelpers.oracle | schemaHelpers.mssql;
9
+ st: geometryHelpers.sqlite | geometryHelpers.postgres | geometryHelpers.mysql | geometryHelpers.mssql | geometryHelpers.oracle | geometryHelpers.redshift;
10
+ schema: schemaHelpers.sqlite | schemaHelpers.postgres | schemaHelpers.mysql | schemaHelpers.cockroachdb | schemaHelpers.mssql | schemaHelpers.oracle;
11
11
  };
12
- export declare function getFunctions(database: Knex, schema: SchemaOverview): fnHelpers.sqlite | fnHelpers.postgres | fnHelpers.mysql | fnHelpers.oracle | fnHelpers.mssql;
12
+ export declare function getFunctions(database: Knex, schema: SchemaOverview): fnHelpers.sqlite | fnHelpers.postgres | fnHelpers.mysql | fnHelpers.mssql | fnHelpers.oracle;
13
13
  export type Helpers = ReturnType<typeof getHelpers>;
@@ -1,4 +1,4 @@
1
- import { KNEX_TYPES } from '@directus/shared/constants';
1
+ import type { KNEX_TYPES } from '@directus/shared/constants';
2
2
  import { Options, SchemaHelper } from '../types';
3
3
  export declare class SchemaHelperCockroachDb extends SchemaHelper {
4
4
  changeToType(table: string, column: string, type: (typeof KNEX_TYPES)[number], options?: Options): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  import { SchemaHelper } from '../types';
3
3
  export declare class SchemaHelperMSSQL extends SchemaHelper {
4
4
  applyLimit(rootQuery: Knex.QueryBuilder, limit: number): void;
@@ -1,4 +1,4 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  import { SchemaHelper } from '../types';
3
3
  export declare class SchemaHelperMySQL extends SchemaHelper {
4
4
  applyMultiRelationalSort(knex: Knex, dbQuery: Knex.QueryBuilder, table: string, primaryKey: string, orderByString: string, orderByFields: Knex.Raw[]): Knex.QueryBuilder;
@@ -5,8 +5,7 @@ const database_1 = require("../../../../database");
5
5
  const types_1 = require("../types");
6
6
  class SchemaHelperMySQL extends types_1.SchemaHelper {
7
7
  applyMultiRelationalSort(knex, dbQuery, table, primaryKey, orderByString, orderByFields) {
8
- var _a;
9
- if ((_a = (0, database_1.getDatabaseVersion)()) === null || _a === void 0 ? void 0 : _a.startsWith('5.7')) {
8
+ if ((0, database_1.getDatabaseVersion)()?.startsWith('5.7')) {
10
9
  dbQuery.orderByRaw(`?? asc, ${orderByString}`, [`${table}.${primaryKey}`, ...orderByFields]);
11
10
  dbQuery = knex
12
11
  .select(knex.raw(`??, ( @rank := IF ( @cur_id = deep.${primaryKey}, @rank + 1, 1 ) ) AS directus_row_number, ( @cur_id := deep.${primaryKey} ) AS current_id`, 'deep.*'))
@@ -1,5 +1,5 @@
1
- import { KNEX_TYPES } from '@directus/shared/constants';
2
- import { Field, Relation, Type } from '@directus/shared/types';
1
+ import type { KNEX_TYPES } from '@directus/shared/constants';
2
+ import type { Field, Relation, Type } from '@directus/shared/types';
3
3
  import { Options, SchemaHelper } from '../types';
4
4
  export declare class SchemaHelperOracle extends SchemaHelper {
5
5
  changeToType(table: string, column: string, type: (typeof KNEX_TYPES)[number], options?: Options): Promise<void>;
@@ -10,25 +10,23 @@ class SchemaHelperOracle extends types_1.SchemaHelper {
10
10
  return 'CAST(?? AS VARCHAR2(255))';
11
11
  }
12
12
  preRelationChange(relation) {
13
- var _a;
14
13
  if (relation.collection === relation.related_collection) {
15
14
  // Constraints are not allowed on self referencing relationships
16
15
  // Setting NO ACTION throws - ORA-00905: missing keyword
17
- if ((_a = relation.schema) === null || _a === void 0 ? void 0 : _a.on_delete) {
16
+ if (relation.schema?.on_delete) {
18
17
  relation.schema.on_delete = null;
19
18
  }
20
19
  }
21
20
  }
22
21
  processFieldType(field) {
23
- var _a, _b, _c, _d;
24
22
  if (field.type === 'integer') {
25
- if (((_a = field.schema) === null || _a === void 0 ? void 0 : _a.numeric_precision) === 20) {
23
+ if (field.schema?.numeric_precision === 20) {
26
24
  return 'bigInteger';
27
25
  }
28
- else if (((_b = field.schema) === null || _b === void 0 ? void 0 : _b.numeric_precision) === 1) {
26
+ else if (field.schema?.numeric_precision === 1) {
29
27
  return 'boolean';
30
28
  }
31
- else if (((_c = field.schema) === null || _c === void 0 ? void 0 : _c.numeric_precision) || ((_d = field.schema) === null || _d === void 0 ? void 0 : _d.numeric_scale)) {
29
+ else if (field.schema?.numeric_precision || field.schema?.numeric_scale) {
32
30
  return 'decimal';
33
31
  }
34
32
  }
@@ -1,7 +1,7 @@
1
- import { KNEX_TYPES } from '@directus/shared/constants';
2
- import { Field, Relation, Type } from '@directus/shared/types';
3
- import { Knex } from 'knex';
4
- import { DatabaseClient } from '../../../types';
1
+ import type { KNEX_TYPES } from '@directus/shared/constants';
2
+ import type { Field, Relation, Type } from '@directus/shared/types';
3
+ import type { Knex } from 'knex';
4
+ import type { DatabaseClient } from '../../../types';
5
5
  import { DatabaseHelper } from '../types';
6
6
  export type Options = {
7
7
  nullable?: boolean;
@@ -1,4 +1,4 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare abstract class DatabaseHelper {
3
3
  protected knex: Knex;
4
4
  constructor(knex: Knex);
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DatabaseHelper = void 0;
4
4
  class DatabaseHelper {
5
+ knex;
5
6
  constructor(knex) {
6
7
  this.knex = knex;
7
8
  }
@@ -1,6 +1,6 @@
1
1
  import SchemaInspector from '@directus/schema';
2
2
  import { Knex } from 'knex';
3
- import { DatabaseClient } from '../types';
3
+ import type { DatabaseClient } from '../types';
4
4
  export default function getDatabase(): Knex;
5
5
  export declare function getSchemaInspector(): ReturnType<typeof SchemaInspector>;
6
6
  /**
@@ -5,16 +5,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.validateDatabaseExtensions = exports.validateMigrations = exports.isInstalled = exports.getDatabaseClient = exports.validateDatabaseConnection = exports.hasDatabaseConnection = exports.getDatabaseVersion = exports.getSchemaInspector = void 0;
7
7
  const schema_1 = __importDefault(require("@directus/schema"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
9
  const knex_1 = require("knex");
10
+ const lodash_1 = require("lodash");
11
+ const path_1 = __importDefault(require("path"));
9
12
  const perf_hooks_1 = require("perf_hooks");
13
+ const util_1 = require("util");
10
14
  const env_1 = __importDefault(require("../env"));
11
15
  const logger_1 = __importDefault(require("../logger"));
12
16
  const get_config_from_env_1 = require("../utils/get-config-from-env");
13
17
  const validate_env_1 = require("../utils/validate-env");
14
- const fs_extra_1 = __importDefault(require("fs-extra"));
15
- const path_1 = __importDefault(require("path"));
16
- const lodash_1 = require("lodash");
17
- const util_1 = require("util");
18
18
  const helpers_1 = require("./helpers");
19
19
  let database = null;
20
20
  let inspector = null;
@@ -145,7 +145,7 @@ function getDatabaseVersion() {
145
145
  }
146
146
  exports.getDatabaseVersion = getDatabaseVersion;
147
147
  async function hasDatabaseConnection(database) {
148
- database = database !== null && database !== void 0 ? database : getDatabase();
148
+ database = database ?? getDatabase();
149
149
  try {
150
150
  if (getDatabaseClient(database) === 'oracle') {
151
151
  await database.raw('select 1 from DUAL');
@@ -161,7 +161,7 @@ async function hasDatabaseConnection(database) {
161
161
  }
162
162
  exports.hasDatabaseConnection = hasDatabaseConnection;
163
163
  async function validateDatabaseConnection(database) {
164
- database = database !== null && database !== void 0 ? database : getDatabase();
164
+ database = database ?? getDatabase();
165
165
  try {
166
166
  if (getDatabaseClient(database) === 'oracle') {
167
167
  await database.raw('select 1 from DUAL');
@@ -178,7 +178,7 @@ async function validateDatabaseConnection(database) {
178
178
  }
179
179
  exports.validateDatabaseConnection = validateDatabaseConnection;
180
180
  function getDatabaseClient(database) {
181
- database = database !== null && database !== void 0 ? database : getDatabase();
181
+ database = database ?? getDatabase();
182
182
  switch (database.client.constructor.name) {
183
183
  case 'Client_MySQL':
184
184
  return 'mysql';
@@ -250,7 +250,7 @@ async function validateDatabaseExtensions() {
250
250
  }
251
251
  exports.validateDatabaseExtensions = validateDatabaseExtensions;
252
252
  async function validateDatabaseCharset(database) {
253
- database = database !== null && database !== void 0 ? database : getDatabase();
253
+ database = database ?? getDatabase();
254
254
  if (getDatabaseClient(database) === 'mysql') {
255
255
  const { collation } = await database.select(database.raw(`@@collation_database as collation`)).first();
256
256
  const tables = await database('information_schema.tables')
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,4 +1,4 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  /**
3
3
  * NOTE:
4
4
  * Not all databases allow (or support) recursive onUpdate/onDelete triggers. MS SQL / Oracle flat out deny creating them,
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.down = exports.up = void 0;
4
4
  const utils_1 = require("@directus/shared/utils");
5
5
  async function up(knex) {
6
- var _a;
7
6
  await knex.schema.alterTable('directus_relations', (table) => {
8
7
  table.string('sort_field');
9
8
  });
@@ -12,7 +11,7 @@ async function up(knex) {
12
11
  .from('directus_fields')
13
12
  .whereIn('interface', ['one-to-many', 'm2a-builder', 'many-to-many']);
14
13
  for (const field of fieldsWithSort) {
15
- const options = typeof field.options === 'string' ? (0, utils_1.parseJSON)(field.options) : (_a = field.options) !== null && _a !== void 0 ? _a : {};
14
+ const options = typeof field.options === 'string' ? (0, utils_1.parseJSON)(field.options) : field.options ?? {};
16
15
  if ('sortField' in options) {
17
16
  await knex('directus_relations')
18
17
  .update({
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;
@@ -1,3 +1,3 @@
1
- import { Knex } from 'knex';
1
+ import type { Knex } from 'knex';
2
2
  export declare function up(knex: Knex): Promise<void>;
3
3
  export declare function down(knex: Knex): Promise<void>;