@payloadcms/drizzle 3.0.0-canary.e14c80d → 3.0.0-canary.e198dc5

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 (284) hide show
  1. package/dist/count.d.ts.map +1 -1
  2. package/dist/count.js +1 -1
  3. package/dist/count.js.map +1 -1
  4. package/dist/createGlobalVersion.d.ts +1 -1
  5. package/dist/createGlobalVersion.d.ts.map +1 -1
  6. package/dist/createGlobalVersion.js +4 -2
  7. package/dist/createGlobalVersion.js.map +1 -1
  8. package/dist/createTableName.d.ts.map +1 -1
  9. package/dist/createTableName.js +6 -2
  10. package/dist/createTableName.js.map +1 -1
  11. package/dist/createVersion.d.ts +1 -1
  12. package/dist/createVersion.d.ts.map +1 -1
  13. package/dist/createVersion.js +22 -14
  14. package/dist/createVersion.js.map +1 -1
  15. package/dist/deleteOne.d.ts.map +1 -1
  16. package/dist/deleteOne.js +5 -3
  17. package/dist/deleteOne.js.map +1 -1
  18. package/dist/deleteVersions.js +1 -1
  19. package/dist/deleteVersions.js.map +1 -1
  20. package/dist/destroy.d.ts.map +1 -1
  21. package/dist/destroy.js +3 -1
  22. package/dist/destroy.js.map +1 -1
  23. package/dist/exports/postgres.d.ts +14 -0
  24. package/dist/exports/postgres.d.ts.map +1 -0
  25. package/dist/exports/postgres.js +15 -0
  26. package/dist/exports/postgres.js.map +1 -0
  27. package/dist/find/buildFindManyArgs.d.ts +13 -7
  28. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  29. package/dist/find/buildFindManyArgs.js +7 -1
  30. package/dist/find/buildFindManyArgs.js.map +1 -1
  31. package/dist/find/findMany.d.ts +1 -1
  32. package/dist/find/findMany.d.ts.map +1 -1
  33. package/dist/find/findMany.js +6 -3
  34. package/dist/find/findMany.js.map +1 -1
  35. package/dist/find/traverseFields.d.ts +7 -3
  36. package/dist/find/traverseFields.d.ts.map +1 -1
  37. package/dist/find/traverseFields.js +141 -16
  38. package/dist/find/traverseFields.js.map +1 -1
  39. package/dist/find.d.ts.map +1 -1
  40. package/dist/find.js +2 -1
  41. package/dist/find.js.map +1 -1
  42. package/dist/findGlobalVersions.js +1 -1
  43. package/dist/findGlobalVersions.js.map +1 -1
  44. package/dist/findMigrationDir.d.ts.map +1 -1
  45. package/dist/findMigrationDir.js +3 -1
  46. package/dist/findMigrationDir.js.map +1 -1
  47. package/dist/findOne.d.ts +1 -1
  48. package/dist/findOne.d.ts.map +1 -1
  49. package/dist/findOne.js +2 -1
  50. package/dist/findOne.js.map +1 -1
  51. package/dist/findVersions.js +1 -1
  52. package/dist/findVersions.js.map +1 -1
  53. package/dist/index.d.ts +2 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +2 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/migrate.js +1 -0
  58. package/dist/migrate.js.map +1 -1
  59. package/dist/migrateDown.d.ts.map +1 -1
  60. package/dist/migrateDown.js +1 -1
  61. package/dist/migrateDown.js.map +1 -1
  62. package/dist/migrateFresh.d.ts.map +1 -1
  63. package/dist/migrateFresh.js +1 -0
  64. package/dist/migrateFresh.js.map +1 -1
  65. package/dist/migrateRefresh.d.ts.map +1 -1
  66. package/dist/migrateRefresh.js +2 -1
  67. package/dist/migrateRefresh.js.map +1 -1
  68. package/dist/migrateReset.d.ts.map +1 -1
  69. package/dist/migrateReset.js +4 -2
  70. package/dist/migrateReset.js.map +1 -1
  71. package/dist/migrateStatus.js +0 -1
  72. package/dist/migrateStatus.js.map +1 -1
  73. package/dist/postgres/countDistinct.d.ts +3 -0
  74. package/dist/postgres/countDistinct.d.ts.map +1 -0
  75. package/dist/postgres/countDistinct.js +24 -0
  76. package/dist/postgres/countDistinct.js.map +1 -0
  77. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +2 -0
  78. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  79. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +16 -0
  80. package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  81. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +2 -0
  82. package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  83. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +5 -0
  84. package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +1 -0
  85. package/dist/postgres/createJSONQuery/index.d.ts +10 -0
  86. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
  87. package/dist/postgres/createJSONQuery/index.js +54 -0
  88. package/dist/postgres/createJSONQuery/index.js.map +1 -0
  89. package/dist/postgres/createMigration.d.ts +3 -0
  90. package/dist/postgres/createMigration.d.ts.map +1 -0
  91. package/dist/postgres/createMigration.js +92 -0
  92. package/dist/postgres/createMigration.js.map +1 -0
  93. package/dist/postgres/defaultSnapshot.d.ts +3 -0
  94. package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
  95. package/dist/postgres/defaultSnapshot.js +17 -0
  96. package/dist/postgres/defaultSnapshot.js.map +1 -0
  97. package/dist/postgres/deleteWhere.d.ts +3 -0
  98. package/dist/postgres/deleteWhere.d.ts.map +1 -0
  99. package/dist/postgres/deleteWhere.js +6 -0
  100. package/dist/postgres/deleteWhere.js.map +1 -0
  101. package/dist/postgres/dropDatabase.d.ts +3 -0
  102. package/dist/postgres/dropDatabase.d.ts.map +1 -0
  103. package/dist/postgres/dropDatabase.js +9 -0
  104. package/dist/postgres/dropDatabase.js.map +1 -0
  105. package/dist/postgres/execute.d.ts +3 -0
  106. package/dist/postgres/execute.d.ts.map +1 -0
  107. package/dist/postgres/execute.js +11 -0
  108. package/dist/postgres/execute.js.map +1 -0
  109. package/dist/postgres/getMigrationTemplate.d.ts +4 -0
  110. package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
  111. package/dist/postgres/getMigrationTemplate.js +13 -0
  112. package/dist/postgres/getMigrationTemplate.js.map +1 -0
  113. package/dist/postgres/init.d.ts +3 -0
  114. package/dist/postgres/init.d.ts.map +1 -0
  115. package/dist/postgres/init.js +105 -0
  116. package/dist/postgres/init.js.map +1 -0
  117. package/dist/postgres/insert.d.ts +3 -0
  118. package/dist/postgres/insert.d.ts.map +1 -0
  119. package/dist/postgres/insert.js +12 -0
  120. package/dist/postgres/insert.js.map +1 -0
  121. package/dist/postgres/requireDrizzleKit.d.ts +3 -0
  122. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
  123. package/dist/postgres/requireDrizzleKit.js +5 -0
  124. package/dist/postgres/requireDrizzleKit.js.map +1 -0
  125. package/dist/postgres/schema/build.d.ts +41 -0
  126. package/dist/postgres/schema/build.d.ts.map +1 -0
  127. package/dist/postgres/schema/build.js +379 -0
  128. package/dist/postgres/schema/build.js.map +1 -0
  129. package/dist/postgres/schema/createIndex.d.ts +12 -0
  130. package/dist/postgres/schema/createIndex.d.ts.map +1 -0
  131. package/dist/postgres/schema/createIndex.js +20 -0
  132. package/dist/postgres/schema/createIndex.js.map +1 -0
  133. package/dist/postgres/schema/idToUUID.d.ts +3 -0
  134. package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
  135. package/dist/postgres/schema/idToUUID.js +11 -0
  136. package/dist/postgres/schema/idToUUID.js.map +1 -0
  137. package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
  138. package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
  139. package/dist/postgres/schema/parentIDColumnMap.js +9 -0
  140. package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
  141. package/dist/postgres/schema/setColumnID.d.ts +11 -0
  142. package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
  143. package/dist/postgres/schema/setColumnID.js +24 -0
  144. package/dist/postgres/schema/setColumnID.js.map +1 -0
  145. package/dist/postgres/schema/traverseFields.d.ts +41 -0
  146. package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
  147. package/dist/postgres/schema/traverseFields.js +744 -0
  148. package/dist/postgres/schema/traverseFields.js.map +1 -0
  149. package/dist/postgres/schema/withDefault.d.ts +4 -0
  150. package/dist/postgres/schema/withDefault.d.ts.map +1 -0
  151. package/dist/postgres/schema/withDefault.js +12 -0
  152. package/dist/postgres/schema/withDefault.js.map +1 -0
  153. package/dist/postgres/types.d.ts +126 -0
  154. package/dist/postgres/types.d.ts.map +1 -0
  155. package/dist/postgres/types.js +3 -0
  156. package/dist/postgres/types.js.map +1 -0
  157. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  158. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  159. package/dist/queries/buildAndOrConditions.js +2 -4
  160. package/dist/queries/buildAndOrConditions.js.map +1 -1
  161. package/dist/queries/buildOrderBy.d.ts +18 -0
  162. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  163. package/dist/queries/buildOrderBy.js +52 -0
  164. package/dist/queries/buildOrderBy.js.map +1 -0
  165. package/dist/queries/buildQuery.d.ts +5 -4
  166. package/dist/queries/buildQuery.d.ts.map +1 -1
  167. package/dist/queries/buildQuery.js +12 -47
  168. package/dist/queries/buildQuery.js.map +1 -1
  169. package/dist/queries/getTableColumnFromPath.d.ts +8 -3
  170. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  171. package/dist/queries/getTableColumnFromPath.js +73 -23
  172. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  173. package/dist/queries/operatorMap.d.ts.map +1 -1
  174. package/dist/queries/operatorMap.js.map +1 -1
  175. package/dist/queries/parseParams.d.ts +1 -1
  176. package/dist/queries/parseParams.d.ts.map +1 -1
  177. package/dist/queries/parseParams.js +52 -6
  178. package/dist/queries/parseParams.js.map +1 -1
  179. package/dist/queries/sanitizeQueryValue.d.ts +12 -1
  180. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  181. package/dist/queries/sanitizeQueryValue.js +77 -21
  182. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  183. package/dist/queries/selectDistinct.d.ts +3 -4
  184. package/dist/queries/selectDistinct.d.ts.map +1 -1
  185. package/dist/queries/selectDistinct.js.map +1 -1
  186. package/dist/queryDrafts.d.ts.map +1 -1
  187. package/dist/queryDrafts.js +1 -2
  188. package/dist/queryDrafts.js.map +1 -1
  189. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  190. package/dist/transactions/beginTransaction.js +5 -1
  191. package/dist/transactions/beginTransaction.js.map +1 -1
  192. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  193. package/dist/transactions/commitTransaction.js +3 -1
  194. package/dist/transactions/commitTransaction.js.map +1 -1
  195. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  196. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  197. package/dist/transform/read/hasManyNumber.js +12 -2
  198. package/dist/transform/read/hasManyNumber.js.map +1 -1
  199. package/dist/transform/read/hasManyText.d.ts +2 -1
  200. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  201. package/dist/transform/read/hasManyText.js +12 -2
  202. package/dist/transform/read/hasManyText.js.map +1 -1
  203. package/dist/transform/read/index.d.ts +3 -2
  204. package/dist/transform/read/index.d.ts.map +1 -1
  205. package/dist/transform/read/index.js +3 -2
  206. package/dist/transform/read/index.js.map +1 -1
  207. package/dist/transform/read/relationship.d.ts +2 -1
  208. package/dist/transform/read/relationship.d.ts.map +1 -1
  209. package/dist/transform/read/relationship.js +15 -6
  210. package/dist/transform/read/relationship.js.map +1 -1
  211. package/dist/transform/read/traverseFields.d.ts +10 -2
  212. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  213. package/dist/transform/read/traverseFields.js +170 -56
  214. package/dist/transform/read/traverseFields.js.map +1 -1
  215. package/dist/transform/write/array.d.ts +6 -1
  216. package/dist/transform/write/array.d.ts.map +1 -1
  217. package/dist/transform/write/array.js +7 -3
  218. package/dist/transform/write/array.js.map +1 -1
  219. package/dist/transform/write/blocks.d.ts +8 -3
  220. package/dist/transform/write/blocks.d.ts.map +1 -1
  221. package/dist/transform/write/blocks.js +19 -7
  222. package/dist/transform/write/blocks.js.map +1 -1
  223. package/dist/transform/write/index.d.ts.map +1 -1
  224. package/dist/transform/write/index.js +1 -1
  225. package/dist/transform/write/index.js.map +1 -1
  226. package/dist/transform/write/relationships.d.ts.map +1 -1
  227. package/dist/transform/write/relationships.js +6 -2
  228. package/dist/transform/write/relationships.js.map +1 -1
  229. package/dist/transform/write/selects.d.ts.map +1 -1
  230. package/dist/transform/write/selects.js +1 -1
  231. package/dist/transform/write/selects.js.map +1 -1
  232. package/dist/transform/write/traverseFields.d.ts +6 -1
  233. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  234. package/dist/transform/write/traverseFields.js +46 -17
  235. package/dist/transform/write/traverseFields.js.map +1 -1
  236. package/dist/types.d.ts +1 -1
  237. package/dist/types.d.ts.map +1 -1
  238. package/dist/types.js.map +1 -1
  239. package/dist/update.d.ts.map +1 -1
  240. package/dist/update.js +3 -2
  241. package/dist/update.js.map +1 -1
  242. package/dist/updateGlobalVersion.js +2 -2
  243. package/dist/updateGlobalVersion.js.map +1 -1
  244. package/dist/updateVersion.js +2 -2
  245. package/dist/updateVersion.js.map +1 -1
  246. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  247. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  248. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  249. package/dist/upsertRow/index.d.ts +1 -1
  250. package/dist/upsertRow/index.d.ts.map +1 -1
  251. package/dist/upsertRow/index.js +50 -12
  252. package/dist/upsertRow/index.js.map +1 -1
  253. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  254. package/dist/upsertRow/insertArrays.js +5 -2
  255. package/dist/upsertRow/insertArrays.js.map +1 -1
  256. package/dist/upsertRow/types.d.ts +8 -5
  257. package/dist/upsertRow/types.d.ts.map +1 -1
  258. package/dist/upsertRow/types.js.map +1 -1
  259. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  260. package/dist/utilities/createBlocksMap.js +4 -2
  261. package/dist/utilities/createBlocksMap.js.map +1 -1
  262. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  263. package/dist/utilities/createRelationshipMap.js +3 -1
  264. package/dist/utilities/createRelationshipMap.js.map +1 -1
  265. package/dist/utilities/executeSchemaHooks.d.ts +24 -0
  266. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
  267. package/dist/utilities/executeSchemaHooks.js +21 -0
  268. package/dist/utilities/executeSchemaHooks.js.map +1 -0
  269. package/dist/utilities/extendDrizzleTable.d.ts +19 -0
  270. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
  271. package/dist/utilities/extendDrizzleTable.js +38 -0
  272. package/dist/utilities/extendDrizzleTable.js.map +1 -0
  273. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  274. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  275. package/dist/utilities/getCollectionIdType.js +11 -0
  276. package/dist/utilities/getCollectionIdType.js.map +1 -0
  277. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  278. package/dist/utilities/hasLocalesTable.js +12 -4
  279. package/dist/utilities/hasLocalesTable.js.map +1 -1
  280. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  281. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  282. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  283. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  284. package/package.json +14 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/postgres/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAA6B,MAAM,SAAS,CAAA;AAY9D,eAAO,MAAM,IAAI,EAAE,IA0GlB,CAAA"}
@@ -0,0 +1,105 @@
1
+ import { uniqueIndex } from 'drizzle-orm/pg-core';
2
+ import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload';
3
+ import toSnakeCase from 'to-snake-case';
4
+ import { createTableName } from '../createTableName.js';
5
+ import { executeSchemaHooks } from '../utilities/executeSchemaHooks.js';
6
+ import { buildTable } from './schema/build.js';
7
+ export const init = async function init() {
8
+ await executeSchemaHooks({
9
+ type: 'beforeSchemaInit',
10
+ adapter: this
11
+ });
12
+ if (this.payload.config.localization) {
13
+ this.enums.enum__locales = this.pgSchema.enum('_locales', this.payload.config.localization.locales.map(({ code })=>code));
14
+ }
15
+ this.payload.config.collections.forEach((collection)=>{
16
+ createTableName({
17
+ adapter: this,
18
+ config: collection
19
+ });
20
+ if (collection.versions) {
21
+ createTableName({
22
+ adapter: this,
23
+ config: collection,
24
+ versions: true,
25
+ versionsCustomName: true
26
+ });
27
+ }
28
+ });
29
+ this.payload.config.collections.forEach((collection)=>{
30
+ const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
31
+ const baseExtraConfig = {};
32
+ if (collection.upload.filenameCompoundIndex) {
33
+ const indexName = `${tableName}_filename_compound_idx`;
34
+ baseExtraConfig.filename_compound_index = (cols)=>{
35
+ const colsConstraint = collection.upload.filenameCompoundIndex.map((f)=>{
36
+ return cols[f];
37
+ });
38
+ return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1));
39
+ };
40
+ }
41
+ buildTable({
42
+ adapter: this,
43
+ baseExtraConfig,
44
+ disableNotNull: !!collection?.versions?.drafts,
45
+ disableUnique: false,
46
+ fields: collection.fields,
47
+ joins: collection.joins,
48
+ tableName,
49
+ timestamps: collection.timestamps,
50
+ versions: false
51
+ });
52
+ if (collection.versions) {
53
+ const versionsTableName = this.tableNameMap.get(`_${toSnakeCase(collection.slug)}${this.versionsSuffix}`);
54
+ const versionFields = buildVersionCollectionFields(this.payload.config, collection);
55
+ buildTable({
56
+ adapter: this,
57
+ disableNotNull: !!collection.versions?.drafts,
58
+ disableUnique: true,
59
+ fields: versionFields,
60
+ tableName: versionsTableName,
61
+ timestamps: true,
62
+ versions: true
63
+ });
64
+ }
65
+ });
66
+ this.payload.config.globals.forEach((global)=>{
67
+ const tableName = createTableName({
68
+ adapter: this,
69
+ config: global
70
+ });
71
+ buildTable({
72
+ adapter: this,
73
+ disableNotNull: !!global?.versions?.drafts,
74
+ disableUnique: false,
75
+ fields: global.fields,
76
+ tableName,
77
+ timestamps: false,
78
+ versions: false
79
+ });
80
+ if (global.versions) {
81
+ const versionsTableName = createTableName({
82
+ adapter: this,
83
+ config: global,
84
+ versions: true,
85
+ versionsCustomName: true
86
+ });
87
+ const versionFields = buildVersionGlobalFields(this.payload.config, global);
88
+ buildTable({
89
+ adapter: this,
90
+ disableNotNull: !!global.versions?.drafts,
91
+ disableUnique: true,
92
+ fields: versionFields,
93
+ tableName: versionsTableName,
94
+ timestamps: true,
95
+ versions: true
96
+ });
97
+ }
98
+ });
99
+ await executeSchemaHooks({
100
+ type: 'afterSchemaInit',
101
+ adapter: this
102
+ });
103
+ };
104
+
105
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/init.ts"],"sourcesContent":["import type { Init, SanitizedCollectionConfig } from 'payload'\n\nimport { uniqueIndex } from 'drizzle-orm/pg-core'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BaseExtraConfig, BasePostgresAdapter } from './types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { executeSchemaHooks } from '../utilities/executeSchemaHooks.js'\nimport { buildTable } from './schema/build.js'\n\nexport const init: Init = async function init(this: BasePostgresAdapter) {\n await executeSchemaHooks({ type: 'beforeSchemaInit', adapter: this })\n\n if (this.payload.config.localization) {\n this.enums.enum__locales = this.pgSchema.enum(\n '_locales',\n this.payload.config.localization.locales.map(({ code }) => code) as [string, ...string[]],\n )\n }\n\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n createTableName({\n adapter: this,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter: this,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n this.payload.config.collections.forEach((collection: SanitizedCollectionConfig) => {\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n\n const baseExtraConfig: BaseExtraConfig = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseExtraConfig.filename_compound_index = (cols) => {\n const colsConstraint = collection.upload.filenameCompoundIndex.map((f) => {\n return cols[f]\n })\n return uniqueIndex(indexName).on(colsConstraint[0], ...colsConstraint.slice(1))\n }\n }\n\n buildTable({\n adapter: this,\n baseExtraConfig,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.fields,\n joins: collection.joins,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = this.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${this.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(this.payload.config, collection)\n\n buildTable({\n adapter: this,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n this.payload.config.globals.forEach((global) => {\n const tableName = createTableName({ adapter: this, config: global })\n\n buildTable({\n adapter: this,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.fields,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter: this,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const versionFields = buildVersionGlobalFields(this.payload.config, global)\n\n buildTable({\n adapter: this,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n await executeSchemaHooks({ type: 'afterSchemaInit', adapter: this })\n}\n"],"names":["uniqueIndex","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","executeSchemaHooks","buildTable","init","type","adapter","payload","config","localization","enums","enum__locales","pgSchema","enum","locales","map","code","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseExtraConfig","upload","filenameCompoundIndex","indexName","filename_compound_index","cols","colsConstraint","f","on","slice","disableNotNull","drafts","disableUnique","fields","joins","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Insert } from './types.js';
2
+ export declare const insert: Insert;
3
+ //# sourceMappingURL=insert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../src/postgres/insert.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,eAAO,MAAM,MAAM,EAAE,MAoBpB,CAAA"}
@@ -0,0 +1,12 @@
1
+ export const insert = async function insert({ db, onConflictDoUpdate, tableName, values }) {
2
+ const table = this.tables[tableName];
3
+ let result;
4
+ if (onConflictDoUpdate) {
5
+ result = await db.insert(table).values(values).onConflictDoUpdate(onConflictDoUpdate).returning();
6
+ } else {
7
+ result = await db.insert(table).values(values).returning();
8
+ }
9
+ return result;
10
+ };
11
+
12
+ //# sourceMappingURL=insert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/insert.ts"],"sourcesContent":["import type { TransactionPg } from '../types.js'\nimport type { Insert } from './types.js'\n\nexport const insert: Insert = async function insert({\n db,\n onConflictDoUpdate,\n tableName,\n values,\n}): Promise<Record<string, unknown>[]> {\n const table = this.tables[tableName]\n let result\n\n if (onConflictDoUpdate) {\n result = await (db as TransactionPg)\n .insert(table)\n .values(values)\n .onConflictDoUpdate(onConflictDoUpdate)\n .returning()\n } else {\n result = await (db as TransactionPg).insert(table).values(values).returning()\n }\n\n return result\n}\n"],"names":["insert","db","onConflictDoUpdate","tableName","values","table","tables","result","returning"],"mappings":"AAGA,OAAO,MAAMA,SAAiB,eAAeA,OAAO,EAClDC,EAAE,EACFC,kBAAkB,EAClBC,SAAS,EACTC,MAAM,EACP;IACC,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACH,UAAU;IACpC,IAAII;IAEJ,IAAIL,oBAAoB;QACtBK,SAAS,MAAM,AAACN,GACbD,MAAM,CAACK,OACPD,MAAM,CAACA,QACPF,kBAAkB,CAACA,oBACnBM,SAAS;IACd,OAAO;QACLD,SAAS,MAAM,AAACN,GAAqBD,MAAM,CAACK,OAAOD,MAAM,CAACA,QAAQI,SAAS;IAC7E;IAEA,OAAOD;AACT,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RequireDrizzleKit } from '../types.js';
2
+ export declare const requireDrizzleKit: RequireDrizzleKit;
3
+ //# sourceMappingURL=requireDrizzleKit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/postgres/requireDrizzleKit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGpD,eAAO,MAAM,iBAAiB,EAAE,iBAAoD,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { createRequire } from 'module';
2
+ const require = createRequire(import.meta.url);
3
+ export const requireDrizzleKit = ()=>require('drizzle-kit/api');
4
+
5
+ //# sourceMappingURL=requireDrizzleKit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/requireDrizzleKit.ts"],"sourcesContent":["import { createRequire } from 'module'\n\nimport type { RequireDrizzleKit } from '../types.js'\n\nconst require = createRequire(import.meta.url)\nexport const requireDrizzleKit: RequireDrizzleKit = () => require('drizzle-kit/api')\n"],"names":["createRequire","require","url","requireDrizzleKit"],"mappings":"AAAA,SAASA,aAAa,QAAQ,SAAQ;AAItC,MAAMC,UAAUD,cAAc,YAAYE,GAAG;AAC7C,OAAO,MAAMC,oBAAuC,IAAMF,QAAQ,mBAAkB"}
@@ -0,0 +1,41 @@
1
+ import type { PgColumnBuilder } from 'drizzle-orm/pg-core';
2
+ import type { Field, SanitizedJoins } from 'payload';
3
+ import type { BaseExtraConfig, BasePostgresAdapter, RelationMap } from '../types.js';
4
+ type Args = {
5
+ adapter: BasePostgresAdapter;
6
+ baseColumns?: Record<string, PgColumnBuilder>;
7
+ /**
8
+ * After table is created, run these functions to add extra config to the table
9
+ * ie. indexes, multiple columns, etc
10
+ */
11
+ baseExtraConfig?: BaseExtraConfig;
12
+ buildNumbers?: boolean;
13
+ buildRelationships?: boolean;
14
+ disableNotNull: boolean;
15
+ disableUnique: boolean;
16
+ fields: Field[];
17
+ joins?: SanitizedJoins;
18
+ rootRelationships?: Set<string>;
19
+ rootRelationsToBuild?: RelationMap;
20
+ rootTableIDColType?: string;
21
+ rootTableName?: string;
22
+ tableName: string;
23
+ timestamps?: boolean;
24
+ versions: boolean;
25
+ /**
26
+ * Tracks whether or not this table is built
27
+ * from the result of a localized array or block field at some point
28
+ */
29
+ withinLocalizedArrayOrBlock?: boolean;
30
+ };
31
+ type Result = {
32
+ hasLocalizedManyNumberField: boolean;
33
+ hasLocalizedManyTextField: boolean;
34
+ hasLocalizedRelationshipField: boolean;
35
+ hasManyNumberField: 'index' | boolean;
36
+ hasManyTextField: 'index' | boolean;
37
+ relationsToBuild: RelationMap;
38
+ };
39
+ export declare const buildTable: ({ adapter, baseColumns, baseExtraConfig, disableNotNull, disableUnique, fields, joins, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, versions, withinLocalizedArrayOrBlock, }: Args) => Result;
40
+ export {};
41
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/postgres/schema/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAepD,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EAInB,WAAW,EACZ,MAAM,aAAa,CAAA;AAOpB,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,mBAAmB,CAAA;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC7C;;;OAGG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,OAAO,CAAA;IACtB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAA;CACtC,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,2BAA2B,EAAE,OAAO,CAAA;IACpC,yBAAyB,EAAE,OAAO,CAAA;IAClC,6BAA6B,EAAE,OAAO,CAAA;IACtC,kBAAkB,EAAE,OAAO,GAAG,OAAO,CAAA;IACrC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAA;IACnC,gBAAgB,EAAE,WAAW,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,UAAU,8PAgBpB,IAAI,KAAG,MAkZT,CAAA"}
@@ -0,0 +1,379 @@
1
+ import { relations } from 'drizzle-orm';
2
+ import { foreignKey, index, integer, numeric, serial, timestamp, unique, varchar } from 'drizzle-orm/pg-core';
3
+ import toSnakeCase from 'to-snake-case';
4
+ import { createTableName } from '../../createTableName.js';
5
+ import { parentIDColumnMap } from './parentIDColumnMap.js';
6
+ import { setColumnID } from './setColumnID.js';
7
+ import { traverseFields } from './traverseFields.js';
8
+ export const buildTable = ({ adapter, baseColumns = {}, baseExtraConfig = {}, disableNotNull, disableUnique = false, fields, joins, rootRelationships, rootRelationsToBuild, rootTableIDColType, rootTableName: incomingRootTableName, tableName, timestamps, versions, withinLocalizedArrayOrBlock })=>{
9
+ const isRoot = !incomingRootTableName;
10
+ const rootTableName = incomingRootTableName || tableName;
11
+ const columns = baseColumns;
12
+ const indexes = {};
13
+ const localesColumns = {};
14
+ const localesIndexes = {};
15
+ let localesTable;
16
+ let textsTable;
17
+ let numbersTable;
18
+ // Relationships to the base collection
19
+ const relationships = rootRelationships || new Set();
20
+ let relationshipsTable;
21
+ // Drizzle relations
22
+ const relationsToBuild = new Map();
23
+ const idColType = setColumnID({
24
+ adapter,
25
+ columns,
26
+ fields
27
+ });
28
+ const { hasLocalizedField, hasLocalizedManyNumberField, hasLocalizedManyTextField, hasLocalizedRelationshipField, hasManyNumberField, hasManyTextField } = traverseFields({
29
+ adapter,
30
+ columns,
31
+ disableNotNull,
32
+ disableUnique,
33
+ fields,
34
+ indexes,
35
+ joins,
36
+ localesColumns,
37
+ localesIndexes,
38
+ newTableName: tableName,
39
+ parentTableName: tableName,
40
+ relationships,
41
+ relationsToBuild,
42
+ rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,
43
+ rootTableIDColType: rootTableIDColType || idColType,
44
+ rootTableName,
45
+ versions,
46
+ withinLocalizedArrayOrBlock
47
+ });
48
+ // split the relationsToBuild by localized and non-localized
49
+ const localizedRelations = new Map();
50
+ const nonLocalizedRelations = new Map();
51
+ relationsToBuild.forEach(({ type, localized, relationName, target }, key)=>{
52
+ const map = localized ? localizedRelations : nonLocalizedRelations;
53
+ map.set(key, {
54
+ type,
55
+ relationName,
56
+ target
57
+ });
58
+ });
59
+ if (timestamps) {
60
+ columns.createdAt = timestamp('created_at', {
61
+ mode: 'string',
62
+ precision: 3,
63
+ withTimezone: true
64
+ }).defaultNow().notNull();
65
+ columns.updatedAt = timestamp('updated_at', {
66
+ mode: 'string',
67
+ precision: 3,
68
+ withTimezone: true
69
+ }).defaultNow().notNull();
70
+ }
71
+ const table = adapter.pgSchema.table(tableName, columns, (cols)=>{
72
+ const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func])=>{
73
+ config[key] = func(cols);
74
+ return config;
75
+ }, {});
76
+ const result = Object.entries(indexes).reduce((acc, [colName, func])=>{
77
+ acc[colName] = func(cols);
78
+ return acc;
79
+ }, extraConfig);
80
+ return result;
81
+ });
82
+ adapter.tables[tableName] = table;
83
+ if (hasLocalizedField || localizedRelations.size) {
84
+ const localeTableName = `${tableName}${adapter.localesSuffix}`;
85
+ localesColumns.id = serial('id').primaryKey();
86
+ localesColumns._locale = adapter.enums.enum__locales('_locale').notNull();
87
+ localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id').notNull();
88
+ localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols)=>{
89
+ return Object.entries(localesIndexes).reduce((acc, [colName, func])=>{
90
+ acc[colName] = func(cols);
91
+ return acc;
92
+ }, {
93
+ _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(cols._locale, cols._parentID),
94
+ _parentIdFk: foreignKey({
95
+ name: `${localeTableName}_parent_id_fk`,
96
+ columns: [
97
+ cols._parentID
98
+ ],
99
+ foreignColumns: [
100
+ table.id
101
+ ]
102
+ }).onDelete('cascade')
103
+ });
104
+ });
105
+ adapter.tables[localeTableName] = localesTable;
106
+ adapter.relations[`relations_${localeTableName}`] = relations(localesTable, ({ many, one })=>{
107
+ const result = {};
108
+ result._parentID = one(table, {
109
+ fields: [
110
+ localesTable._parentID
111
+ ],
112
+ references: [
113
+ table.id
114
+ ],
115
+ // name the relationship by what the many() relationName is
116
+ relationName: '_locales'
117
+ });
118
+ localizedRelations.forEach(({ type, target }, key)=>{
119
+ if (type === 'one') {
120
+ result[key] = one(adapter.tables[target], {
121
+ fields: [
122
+ localesTable[key]
123
+ ],
124
+ references: [
125
+ adapter.tables[target].id
126
+ ],
127
+ relationName: key
128
+ });
129
+ }
130
+ if (type === 'many') {
131
+ result[key] = many(adapter.tables[target], {
132
+ relationName: key
133
+ });
134
+ }
135
+ });
136
+ return result;
137
+ });
138
+ }
139
+ if (isRoot) {
140
+ if (hasManyTextField) {
141
+ const textsTableName = `${rootTableName}_texts`;
142
+ const columns = {
143
+ id: serial('id').primaryKey(),
144
+ order: integer('order').notNull(),
145
+ parent: parentIDColumnMap[idColType]('parent_id').notNull(),
146
+ path: varchar('path').notNull(),
147
+ text: varchar('text')
148
+ };
149
+ if (hasLocalizedManyTextField) {
150
+ columns.locale = adapter.enums.enum__locales('locale');
151
+ }
152
+ textsTable = adapter.pgSchema.table(textsTableName, columns, (cols)=>{
153
+ const config = {
154
+ orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),
155
+ parentFk: foreignKey({
156
+ name: `${textsTableName}_parent_fk`,
157
+ columns: [
158
+ cols.parent
159
+ ],
160
+ foreignColumns: [
161
+ table.id
162
+ ]
163
+ }).onDelete('cascade')
164
+ };
165
+ if (hasManyTextField === 'index') {
166
+ config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text);
167
+ }
168
+ if (hasLocalizedManyTextField) {
169
+ config.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent);
170
+ }
171
+ return config;
172
+ });
173
+ adapter.tables[textsTableName] = textsTable;
174
+ adapter.relations[`relations_${textsTableName}`] = relations(textsTable, ({ one })=>({
175
+ parent: one(table, {
176
+ fields: [
177
+ textsTable.parent
178
+ ],
179
+ references: [
180
+ table.id
181
+ ],
182
+ relationName: '_texts'
183
+ })
184
+ }));
185
+ }
186
+ if (hasManyNumberField) {
187
+ const numbersTableName = `${rootTableName}_numbers`;
188
+ const columns = {
189
+ id: serial('id').primaryKey(),
190
+ number: numeric('number'),
191
+ order: integer('order').notNull(),
192
+ parent: parentIDColumnMap[idColType]('parent_id').notNull(),
193
+ path: varchar('path').notNull()
194
+ };
195
+ if (hasLocalizedManyNumberField) {
196
+ columns.locale = adapter.enums.enum__locales('locale');
197
+ }
198
+ numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols)=>{
199
+ const config = {
200
+ orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),
201
+ parentFk: foreignKey({
202
+ name: `${numbersTableName}_parent_fk`,
203
+ columns: [
204
+ cols.parent
205
+ ],
206
+ foreignColumns: [
207
+ table.id
208
+ ]
209
+ }).onDelete('cascade')
210
+ };
211
+ if (hasManyNumberField === 'index') {
212
+ config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number);
213
+ }
214
+ if (hasLocalizedManyNumberField) {
215
+ config.localeParent = index(`${numbersTableName}_locale_parent`).on(cols.locale, cols.parent);
216
+ }
217
+ return config;
218
+ });
219
+ adapter.tables[numbersTableName] = numbersTable;
220
+ adapter.relations[`relations_${numbersTableName}`] = relations(numbersTable, ({ one })=>({
221
+ parent: one(table, {
222
+ fields: [
223
+ numbersTable.parent
224
+ ],
225
+ references: [
226
+ table.id
227
+ ],
228
+ relationName: '_numbers'
229
+ })
230
+ }));
231
+ }
232
+ if (relationships.size) {
233
+ const relationshipColumns = {
234
+ id: serial('id').primaryKey(),
235
+ order: integer('order'),
236
+ parent: parentIDColumnMap[idColType]('parent_id').notNull(),
237
+ path: varchar('path').notNull()
238
+ };
239
+ if (hasLocalizedRelationshipField) {
240
+ relationshipColumns.locale = adapter.enums.enum__locales('locale');
241
+ }
242
+ const relationExtraConfig = {};
243
+ const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`;
244
+ relationships.forEach((relationTo)=>{
245
+ const relationshipConfig = adapter.payload.collections[relationTo].config;
246
+ const formattedRelationTo = createTableName({
247
+ adapter,
248
+ config: relationshipConfig,
249
+ throwValidationError: true
250
+ });
251
+ let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer';
252
+ const relatedCollectionCustomIDType = adapter.payload.collections[relationshipConfig.slug]?.customIDType;
253
+ if (relatedCollectionCustomIDType === 'number') {
254
+ colType = 'numeric';
255
+ }
256
+ if (relatedCollectionCustomIDType === 'text') {
257
+ colType = 'varchar';
258
+ }
259
+ relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](`${formattedRelationTo}_id`);
260
+ relationExtraConfig[`${relationTo}IdFk`] = (cols)=>foreignKey({
261
+ name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,
262
+ columns: [
263
+ cols[`${relationTo}ID`]
264
+ ],
265
+ foreignColumns: [
266
+ adapter.tables[formattedRelationTo].id
267
+ ]
268
+ }).onDelete('cascade');
269
+ });
270
+ relationshipsTable = adapter.pgSchema.table(relationshipsTableName, relationshipColumns, (cols)=>{
271
+ const result = Object.entries(relationExtraConfig).reduce((config, [key, func])=>{
272
+ config[key] = func(cols);
273
+ return config;
274
+ }, {
275
+ order: index(`${relationshipsTableName}_order_idx`).on(cols.order),
276
+ parentFk: foreignKey({
277
+ name: `${relationshipsTableName}_parent_fk`,
278
+ columns: [
279
+ cols.parent
280
+ ],
281
+ foreignColumns: [
282
+ table.id
283
+ ]
284
+ }).onDelete('cascade'),
285
+ parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),
286
+ pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path)
287
+ });
288
+ if (hasLocalizedRelationshipField) {
289
+ result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale);
290
+ }
291
+ return result;
292
+ });
293
+ adapter.tables[relationshipsTableName] = relationshipsTable;
294
+ adapter.relations[`relations_${relationshipsTableName}`] = relations(relationshipsTable, ({ one })=>{
295
+ const result = {
296
+ parent: one(table, {
297
+ fields: [
298
+ relationshipsTable.parent
299
+ ],
300
+ references: [
301
+ table.id
302
+ ],
303
+ relationName: '_rels'
304
+ })
305
+ };
306
+ relationships.forEach((relationTo)=>{
307
+ const relatedTableName = createTableName({
308
+ adapter,
309
+ config: adapter.payload.collections[relationTo].config,
310
+ throwValidationError: true
311
+ });
312
+ const idColumnName = `${relationTo}ID`;
313
+ result[idColumnName] = one(adapter.tables[relatedTableName], {
314
+ fields: [
315
+ relationshipsTable[idColumnName]
316
+ ],
317
+ references: [
318
+ adapter.tables[relatedTableName].id
319
+ ],
320
+ relationName: relationTo
321
+ });
322
+ });
323
+ return result;
324
+ });
325
+ }
326
+ }
327
+ adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one })=>{
328
+ const result = {};
329
+ nonLocalizedRelations.forEach(({ type, relationName, target }, key)=>{
330
+ if (type === 'one') {
331
+ result[key] = one(adapter.tables[target], {
332
+ fields: [
333
+ table[key]
334
+ ],
335
+ references: [
336
+ adapter.tables[target].id
337
+ ],
338
+ relationName: key
339
+ });
340
+ }
341
+ if (type === 'many') {
342
+ result[key] = many(adapter.tables[target], {
343
+ relationName: relationName || key
344
+ });
345
+ }
346
+ });
347
+ if (hasLocalizedField) {
348
+ result._locales = many(localesTable, {
349
+ relationName: '_locales'
350
+ });
351
+ }
352
+ if (hasManyTextField) {
353
+ result._texts = many(textsTable, {
354
+ relationName: '_texts'
355
+ });
356
+ }
357
+ if (hasManyNumberField) {
358
+ result._numbers = many(numbersTable, {
359
+ relationName: '_numbers'
360
+ });
361
+ }
362
+ if (relationships.size && relationshipsTable) {
363
+ result._rels = many(relationshipsTable, {
364
+ relationName: '_rels'
365
+ });
366
+ }
367
+ return result;
368
+ });
369
+ return {
370
+ hasLocalizedManyNumberField,
371
+ hasLocalizedManyTextField,
372
+ hasLocalizedRelationshipField,
373
+ hasManyNumberField,
374
+ hasManyTextField,
375
+ relationsToBuild
376
+ };
377
+ };
378
+
379
+ //# sourceMappingURL=build.js.map