@payloadcms/db-postgres 3.0.0-canary.6041f49 → 3.0.0-canary.6d066c2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (400) hide show
  1. package/README.md +1 -1
  2. package/dist/connect.d.ts +1 -1
  3. package/dist/connect.d.ts.map +1 -1
  4. package/dist/connect.js +16 -13
  5. package/dist/connect.js.map +1 -1
  6. package/dist/countDistinct.d.ts +3 -0
  7. package/dist/countDistinct.d.ts.map +1 -0
  8. package/dist/countDistinct.js +24 -0
  9. package/dist/countDistinct.js.map +1 -0
  10. package/dist/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -0
  11. package/dist/createJSONQuery/convertPathToJSONTraversal.js.map +1 -0
  12. package/dist/createJSONQuery/formatJSONPathSegment.d.ts.map +1 -0
  13. package/dist/createJSONQuery/formatJSONPathSegment.js.map +1 -0
  14. package/dist/createJSONQuery/index.d.ts.map +1 -0
  15. package/dist/createJSONQuery/index.js.map +1 -0
  16. package/dist/createMigration.d.ts +1 -1
  17. package/dist/createMigration.d.ts.map +1 -1
  18. package/dist/createMigration.js +56 -57
  19. package/dist/createMigration.js.map +1 -1
  20. package/dist/defaultSnapshot.d.ts +3 -0
  21. package/dist/defaultSnapshot.d.ts.map +1 -0
  22. package/dist/defaultSnapshot.js +16 -0
  23. package/dist/defaultSnapshot.js.map +1 -0
  24. package/dist/deleteWhere.d.ts +3 -0
  25. package/dist/deleteWhere.d.ts.map +1 -0
  26. package/dist/deleteWhere.js +6 -0
  27. package/dist/deleteWhere.js.map +1 -0
  28. package/dist/dropDatabase.d.ts +3 -0
  29. package/dist/dropDatabase.d.ts.map +1 -0
  30. package/dist/dropDatabase.js +9 -0
  31. package/dist/dropDatabase.js.map +1 -0
  32. package/dist/execute.d.ts +3 -0
  33. package/dist/execute.d.ts.map +1 -0
  34. package/dist/execute.js +11 -0
  35. package/dist/execute.js.map +1 -0
  36. package/dist/exports/migration-utils.d.ts +2 -0
  37. package/dist/exports/migration-utils.d.ts.map +1 -0
  38. package/dist/exports/migration-utils.js +3 -0
  39. package/dist/exports/migration-utils.js.map +1 -0
  40. package/dist/getMigrationTemplate.d.ts +3 -0
  41. package/dist/getMigrationTemplate.d.ts.map +1 -0
  42. package/dist/getMigrationTemplate.js +12 -0
  43. package/dist/getMigrationTemplate.js.map +1 -0
  44. package/dist/index.d.ts +1 -1
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +37 -64
  47. package/dist/index.js.map +1 -1
  48. package/dist/init.d.ts +1 -1
  49. package/dist/init.d.ts.map +1 -1
  50. package/dist/init.js +17 -22
  51. package/dist/init.js.map +1 -1
  52. package/dist/insert.d.ts +3 -0
  53. package/dist/insert.d.ts.map +1 -0
  54. package/dist/insert.js +12 -0
  55. package/dist/insert.js.map +1 -0
  56. package/dist/predefinedMigrations/relationships-v2-v3.d.ts +4 -0
  57. package/dist/predefinedMigrations/relationships-v2-v3.d.ts.map +1 -0
  58. package/dist/predefinedMigrations/relationships-v2-v3.js.map +1 -0
  59. package/dist/predefinedMigrations/relationships-v2-v3.mjs +11 -0
  60. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts +20 -0
  61. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -0
  62. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js +169 -0
  63. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -0
  64. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts +11 -0
  65. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -0
  66. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js +191 -0
  67. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -0
  68. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts +3 -0
  69. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -0
  70. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js +56 -0
  71. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js.map +1 -0
  72. package/dist/predefinedMigrations/v2-v3/index.d.ts +23 -0
  73. package/dist/predefinedMigrations/v2-v3/index.d.ts.map +1 -0
  74. package/dist/predefinedMigrations/v2-v3/index.js +211 -0
  75. package/dist/predefinedMigrations/v2-v3/index.js.map +1 -0
  76. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts +20 -0
  77. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -0
  78. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js +57 -0
  79. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js.map +1 -0
  80. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts +23 -0
  81. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -0
  82. package/dist/predefinedMigrations/v2-v3/traverseFields.js +85 -0
  83. package/dist/predefinedMigrations/v2-v3/traverseFields.js.map +1 -0
  84. package/dist/predefinedMigrations/v2-v3/types.d.ts +9 -0
  85. package/dist/predefinedMigrations/v2-v3/types.d.ts.map +1 -0
  86. package/dist/predefinedMigrations/v2-v3/types.js +6 -0
  87. package/dist/predefinedMigrations/v2-v3/types.js.map +1 -0
  88. package/dist/requireDrizzleKit.d.ts +3 -0
  89. package/dist/requireDrizzleKit.d.ts.map +1 -0
  90. package/dist/requireDrizzleKit.js +5 -0
  91. package/dist/requireDrizzleKit.js.map +1 -0
  92. package/dist/schema/build.d.ts +9 -5
  93. package/dist/schema/build.d.ts.map +1 -1
  94. package/dist/schema/build.js +163 -114
  95. package/dist/schema/build.js.map +1 -1
  96. package/dist/schema/createIndex.js.map +1 -1
  97. package/dist/schema/idToUUID.d.ts +1 -1
  98. package/dist/schema/idToUUID.d.ts.map +1 -1
  99. package/dist/schema/idToUUID.js.map +1 -1
  100. package/dist/schema/parentIDColumnMap.js.map +1 -1
  101. package/dist/schema/setColumnID.d.ts +1 -1
  102. package/dist/schema/setColumnID.d.ts.map +1 -1
  103. package/dist/schema/setColumnID.js +2 -2
  104. package/dist/schema/setColumnID.js.map +1 -1
  105. package/dist/schema/traverseFields.d.ts +5 -7
  106. package/dist/schema/traverseFields.d.ts.map +1 -1
  107. package/dist/schema/traverseFields.js +107 -46
  108. package/dist/schema/traverseFields.js.map +1 -1
  109. package/dist/types.d.ts +78 -32
  110. package/dist/types.d.ts.map +1 -1
  111. package/dist/types.js.map +1 -1
  112. package/package.json +22 -13
  113. package/dist/count.d.ts +0 -3
  114. package/dist/count.d.ts.map +0 -1
  115. package/dist/count.js +0 -50
  116. package/dist/count.js.map +0 -1
  117. package/dist/create.d.ts +0 -3
  118. package/dist/create.d.ts.map +0 -1
  119. package/dist/create.js +0 -19
  120. package/dist/create.js.map +0 -1
  121. package/dist/createGlobal.d.ts +0 -5
  122. package/dist/createGlobal.d.ts.map +0 -1
  123. package/dist/createGlobal.js +0 -19
  124. package/dist/createGlobal.js.map +0 -1
  125. package/dist/createGlobalVersion.d.ts +0 -6
  126. package/dist/createGlobalVersion.d.ts.map +0 -1
  127. package/dist/createGlobalVersion.js +0 -33
  128. package/dist/createGlobalVersion.js.map +0 -1
  129. package/dist/createVersion.d.ts +0 -5
  130. package/dist/createVersion.d.ts.map +0 -1
  131. package/dist/createVersion.js +0 -44
  132. package/dist/createVersion.js.map +0 -1
  133. package/dist/deleteMany.d.ts +0 -3
  134. package/dist/deleteMany.d.ts.map +0 -1
  135. package/dist/deleteMany.js +0 -28
  136. package/dist/deleteMany.js.map +0 -1
  137. package/dist/deleteOne.d.ts +0 -3
  138. package/dist/deleteOne.d.ts.map +0 -1
  139. package/dist/deleteOne.js +0 -59
  140. package/dist/deleteOne.js.map +0 -1
  141. package/dist/deleteVersions.d.ts +0 -3
  142. package/dist/deleteVersions.d.ts.map +0 -1
  143. package/dist/deleteVersions.js +0 -31
  144. package/dist/deleteVersions.js.map +0 -1
  145. package/dist/destroy.d.ts +0 -3
  146. package/dist/destroy.d.ts.map +0 -1
  147. package/dist/destroy.js +0 -11
  148. package/dist/destroy.js.map +0 -1
  149. package/dist/find/buildFindManyArgs.d.ts +0 -13
  150. package/dist/find/buildFindManyArgs.d.ts.map +0 -1
  151. package/dist/find/buildFindManyArgs.js +0 -64
  152. package/dist/find/buildFindManyArgs.js.map +0 -1
  153. package/dist/find/chainMethods.d.ts +0 -16
  154. package/dist/find/chainMethods.d.ts.map +0 -1
  155. package/dist/find/chainMethods.js +0 -12
  156. package/dist/find/chainMethods.js.map +0 -1
  157. package/dist/find/findMany.d.ts +0 -22
  158. package/dist/find/findMany.d.ts.map +0 -1
  159. package/dist/find/findMany.js +0 -163
  160. package/dist/find/findMany.js.map +0 -1
  161. package/dist/find/traverseFields.d.ts +0 -16
  162. package/dist/find/traverseFields.d.ts.map +0 -1
  163. package/dist/find/traverseFields.js +0 -138
  164. package/dist/find/traverseFields.js.map +0 -1
  165. package/dist/find.d.ts +0 -3
  166. package/dist/find.d.ts.map +0 -1
  167. package/dist/find.js +0 -21
  168. package/dist/find.js.map +0 -1
  169. package/dist/findGlobal.d.ts +0 -3
  170. package/dist/findGlobal.d.ts.map +0 -1
  171. package/dist/findGlobal.js +0 -23
  172. package/dist/findGlobal.js.map +0 -1
  173. package/dist/findGlobalVersions.d.ts +0 -3
  174. package/dist/findGlobalVersions.d.ts.map +0 -1
  175. package/dist/findGlobalVersions.js +0 -24
  176. package/dist/findGlobalVersions.js.map +0 -1
  177. package/dist/findOne.d.ts +0 -5
  178. package/dist/findOne.d.ts.map +0 -1
  179. package/dist/findOne.js +0 -21
  180. package/dist/findOne.js.map +0 -1
  181. package/dist/findVersions.d.ts +0 -3
  182. package/dist/findVersions.d.ts.map +0 -1
  183. package/dist/findVersions.js +0 -24
  184. package/dist/findVersions.js.map +0 -1
  185. package/dist/migrate.d.ts +0 -3
  186. package/dist/migrate.d.ts.map +0 -1
  187. package/dist/migrate.js +0 -99
  188. package/dist/migrate.js.map +0 -1
  189. package/dist/migrateDown.d.ts +0 -3
  190. package/dist/migrateDown.d.ts.map +0 -1
  191. package/dist/migrateDown.js +0 -63
  192. package/dist/migrateDown.js.map +0 -1
  193. package/dist/migrateFresh.d.ts +0 -8
  194. package/dist/migrateFresh.d.ts.map +0 -1
  195. package/dist/migrateFresh.js +0 -72
  196. package/dist/migrateFresh.js.map +0 -1
  197. package/dist/migrateRefresh.d.ts +0 -6
  198. package/dist/migrateRefresh.d.ts.map +0 -1
  199. package/dist/migrateRefresh.js +0 -102
  200. package/dist/migrateRefresh.js.map +0 -1
  201. package/dist/migrateReset.d.ts +0 -6
  202. package/dist/migrateReset.d.ts.map +0 -1
  203. package/dist/migrateReset.js +0 -82
  204. package/dist/migrateReset.js.map +0 -1
  205. package/dist/migrateStatus.d.ts +0 -3
  206. package/dist/migrateStatus.d.ts.map +0 -1
  207. package/dist/migrateStatus.js +0 -44
  208. package/dist/migrateStatus.js.map +0 -1
  209. package/dist/queries/buildAndOrConditions.d.ts +0 -17
  210. package/dist/queries/buildAndOrConditions.d.ts.map +0 -1
  211. package/dist/queries/buildAndOrConditions.js +0 -29
  212. package/dist/queries/buildAndOrConditions.js.map +0 -1
  213. package/dist/queries/buildQuery.d.ts +0 -31
  214. package/dist/queries/buildQuery.d.ts.map +0 -1
  215. package/dist/queries/buildQuery.js +0 -76
  216. package/dist/queries/buildQuery.js.map +0 -1
  217. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.d.ts.map +0 -1
  218. package/dist/queries/createJSONQuery/convertPathToJSONTraversal.js.map +0 -1
  219. package/dist/queries/createJSONQuery/formatJSONPathSegment.d.ts.map +0 -1
  220. package/dist/queries/createJSONQuery/formatJSONPathSegment.js.map +0 -1
  221. package/dist/queries/createJSONQuery/index.d.ts.map +0 -1
  222. package/dist/queries/createJSONQuery/index.js.map +0 -1
  223. package/dist/queries/getTableColumnFromPath.d.ts +0 -51
  224. package/dist/queries/getTableColumnFromPath.d.ts.map +0 -1
  225. package/dist/queries/getTableColumnFromPath.js +0 -445
  226. package/dist/queries/getTableColumnFromPath.js.map +0 -1
  227. package/dist/queries/operatorMap.d.ts +0 -18
  228. package/dist/queries/operatorMap.d.ts.map +0 -1
  229. package/dist/queries/operatorMap.js +0 -24
  230. package/dist/queries/operatorMap.js.map +0 -1
  231. package/dist/queries/parseParams.d.ts +0 -17
  232. package/dist/queries/parseParams.d.ts.map +0 -1
  233. package/dist/queries/parseParams.js +0 -182
  234. package/dist/queries/parseParams.js.map +0 -1
  235. package/dist/queries/sanitizeQueryValue.d.ts +0 -15
  236. package/dist/queries/sanitizeQueryValue.d.ts.map +0 -1
  237. package/dist/queries/sanitizeQueryValue.js +0 -90
  238. package/dist/queries/sanitizeQueryValue.js.map +0 -1
  239. package/dist/queries/selectDistinct.d.ts +0 -23
  240. package/dist/queries/selectDistinct.d.ts.map +0 -1
  241. package/dist/queries/selectDistinct.js +0 -41
  242. package/dist/queries/selectDistinct.js.map +0 -1
  243. package/dist/queryDrafts.d.ts +0 -3
  244. package/dist/queryDrafts.d.ts.map +0 -1
  245. package/dist/queryDrafts.js +0 -41
  246. package/dist/queryDrafts.js.map +0 -1
  247. package/dist/schema/createTableName.d.ts +0 -30
  248. package/dist/schema/createTableName.d.ts.map +0 -1
  249. package/dist/schema/createTableName.js +0 -31
  250. package/dist/schema/createTableName.js.map +0 -1
  251. package/dist/schema/validateExistingBlockIsIdentical.d.ts +0 -12
  252. package/dist/schema/validateExistingBlockIsIdentical.d.ts.map +0 -1
  253. package/dist/schema/validateExistingBlockIsIdentical.js +0 -76
  254. package/dist/schema/validateExistingBlockIsIdentical.js.map +0 -1
  255. package/dist/transactions/beginTransaction.d.ts +0 -3
  256. package/dist/transactions/beginTransaction.d.ts.map +0 -1
  257. package/dist/transactions/beginTransaction.js +0 -47
  258. package/dist/transactions/beginTransaction.js.map +0 -1
  259. package/dist/transactions/commitTransaction.d.ts +0 -3
  260. package/dist/transactions/commitTransaction.d.ts.map +0 -1
  261. package/dist/transactions/commitTransaction.js +0 -14
  262. package/dist/transactions/commitTransaction.js.map +0 -1
  263. package/dist/transactions/rollbackTransaction.d.ts +0 -3
  264. package/dist/transactions/rollbackTransaction.d.ts.map +0 -1
  265. package/dist/transactions/rollbackTransaction.js +0 -13
  266. package/dist/transactions/rollbackTransaction.js.map +0 -1
  267. package/dist/transform/read/hasManyNumber.d.ts +0 -10
  268. package/dist/transform/read/hasManyNumber.d.ts.map +0 -1
  269. package/dist/transform/read/hasManyNumber.js +0 -10
  270. package/dist/transform/read/hasManyNumber.js.map +0 -1
  271. package/dist/transform/read/hasManyText.d.ts +0 -10
  272. package/dist/transform/read/hasManyText.d.ts.map +0 -1
  273. package/dist/transform/read/hasManyText.js +0 -10
  274. package/dist/transform/read/hasManyText.js.map +0 -1
  275. package/dist/transform/read/index.d.ts +0 -12
  276. package/dist/transform/read/index.d.ts.map +0 -1
  277. package/dist/transform/read/index.js +0 -43
  278. package/dist/transform/read/index.js.map +0 -1
  279. package/dist/transform/read/relationship.d.ts +0 -10
  280. package/dist/transform/read/relationship.d.ts.map +0 -1
  281. package/dist/transform/read/relationship.js +0 -64
  282. package/dist/transform/read/relationship.js.map +0 -1
  283. package/dist/transform/read/traverseFields.d.ts +0 -52
  284. package/dist/transform/read/traverseFields.d.ts.map +0 -1
  285. package/dist/transform/read/traverseFields.js +0 -421
  286. package/dist/transform/read/traverseFields.js.map +0 -1
  287. package/dist/transform/write/array.d.ts +0 -26
  288. package/dist/transform/write/array.d.ts.map +0 -1
  289. package/dist/transform/write/array.js +0 -58
  290. package/dist/transform/write/array.js.map +0 -1
  291. package/dist/transform/write/blocks.d.ts +0 -25
  292. package/dist/transform/write/blocks.d.ts.map +0 -1
  293. package/dist/transform/write/blocks.js +0 -54
  294. package/dist/transform/write/blocks.js.map +0 -1
  295. package/dist/transform/write/index.d.ts +0 -13
  296. package/dist/transform/write/index.d.ts.map +0 -1
  297. package/dist/transform/write/index.js +0 -41
  298. package/dist/transform/write/index.js.map +0 -1
  299. package/dist/transform/write/numbers.d.ts +0 -8
  300. package/dist/transform/write/numbers.d.ts.map +0 -1
  301. package/dist/transform/write/numbers.js +0 -11
  302. package/dist/transform/write/numbers.js.map +0 -1
  303. package/dist/transform/write/relationships.d.ts +0 -10
  304. package/dist/transform/write/relationships.d.ts.map +0 -1
  305. package/dist/transform/write/relationships.js +0 -23
  306. package/dist/transform/write/relationships.js.map +0 -1
  307. package/dist/transform/write/selects.d.ts +0 -8
  308. package/dist/transform/write/selects.d.ts.map +0 -1
  309. package/dist/transform/write/selects.js +0 -20
  310. package/dist/transform/write/selects.js.map +0 -1
  311. package/dist/transform/write/texts.d.ts +0 -8
  312. package/dist/transform/write/texts.d.ts.map +0 -1
  313. package/dist/transform/write/texts.js +0 -11
  314. package/dist/transform/write/texts.js.map +0 -1
  315. package/dist/transform/write/traverseFields.d.ts +0 -50
  316. package/dist/transform/write/traverseFields.d.ts.map +0 -1
  317. package/dist/transform/write/traverseFields.js +0 -428
  318. package/dist/transform/write/traverseFields.js.map +0 -1
  319. package/dist/transform/write/types.d.ts +0 -43
  320. package/dist/transform/write/types.d.ts.map +0 -1
  321. package/dist/transform/write/types.js +0 -3
  322. package/dist/transform/write/types.js.map +0 -1
  323. package/dist/update.d.ts +0 -3
  324. package/dist/update.d.ts.map +0 -1
  325. package/dist/update.js +0 -55
  326. package/dist/update.js.map +0 -1
  327. package/dist/updateGlobal.d.ts +0 -5
  328. package/dist/updateGlobal.d.ts.map +0 -1
  329. package/dist/updateGlobal.js +0 -25
  330. package/dist/updateGlobal.js.map +0 -1
  331. package/dist/updateGlobalVersion.d.ts +0 -5
  332. package/dist/updateGlobalVersion.d.ts.map +0 -1
  333. package/dist/updateGlobalVersion.js +0 -36
  334. package/dist/updateGlobalVersion.js.map +0 -1
  335. package/dist/updateVersion.d.ts +0 -5
  336. package/dist/updateVersion.d.ts.map +0 -1
  337. package/dist/updateVersion.js +0 -36
  338. package/dist/updateVersion.js.map +0 -1
  339. package/dist/upsertRow/deleteExistingArrayRows.d.ts +0 -10
  340. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +0 -1
  341. package/dist/upsertRow/deleteExistingArrayRows.js +0 -10
  342. package/dist/upsertRow/deleteExistingArrayRows.js.map +0 -1
  343. package/dist/upsertRow/deleteExistingRowsByPath.d.ts +0 -14
  344. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +0 -1
  345. package/dist/upsertRow/deleteExistingRowsByPath.js +0 -33
  346. package/dist/upsertRow/deleteExistingRowsByPath.js.map +0 -1
  347. package/dist/upsertRow/index.d.ts +0 -4
  348. package/dist/upsertRow/index.d.ts.map +0 -1
  349. package/dist/upsertRow/index.js +0 -277
  350. package/dist/upsertRow/index.js.map +0 -1
  351. package/dist/upsertRow/insertArrays.d.ts +0 -13
  352. package/dist/upsertRow/insertArrays.d.ts.map +0 -1
  353. package/dist/upsertRow/insertArrays.js +0 -68
  354. package/dist/upsertRow/insertArrays.js.map +0 -1
  355. package/dist/upsertRow/types.d.ts +0 -27
  356. package/dist/upsertRow/types.d.ts.map +0 -1
  357. package/dist/upsertRow/types.js +0 -3
  358. package/dist/upsertRow/types.js.map +0 -1
  359. package/dist/utilities/appendPrefixToKeys.d.ts +0 -2
  360. package/dist/utilities/appendPrefixToKeys.d.ts.map +0 -1
  361. package/dist/utilities/appendPrefixToKeys.js +0 -6
  362. package/dist/utilities/appendPrefixToKeys.js.map +0 -1
  363. package/dist/utilities/createBlocksMap.d.ts +0 -5
  364. package/dist/utilities/createBlocksMap.d.ts.map +0 -1
  365. package/dist/utilities/createBlocksMap.js +0 -29
  366. package/dist/utilities/createBlocksMap.js.map +0 -1
  367. package/dist/utilities/createMigrationTable.d.ts +0 -3
  368. package/dist/utilities/createMigrationTable.d.ts.map +0 -1
  369. package/dist/utilities/createMigrationTable.js +0 -13
  370. package/dist/utilities/createMigrationTable.js.map +0 -1
  371. package/dist/utilities/createRelationshipMap.d.ts +0 -2
  372. package/dist/utilities/createRelationshipMap.d.ts.map +0 -1
  373. package/dist/utilities/createRelationshipMap.js +0 -19
  374. package/dist/utilities/createRelationshipMap.js.map +0 -1
  375. package/dist/utilities/hasLocalesTable.d.ts +0 -3
  376. package/dist/utilities/hasLocalesTable.d.ts.map +0 -1
  377. package/dist/utilities/hasLocalesTable.js +0 -11
  378. package/dist/utilities/hasLocalesTable.js.map +0 -1
  379. package/dist/utilities/isArrayOfRows.d.ts +0 -2
  380. package/dist/utilities/isArrayOfRows.d.ts.map +0 -1
  381. package/dist/utilities/isArrayOfRows.js +0 -5
  382. package/dist/utilities/isArrayOfRows.js.map +0 -1
  383. package/dist/utilities/migrationTableExists.d.ts +0 -3
  384. package/dist/utilities/migrationTableExists.d.ts.map +0 -1
  385. package/dist/utilities/migrationTableExists.js +0 -9
  386. package/dist/utilities/migrationTableExists.js.map +0 -1
  387. package/dist/utilities/parseError.d.ts +0 -5
  388. package/dist/utilities/parseError.d.ts.map +0 -1
  389. package/dist/utilities/parseError.js +0 -17
  390. package/dist/utilities/parseError.js.map +0 -1
  391. package/dist/utilities/pushDevSchema.d.ts +0 -9
  392. package/dist/utilities/pushDevSchema.d.ts.map +0 -1
  393. package/dist/utilities/pushDevSchema.js +0 -58
  394. package/dist/utilities/pushDevSchema.js.map +0 -1
  395. /package/dist/{queries/createJSONQuery → createJSONQuery}/convertPathToJSONTraversal.d.ts +0 -0
  396. /package/dist/{queries/createJSONQuery → createJSONQuery}/convertPathToJSONTraversal.js +0 -0
  397. /package/dist/{queries/createJSONQuery → createJSONQuery}/formatJSONPathSegment.d.ts +0 -0
  398. /package/dist/{queries/createJSONQuery → createJSONQuery}/formatJSONPathSegment.js +0 -0
  399. /package/dist/{queries/createJSONQuery → createJSONQuery}/index.d.ts +0 -0
  400. /package/dist/{queries/createJSONQuery → createJSONQuery}/index.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/build.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Relation } from 'drizzle-orm'\nimport type {\n ForeignKeyBuilder,\n IndexBuilder,\n PgColumnBuilder,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/pg-core'\nimport type { Field } from 'payload/types'\n\nimport { relations } from 'drizzle-orm'\nimport {\n foreignKey,\n index,\n integer,\n numeric,\n serial,\n timestamp,\n unique,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, GenericTable, IDType, PostgresAdapter } from '../types.js'\n\nimport { createTableName } from './createTableName.js'\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { setColumnID } from './setColumnID.js'\nimport { traverseFields } from './traverseFields.js'\n\nexport type BaseExtraConfig = Record<\n string,\n (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder\n>\n\ntype Args = {\n adapter: PostgresAdapter\n baseColumns?: Record<string, PgColumnBuilder>\n baseExtraConfig?: BaseExtraConfig\n buildNumbers?: boolean\n buildRelationships?: boolean\n buildTexts?: boolean\n disableNotNull: boolean\n disableUnique: boolean\n fields: Field[]\n rootRelationsToBuild?: Map<string, string>\n rootRelationships?: Set<string>\n rootTableIDColType?: string\n rootTableName?: string\n tableName: string\n timestamps?: boolean\n versions: boolean\n}\n\ntype Result = {\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n relationsToBuild: Map<string, string>\n}\n\nexport const buildTable = ({\n adapter,\n baseColumns = {},\n baseExtraConfig = {},\n buildNumbers,\n buildRelationships,\n buildTexts,\n disableNotNull,\n disableUnique = false,\n fields,\n rootRelationsToBuild,\n rootRelationships,\n rootTableIDColType,\n rootTableName: incomingRootTableName,\n tableName,\n timestamps,\n versions,\n}: Args): Result => {\n const rootTableName = incomingRootTableName || tableName\n const columns: Record<string, PgColumnBuilder> = baseColumns\n const indexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n\n const localesColumns: Record<string, PgColumnBuilder> = {}\n const localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n let localesTable: GenericTable | PgTableWithColumns<any>\n let textsTable: GenericTable | PgTableWithColumns<any>\n let numbersTable: GenericTable | PgTableWithColumns<any>\n\n // Relationships to the base collection\n const relationships: Set<string> = rootRelationships || new Set()\n\n let relationshipsTable: GenericTable | PgTableWithColumns<any>\n\n // Drizzle relations\n const relationsToBuild: Map<string, string> = new Map()\n\n const idColType: IDType = setColumnID({ adapter, columns, fields })\n\n const {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n } = traverseFields({\n adapter,\n buildNumbers,\n buildRelationships,\n buildTexts,\n columns,\n disableNotNull,\n disableUnique,\n fields,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: tableName,\n parentTableName: tableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,\n rootTableIDColType: rootTableIDColType || idColType,\n rootTableName,\n versions,\n })\n\n if (timestamps) {\n columns.createdAt = timestamp('created_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n columns.updatedAt = timestamp('updated_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n }\n\n const table = adapter.pgSchema.table(tableName, columns, (cols) => {\n const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func]) => {\n config[key] = func(cols)\n return config\n }, {})\n\n const result = Object.entries(indexes).reduce((acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n }, extraConfig)\n\n return result\n })\n\n adapter.tables[tableName] = table\n\n if (hasLocalizedField) {\n const localeTableName = `${tableName}${adapter.localesSuffix}`\n localesColumns.id = serial('id').primaryKey()\n localesColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id').notNull()\n\n localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols) => {\n return Object.entries(localesIndexes).reduce(\n (acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n },\n {\n _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(\n cols._locale,\n cols._parentID,\n ),\n _parentIdFk: foreignKey({\n name: `${localeTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n },\n )\n })\n\n adapter.tables[localeTableName] = localesTable\n\n const localesTableRelations = relations(localesTable, ({ one }) => ({\n _parentID: one(table, {\n fields: [localesTable._parentID],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${localeTableName}`] = localesTableRelations\n }\n\n if (hasManyTextField && buildTexts) {\n const textsTableName = `${rootTableName}_texts`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n text: varchar('text'),\n }\n\n if (hasLocalizedManyTextField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n textsTable = adapter.pgSchema.table(textsTableName, columns, (cols) => {\n const config: Record<string, ForeignKeyBuilder | IndexBuilder> = {\n orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),\n parentFk: foreignKey({\n name: `${textsTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n }\n\n if (hasManyTextField === 'index') {\n config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text)\n }\n\n if (hasLocalizedManyTextField) {\n config.localeParent = index(`${textsTableName}_locale_parent`).on(cols.locale, cols.parent)\n }\n\n return config\n })\n\n adapter.tables[textsTableName] = textsTable\n\n const textsTableRelations = relations(textsTable, ({ one }) => ({\n parent: one(table, {\n fields: [textsTable.parent],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${textsTableName}`] = textsTableRelations\n }\n\n if (hasManyNumberField && buildNumbers) {\n const numbersTableName = `${rootTableName}_numbers`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n number: numeric('number'),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedManyNumberField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols) => {\n const config: Record<string, ForeignKeyBuilder | IndexBuilder> = {\n orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),\n parentFk: foreignKey({\n name: `${numbersTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n }\n\n if (hasManyNumberField === 'index') {\n config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number)\n }\n\n if (hasLocalizedManyNumberField) {\n config.localeParent = index(`${numbersTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return config\n })\n\n adapter.tables[numbersTableName] = numbersTable\n\n const numbersTableRelations = relations(numbersTable, ({ one }) => ({\n parent: one(table, {\n fields: [numbersTable.parent],\n references: [table.id],\n }),\n }))\n\n adapter.relations[`relations_${numbersTableName}`] = numbersTableRelations\n }\n\n if (buildRelationships) {\n if (relationships.size) {\n const relationshipColumns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order'),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedRelationshipField) {\n relationshipColumns.locale = adapter.enums.enum__locales('locale')\n }\n\n const relationExtraConfig: BaseExtraConfig = {}\n\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n relationships.forEach((relationTo) => {\n const relationshipConfig = adapter.payload.collections[relationTo].config\n const formattedRelationTo = createTableName({\n adapter,\n config: relationshipConfig,\n throwValidationError: true,\n })\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n\n const relatedCollectionCustomIDType =\n adapter.payload.collections[relationshipConfig.slug]?.customIDType\n\n if (relatedCollectionCustomIDType === 'number') colType = 'numeric'\n if (relatedCollectionCustomIDType === 'text') colType = 'varchar'\n\n relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](\n `${formattedRelationTo}_id`,\n )\n\n relationExtraConfig[`${relationTo}IdFk`] = (cols) =>\n foreignKey({\n name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,\n columns: [cols[`${relationTo}ID`]],\n foreignColumns: [adapter.tables[formattedRelationTo].id],\n }).onDelete('cascade')\n })\n\n relationshipsTable = adapter.pgSchema.table(\n relationshipsTableName,\n relationshipColumns,\n (cols) => {\n const result: Record<string, ForeignKeyBuilder | IndexBuilder> = Object.entries(\n relationExtraConfig,\n ).reduce(\n (config, [key, func]) => {\n config[key] = func(cols)\n return config\n },\n {\n order: index(`${relationshipsTableName}_order_idx`).on(cols.order),\n parentFk: foreignKey({\n name: `${relationshipsTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),\n pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path),\n },\n )\n\n if (hasLocalizedRelationshipField) {\n result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale)\n }\n\n return result\n },\n )\n\n adapter.tables[relationshipsTableName] = relationshipsTable\n\n const relationshipsTableRelations = relations(relationshipsTable, ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(table, {\n fields: [relationshipsTable.parent],\n references: [table.id],\n relationName: '_rels',\n }),\n }\n\n relationships.forEach((relationTo) => {\n const relatedTableName = createTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n throwValidationError: true,\n })\n const idColumnName = `${relationTo}ID`\n result[idColumnName] = one(adapter.tables[relatedTableName], {\n fields: [relationshipsTable[idColumnName]],\n references: [adapter.tables[relatedTableName].id],\n })\n })\n\n return result\n })\n\n adapter.relations[`relations_${relationshipsTableName}`] = relationshipsTableRelations\n }\n }\n\n const tableRelations = relations(table, ({ many }) => {\n const result: Record<string, Relation<string>> = {}\n\n relationsToBuild.forEach((val, key) => {\n result[key] = many(adapter.tables[val])\n })\n\n if (hasLocalizedField) {\n result._locales = many(localesTable)\n }\n\n if (hasManyTextField) {\n result._texts = many(textsTable)\n }\n if (hasManyNumberField) {\n result._numbers = many(numbersTable)\n }\n\n if (relationships.size && relationshipsTable) {\n result._rels = many(relationshipsTable, {\n relationName: '_rels',\n })\n }\n\n return result\n })\n\n adapter.relations[`relations_${tableName}`] = tableRelations\n\n return { hasManyNumberField, hasManyTextField, relationsToBuild }\n}\n"],"names":["relations","foreignKey","index","integer","numeric","serial","timestamp","unique","varchar","toSnakeCase","createTableName","parentIDColumnMap","setColumnID","traverseFields","buildTable","adapter","baseColumns","baseExtraConfig","buildNumbers","buildRelationships","buildTexts","disableNotNull","disableUnique","fields","rootRelationsToBuild","rootRelationships","rootTableIDColType","rootTableName","incomingRootTableName","tableName","timestamps","versions","columns","indexes","localesColumns","localesIndexes","localesTable","textsTable","numbersTable","relationships","Set","relationshipsTable","relationsToBuild","Map","idColType","hasLocalizedField","hasLocalizedManyNumberField","hasLocalizedManyTextField","hasLocalizedRelationshipField","hasManyNumberField","hasManyTextField","newTableName","parentTableName","createdAt","mode","precision","withTimezone","defaultNow","notNull","updatedAt","table","pgSchema","cols","extraConfig","Object","entries","reduce","config","key","func","result","acc","colName","tables","localeTableName","localesSuffix","id","primaryKey","_locale","enums","enum__locales","_parentID","_localeParent","on","_parentIdFk","name","foreignColumns","onDelete","localesTableRelations","one","references","textsTableName","order","parent","path","text","locale","orderParentIdx","parentFk","text_idx","localeParent","textsTableRelations","numbersTableName","number","numberIdx","numbersTableRelations","size","relationshipColumns","relationExtraConfig","relationshipsTableName","relationshipsSuffix","forEach","relationTo","relationshipConfig","payload","collections","formattedRelationTo","throwValidationError","colType","idType","relatedCollectionCustomIDType","slug","customIDType","parentIdx","pathIdx","localeIdx","relationshipsTableRelations","relationName","relatedTableName","idColumnName","tableRelations","many","val","_locales","_texts","_numbers","_rels"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/build.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { Relation } from 'drizzle-orm'\nimport type {\n ForeignKeyBuilder,\n IndexBuilder,\n PgColumnBuilder,\n PgTableWithColumns,\n UniqueConstraintBuilder,\n} from 'drizzle-orm/pg-core'\nimport type { Field } from 'payload'\n\nimport { createTableName } from '@payloadcms/drizzle'\nimport { relations } from 'drizzle-orm'\nimport {\n foreignKey,\n index,\n integer,\n numeric,\n serial,\n timestamp,\n unique,\n varchar,\n} from 'drizzle-orm/pg-core'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { GenericColumns, GenericTable, IDType, PostgresAdapter } from '../types.js'\n\nimport { parentIDColumnMap } from './parentIDColumnMap.js'\nimport { setColumnID } from './setColumnID.js'\nimport { traverseFields } from './traverseFields.js'\n\nexport type BaseExtraConfig = Record<\n string,\n (cols: GenericColumns) => ForeignKeyBuilder | IndexBuilder | UniqueConstraintBuilder\n>\n\nexport type RelationMap = Map<string, { localized: boolean; target: string; type: 'many' | 'one' }>\n\ntype Args = {\n adapter: PostgresAdapter\n baseColumns?: Record<string, PgColumnBuilder>\n baseExtraConfig?: BaseExtraConfig\n buildNumbers?: boolean\n buildRelationships?: boolean\n disableNotNull: boolean\n disableUnique: boolean\n fields: Field[]\n rootRelationsToBuild?: RelationMap\n rootRelationships?: Set<string>\n rootTableIDColType?: string\n rootTableName?: string\n tableName: string\n timestamps?: boolean\n versions: boolean\n}\n\ntype Result = {\n hasManyNumberField: 'index' | boolean\n hasManyTextField: 'index' | boolean\n relationsToBuild: RelationMap\n}\n\nexport const buildTable = ({\n adapter,\n baseColumns = {},\n baseExtraConfig = {},\n disableNotNull,\n disableUnique = false,\n fields,\n rootRelationsToBuild,\n rootRelationships,\n rootTableIDColType,\n rootTableName: incomingRootTableName,\n tableName,\n timestamps,\n versions,\n}: Args): Result => {\n const isRoot = !incomingRootTableName\n const rootTableName = incomingRootTableName || tableName\n const columns: Record<string, PgColumnBuilder> = baseColumns\n const indexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n\n const localesColumns: Record<string, PgColumnBuilder> = {}\n const localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder> = {}\n let localesTable: GenericTable | PgTableWithColumns<any>\n let textsTable: GenericTable | PgTableWithColumns<any>\n let numbersTable: GenericTable | PgTableWithColumns<any>\n\n // Relationships to the base collection\n const relationships: Set<string> = rootRelationships || new Set()\n\n let relationshipsTable: GenericTable | PgTableWithColumns<any>\n\n // Drizzle relations\n const relationsToBuild: RelationMap = new Map()\n\n const idColType: IDType = setColumnID({ adapter, columns, fields })\n\n const {\n hasLocalizedField,\n hasLocalizedManyNumberField,\n hasLocalizedManyTextField,\n hasLocalizedRelationshipField,\n hasManyNumberField,\n hasManyTextField,\n } = traverseFields({\n adapter,\n columns,\n disableNotNull,\n disableUnique,\n fields,\n indexes,\n localesColumns,\n localesIndexes,\n newTableName: tableName,\n parentTableName: tableName,\n relationsToBuild,\n relationships,\n rootRelationsToBuild: rootRelationsToBuild || relationsToBuild,\n rootTableIDColType: rootTableIDColType || idColType,\n rootTableName,\n versions,\n })\n\n // split the relationsToBuild by localized and non-localized\n const localizedRelations = new Map()\n const nonLocalizedRelations = new Map()\n\n relationsToBuild.forEach(({ type, localized, target }, key) => {\n const map = localized ? localizedRelations : nonLocalizedRelations\n map.set(key, { type, target })\n })\n\n if (timestamps) {\n columns.createdAt = timestamp('created_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n columns.updatedAt = timestamp('updated_at', {\n mode: 'string',\n precision: 3,\n withTimezone: true,\n })\n .defaultNow()\n .notNull()\n }\n\n const table = adapter.pgSchema.table(tableName, columns, (cols) => {\n const extraConfig = Object.entries(baseExtraConfig).reduce((config, [key, func]) => {\n config[key] = func(cols)\n return config\n }, {})\n\n const result = Object.entries(indexes).reduce((acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n }, extraConfig)\n\n return result\n })\n\n adapter.tables[tableName] = table\n\n if (hasLocalizedField || localizedRelations.size) {\n const localeTableName = `${tableName}${adapter.localesSuffix}`\n localesColumns.id = serial('id').primaryKey()\n localesColumns._locale = adapter.enums.enum__locales('_locale').notNull()\n localesColumns._parentID = parentIDColumnMap[idColType]('_parent_id').notNull()\n\n localesTable = adapter.pgSchema.table(localeTableName, localesColumns, (cols) => {\n return Object.entries(localesIndexes).reduce(\n (acc, [colName, func]) => {\n acc[colName] = func(cols)\n return acc\n },\n {\n _localeParent: unique(`${localeTableName}_locale_parent_id_unique`).on(\n cols._locale,\n cols._parentID,\n ),\n _parentIdFk: foreignKey({\n name: `${localeTableName}_parent_id_fk`,\n columns: [cols._parentID],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n },\n )\n })\n\n adapter.tables[localeTableName] = localesTable\n\n adapter.relations[`relations_${localeTableName}`] = relations(localesTable, ({ many, one }) => {\n const result: Record<string, Relation<string>> = {}\n\n result._parentID = one(table, {\n fields: [localesTable._parentID],\n references: [table.id],\n // name the relationship by what the many() relationName is\n relationName: '_locales',\n })\n\n localizedRelations.forEach(({ type, target }, key) => {\n if (type === 'one') {\n result[key] = one(adapter.tables[target], {\n fields: [localesTable[key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], {\n relationName: key,\n })\n }\n })\n\n return result\n })\n }\n\n if (isRoot) {\n if (hasManyTextField) {\n const textsTableName = `${rootTableName}_texts`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n text: varchar('text'),\n }\n\n if (hasLocalizedManyTextField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n textsTable = adapter.pgSchema.table(textsTableName, columns, (cols) => {\n const config: Record<string, ForeignKeyBuilder | IndexBuilder> = {\n orderParentIdx: index(`${textsTableName}_order_parent_idx`).on(cols.order, cols.parent),\n parentFk: foreignKey({\n name: `${textsTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n }\n\n if (hasManyTextField === 'index') {\n config.text_idx = index(`${textsTableName}_text_idx`).on(cols.text)\n }\n\n if (hasLocalizedManyTextField) {\n config.localeParent = index(`${textsTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return config\n })\n\n adapter.tables[textsTableName] = textsTable\n\n adapter.relations[`relations_${textsTableName}`] = relations(textsTable, ({ one }) => ({\n parent: one(table, {\n fields: [textsTable.parent],\n references: [table.id],\n relationName: '_texts',\n }),\n }))\n }\n\n if (hasManyNumberField) {\n const numbersTableName = `${rootTableName}_numbers`\n const columns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n number: numeric('number'),\n order: integer('order').notNull(),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedManyNumberField) {\n columns.locale = adapter.enums.enum__locales('locale')\n }\n\n numbersTable = adapter.pgSchema.table(numbersTableName, columns, (cols) => {\n const config: Record<string, ForeignKeyBuilder | IndexBuilder> = {\n orderParentIdx: index(`${numbersTableName}_order_parent_idx`).on(cols.order, cols.parent),\n parentFk: foreignKey({\n name: `${numbersTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n }\n\n if (hasManyNumberField === 'index') {\n config.numberIdx = index(`${numbersTableName}_number_idx`).on(cols.number)\n }\n\n if (hasLocalizedManyNumberField) {\n config.localeParent = index(`${numbersTableName}_locale_parent`).on(\n cols.locale,\n cols.parent,\n )\n }\n\n return config\n })\n\n adapter.tables[numbersTableName] = numbersTable\n\n adapter.relations[`relations_${numbersTableName}`] = relations(numbersTable, ({ one }) => ({\n parent: one(table, {\n fields: [numbersTable.parent],\n references: [table.id],\n relationName: '_numbers',\n }),\n }))\n }\n\n if (relationships.size) {\n const relationshipColumns: Record<string, PgColumnBuilder> = {\n id: serial('id').primaryKey(),\n order: integer('order'),\n parent: parentIDColumnMap[idColType]('parent_id').notNull(),\n path: varchar('path').notNull(),\n }\n\n if (hasLocalizedRelationshipField) {\n relationshipColumns.locale = adapter.enums.enum__locales('locale')\n }\n\n const relationExtraConfig: BaseExtraConfig = {}\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n relationships.forEach((relationTo) => {\n const relationshipConfig = adapter.payload.collections[relationTo].config\n const formattedRelationTo = createTableName({\n adapter,\n config: relationshipConfig,\n throwValidationError: true,\n })\n let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer'\n const relatedCollectionCustomIDType =\n adapter.payload.collections[relationshipConfig.slug]?.customIDType\n\n if (relatedCollectionCustomIDType === 'number') colType = 'numeric'\n if (relatedCollectionCustomIDType === 'text') colType = 'varchar'\n\n relationshipColumns[`${relationTo}ID`] = parentIDColumnMap[colType](\n `${formattedRelationTo}_id`,\n )\n\n relationExtraConfig[`${relationTo}IdFk`] = (cols) =>\n foreignKey({\n name: `${relationshipsTableName}_${toSnakeCase(relationTo)}_fk`,\n columns: [cols[`${relationTo}ID`]],\n foreignColumns: [adapter.tables[formattedRelationTo].id],\n }).onDelete('cascade')\n })\n\n relationshipsTable = adapter.pgSchema.table(\n relationshipsTableName,\n relationshipColumns,\n (cols) => {\n const result: Record<string, ForeignKeyBuilder | IndexBuilder> = Object.entries(\n relationExtraConfig,\n ).reduce(\n (config, [key, func]) => {\n config[key] = func(cols)\n return config\n },\n {\n order: index(`${relationshipsTableName}_order_idx`).on(cols.order),\n parentFk: foreignKey({\n name: `${relationshipsTableName}_parent_fk`,\n columns: [cols.parent],\n foreignColumns: [table.id],\n }).onDelete('cascade'),\n parentIdx: index(`${relationshipsTableName}_parent_idx`).on(cols.parent),\n pathIdx: index(`${relationshipsTableName}_path_idx`).on(cols.path),\n },\n )\n\n if (hasLocalizedRelationshipField) {\n result.localeIdx = index(`${relationshipsTableName}_locale_idx`).on(cols.locale)\n }\n\n return result\n },\n )\n\n adapter.tables[relationshipsTableName] = relationshipsTable\n\n adapter.relations[`relations_${relationshipsTableName}`] = relations(\n relationshipsTable,\n ({ one }) => {\n const result: Record<string, Relation<string>> = {\n parent: one(table, {\n fields: [relationshipsTable.parent],\n references: [table.id],\n relationName: '_rels',\n }),\n }\n\n relationships.forEach((relationTo) => {\n const relatedTableName = createTableName({\n adapter,\n config: adapter.payload.collections[relationTo].config,\n throwValidationError: true,\n })\n const idColumnName = `${relationTo}ID`\n result[idColumnName] = one(adapter.tables[relatedTableName], {\n fields: [relationshipsTable[idColumnName]],\n references: [adapter.tables[relatedTableName].id],\n relationName: relationTo,\n })\n })\n\n return result\n },\n )\n }\n }\n\n adapter.relations[`relations_${tableName}`] = relations(table, ({ many, one }) => {\n const result: Record<string, Relation<string>> = {}\n\n nonLocalizedRelations.forEach(({ type, target }, key) => {\n if (type === 'one') {\n result[key] = one(adapter.tables[target], {\n fields: [table[key]],\n references: [adapter.tables[target].id],\n relationName: key,\n })\n }\n if (type === 'many') {\n result[key] = many(adapter.tables[target], { relationName: key })\n }\n })\n\n if (hasLocalizedField) {\n result._locales = many(localesTable, { relationName: '_locales' })\n }\n\n if (hasManyTextField) {\n result._texts = many(textsTable, { relationName: '_texts' })\n }\n\n if (hasManyNumberField) {\n result._numbers = many(numbersTable, { relationName: '_numbers' })\n }\n\n if (relationships.size && relationshipsTable) {\n result._rels = many(relationshipsTable, {\n relationName: '_rels',\n })\n }\n\n return result\n })\n\n return { hasManyNumberField, hasManyTextField, relationsToBuild }\n}\n"],"names":["createTableName","relations","foreignKey","index","integer","numeric","serial","timestamp","unique","varchar","toSnakeCase","parentIDColumnMap","setColumnID","traverseFields","buildTable","adapter","baseColumns","baseExtraConfig","disableNotNull","disableUnique","fields","rootRelationsToBuild","rootRelationships","rootTableIDColType","rootTableName","incomingRootTableName","tableName","timestamps","versions","isRoot","columns","indexes","localesColumns","localesIndexes","localesTable","textsTable","numbersTable","relationships","Set","relationshipsTable","relationsToBuild","Map","idColType","hasLocalizedField","hasLocalizedManyNumberField","hasLocalizedManyTextField","hasLocalizedRelationshipField","hasManyNumberField","hasManyTextField","newTableName","parentTableName","localizedRelations","nonLocalizedRelations","forEach","type","localized","target","key","map","set","createdAt","mode","precision","withTimezone","defaultNow","notNull","updatedAt","table","pgSchema","cols","extraConfig","Object","entries","reduce","config","func","result","acc","colName","tables","size","localeTableName","localesSuffix","id","primaryKey","_locale","enums","enum__locales","_parentID","_localeParent","on","_parentIdFk","name","foreignColumns","onDelete","many","one","references","relationName","textsTableName","order","parent","path","text","locale","orderParentIdx","parentFk","text_idx","localeParent","numbersTableName","number","numberIdx","relationshipColumns","relationExtraConfig","relationshipsTableName","relationshipsSuffix","relationTo","relationshipConfig","payload","collections","formattedRelationTo","throwValidationError","colType","idType","relatedCollectionCustomIDType","slug","customIDType","parentIdx","pathIdx","localeIdx","relatedTableName","idColumnName","_locales","_texts","_numbers","_rels"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/createIndex.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { index, uniqueIndex } from 'drizzle-orm/pg-core'\n\nimport type { GenericColumn } from '../types.js'\n\ntype CreateIndexArgs = {\n columnName: string\n name: string | string[]\n tableName: string\n unique?: boolean\n}\n\nexport const createIndex = ({ name, columnName, tableName, unique }: CreateIndexArgs) => {\n return (table: { [x: string]: GenericColumn }) => {\n let columns\n if (Array.isArray(name)) {\n columns = name\n .map((columnName) => table[columnName])\n // exclude fields were included in compound indexes but do not exist on the table\n .filter((col) => typeof col !== 'undefined')\n } else {\n columns = [table[name]]\n }\n if (unique)\n return uniqueIndex(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1))\n return index(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1))\n }\n}\n"],"names":["index","uniqueIndex","createIndex","name","columnName","tableName","unique","table","columns","Array","isArray","map","filter","col","on","slice"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA,oCAAoC,GACpC,SAASA,KAAK,EAAEC,WAAW,QAAQ,sBAAqB;AAWxD,OAAO,MAAMC,cAAc,CAAC,EAAEC,IAAI,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAmB;IAClF,OAAO,CAACC;QACN,IAAIC;QACJ,IAAIC,MAAMC,OAAO,CAACP,OAAO;YACvBK,UAAUL,KACPQ,GAAG,CAAC,CAACP,aAAeG,KAAK,CAACH,WAAW,CACtC,iFAAiF;aAChFQ,MAAM,CAAC,CAACC,MAAQ,OAAOA,QAAQ;QACpC,OAAO;YACLL,UAAU;gBAACD,KAAK,CAACJ,KAAK;aAAC;QACzB;QACA,IAAIG,QACF,OAAOL,YAAY,CAAC,EAAEI,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;QACvF,OAAOf,MAAM,CAAC,EAAEK,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;IACjF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/schema/createIndex.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { index, uniqueIndex } from 'drizzle-orm/pg-core'\n\nimport type { GenericColumn } from '../types.js'\n\ntype CreateIndexArgs = {\n columnName: string\n name: string | string[]\n tableName: string\n unique?: boolean\n}\n\nexport const createIndex = ({ name, columnName, tableName, unique }: CreateIndexArgs) => {\n return (table: { [x: string]: GenericColumn }) => {\n let columns\n if (Array.isArray(name)) {\n columns = name\n .map((columnName) => table[columnName])\n // exclude fields were included in compound indexes but do not exist on the table\n .filter((col) => typeof col !== 'undefined')\n } else {\n columns = [table[name]]\n }\n if (unique)\n return uniqueIndex(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1))\n return index(`${tableName}_${columnName}_idx`).on(columns[0], ...columns.slice(1))\n }\n}\n"],"names":["index","uniqueIndex","createIndex","name","columnName","tableName","unique","table","columns","Array","isArray","map","filter","col","on","slice"],"mappings":"AAAA,oCAAoC,GACpC,SAASA,KAAK,EAAEC,WAAW,QAAQ,sBAAqB;AAWxD,OAAO,MAAMC,cAAc,CAAC,EAAEC,IAAI,EAAEC,UAAU,EAAEC,SAAS,EAAEC,MAAM,EAAmB;IAClF,OAAO,CAACC;QACN,IAAIC;QACJ,IAAIC,MAAMC,OAAO,CAACP,OAAO;YACvBK,UAAUL,KACPQ,GAAG,CAAC,CAACP,aAAeG,KAAK,CAACH,WAAW,CACtC,iFAAiF;aAChFQ,MAAM,CAAC,CAACC,MAAQ,OAAOA,QAAQ;QACpC,OAAO;YACLL,UAAU;gBAACD,KAAK,CAACJ,KAAK;aAAC;QACzB;QACA,IAAIG,QACF,OAAOL,YAAY,CAAC,EAAEI,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;QACvF,OAAOf,MAAM,CAAC,EAAEK,UAAU,CAAC,EAAED,WAAW,IAAI,CAAC,EAAEU,EAAE,CAACN,OAAO,CAAC,EAAE,KAAKA,QAAQO,KAAK,CAAC;IACjF;AACF,EAAC"}
@@ -1,3 +1,3 @@
1
- import type { Field } from 'payload/types';
1
+ import type { Field } from 'payload';
2
2
  export declare const idToUUID: (fields: Field[]) => Field[];
3
3
  //# sourceMappingURL=idToUUID.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"idToUUID.d.ts","sourceRoot":"","sources":["../../src/schema/idToUUID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAE1C,eAAO,MAAM,QAAQ,WAAY,KAAK,EAAE,KAAG,KAAK,EAU5C,CAAA"}
1
+ {"version":3,"file":"idToUUID.d.ts","sourceRoot":"","sources":["../../src/schema/idToUUID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEpC,eAAO,MAAM,QAAQ,WAAY,KAAK,EAAE,KAAG,KAAK,EAU5C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/idToUUID.ts"],"sourcesContent":["import type { Field } from 'payload/types'\n\nexport const idToUUID = (fields: Field[]): Field[] =>\n fields.map((field) => {\n if ('name' in field && field.name === 'id') {\n return {\n ...field,\n name: '_uuid',\n }\n }\n\n return field\n })\n"],"names":["idToUUID","fields","map","field","name"],"rangeMappings":";;;;;;;;","mappings":"AAEA,OAAO,MAAMA,WAAW,CAACC,SACvBA,OAAOC,GAAG,CAAC,CAACC;QACV,IAAI,UAAUA,SAASA,MAAMC,IAAI,KAAK,MAAM;YAC1C,OAAO;gBACL,GAAGD,KAAK;gBACRC,MAAM;YACR;QACF;QAEA,OAAOD;IACT,GAAE"}
1
+ {"version":3,"sources":["../../src/schema/idToUUID.ts"],"sourcesContent":["import type { Field } from 'payload'\n\nexport const idToUUID = (fields: Field[]): Field[] =>\n fields.map((field) => {\n if ('name' in field && field.name === 'id') {\n return {\n ...field,\n name: '_uuid',\n }\n }\n\n return field\n })\n"],"names":["idToUUID","fields","map","field","name"],"mappings":"AAEA,OAAO,MAAMA,WAAW,CAACC,SACvBA,OAAOC,GAAG,CAAC,CAACC;QACV,IAAI,UAAUA,SAASA,MAAMC,IAAI,KAAK,MAAM;YAC1C,OAAO;gBACL,GAAGD,KAAK;gBACRC,MAAM;YACR;QACF;QAEA,OAAOD;IACT,GAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/parentIDColumnMap.ts"],"sourcesContent":["import { integer, numeric, uuid, varchar } from 'drizzle-orm/pg-core'\n\nimport type { IDType } from '../types.js'\n\nexport const parentIDColumnMap: Record<\n IDType,\n typeof integer<string> | typeof numeric<string> | typeof uuid<string> | typeof varchar\n> = {\n integer,\n numeric,\n uuid,\n varchar,\n}\n"],"names":["integer","numeric","uuid","varchar","parentIDColumnMap"],"rangeMappings":";;;;;;","mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,QAAQ,sBAAqB;AAIrE,OAAO,MAAMC,oBAGT;IACFJ;IACAC;IACAC;IACAC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/schema/parentIDColumnMap.ts"],"sourcesContent":["import { integer, numeric, uuid, varchar } from 'drizzle-orm/pg-core'\n\nimport type { IDType } from '../types.js'\n\nexport const parentIDColumnMap: Record<\n IDType,\n typeof integer<string> | typeof numeric<string> | typeof uuid<string> | typeof varchar\n> = {\n integer,\n numeric,\n uuid,\n varchar,\n}\n"],"names":["integer","numeric","uuid","varchar","parentIDColumnMap"],"mappings":"AAAA,SAASA,OAAO,EAAEC,OAAO,EAAEC,IAAI,EAAEC,OAAO,QAAQ,sBAAqB;AAIrE,OAAO,MAAMC,oBAGT;IACFJ;IACAC;IACAC;IACAC;AACF,EAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { PgColumnBuilder } from 'drizzle-orm/pg-core';
2
- import { type Field } from 'payload/types';
2
+ import { type Field } from 'payload';
3
3
  import type { IDType, PostgresAdapter } from '../types.js';
4
4
  type Args = {
5
5
  adapter: PostgresAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"setColumnID.d.ts","sourceRoot":"","sources":["../../src/schema/setColumnID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG1D,OAAO,EAAE,KAAK,KAAK,EAAoB,MAAM,eAAe,CAAA;AAG5D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,KAAK,IAAI,GAAG;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAA;AACnG,eAAO,MAAM,WAAW,iCAAkC,IAAI,KAAG,MAuBhE,CAAA"}
1
+ {"version":3,"file":"setColumnID.d.ts","sourceRoot":"","sources":["../../src/schema/setColumnID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAG1D,OAAO,EAAE,KAAK,KAAK,EAAyB,MAAM,SAAS,CAAA;AAG3D,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE1D,KAAK,IAAI,GAAG;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAAC,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,CAAA;AACnG,eAAO,MAAM,WAAW,iCAAkC,IAAI,KAAG,MAuBhE,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { numeric, serial, uuid, varchar } from 'drizzle-orm/pg-core';
2
- import { fieldAffectsData } from 'payload/types';
3
- import { flattenTopLevelFields } from 'payload/utilities';
2
+ import { flattenTopLevelFields } from 'payload';
3
+ import { fieldAffectsData } from 'payload/shared';
4
4
  export const setColumnID = ({ adapter, columns, fields })=>{
5
5
  const idField = flattenTopLevelFields(fields).find((field)=>fieldAffectsData(field) && field.name === 'id');
6
6
  if (idField) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/setColumnID.ts"],"sourcesContent":["import type { PgColumnBuilder } from 'drizzle-orm/pg-core'\n\nimport { numeric, serial, uuid, varchar } from 'drizzle-orm/pg-core'\nimport { type Field, fieldAffectsData } from 'payload/types'\nimport { flattenTopLevelFields } from 'payload/utilities'\n\nimport type { IDType, PostgresAdapter } from '../types.js'\n\ntype Args = { adapter: PostgresAdapter; columns: Record<string, PgColumnBuilder>; fields: Field[] }\nexport const setColumnID = ({ adapter, columns, fields }: Args): IDType => {\n const idField = flattenTopLevelFields(fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (idField) {\n if (idField.type === 'number') {\n columns.id = numeric('id').primaryKey()\n return 'numeric'\n }\n\n if (idField.type === 'text') {\n columns.id = varchar('id').primaryKey()\n return 'varchar'\n }\n }\n\n if (adapter.idType === 'uuid') {\n columns.id = uuid('id').defaultRandom().primaryKey()\n return 'uuid'\n }\n\n columns.id = serial('id').primaryKey()\n return 'integer'\n}\n"],"names":["numeric","serial","uuid","varchar","fieldAffectsData","flattenTopLevelFields","setColumnID","adapter","columns","fields","idField","find","field","name","type","id","primaryKey","idType","defaultRandom"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,OAAO,EAAEC,MAAM,EAAEC,IAAI,EAAEC,OAAO,QAAQ,sBAAqB;AACpE,SAAqBC,gBAAgB,QAAQ,gBAAe;AAC5D,SAASC,qBAAqB,QAAQ,oBAAmB;AAKzD,OAAO,MAAMC,cAAc,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAQ;IAC5D,MAAMC,UAAUL,sBAAsBI,QAAQE,IAAI,CAChD,CAACC,QAAUR,iBAAiBQ,UAAUA,MAAMC,IAAI,KAAK;IAEvD,IAAIH,SAAS;QACX,IAAIA,QAAQI,IAAI,KAAK,UAAU;YAC7BN,QAAQO,EAAE,GAAGf,QAAQ,MAAMgB,UAAU;YACrC,OAAO;QACT;QAEA,IAAIN,QAAQI,IAAI,KAAK,QAAQ;YAC3BN,QAAQO,EAAE,GAAGZ,QAAQ,MAAMa,UAAU;YACrC,OAAO;QACT;IACF;IAEA,IAAIT,QAAQU,MAAM,KAAK,QAAQ;QAC7BT,QAAQO,EAAE,GAAGb,KAAK,MAAMgB,aAAa,GAAGF,UAAU;QAClD,OAAO;IACT;IAEAR,QAAQO,EAAE,GAAGd,OAAO,MAAMe,UAAU;IACpC,OAAO;AACT,EAAC"}
1
+ {"version":3,"sources":["../../src/schema/setColumnID.ts"],"sourcesContent":["import type { PgColumnBuilder } from 'drizzle-orm/pg-core'\n\nimport { numeric, serial, uuid, varchar } from 'drizzle-orm/pg-core'\nimport { type Field, flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport type { IDType, PostgresAdapter } from '../types.js'\n\ntype Args = { adapter: PostgresAdapter; columns: Record<string, PgColumnBuilder>; fields: Field[] }\nexport const setColumnID = ({ adapter, columns, fields }: Args): IDType => {\n const idField = flattenTopLevelFields(fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n if (idField) {\n if (idField.type === 'number') {\n columns.id = numeric('id').primaryKey()\n return 'numeric'\n }\n\n if (idField.type === 'text') {\n columns.id = varchar('id').primaryKey()\n return 'varchar'\n }\n }\n\n if (adapter.idType === 'uuid') {\n columns.id = uuid('id').defaultRandom().primaryKey()\n return 'uuid'\n }\n\n columns.id = serial('id').primaryKey()\n return 'integer'\n}\n"],"names":["numeric","serial","uuid","varchar","flattenTopLevelFields","fieldAffectsData","setColumnID","adapter","columns","fields","idField","find","field","name","type","id","primaryKey","idType","defaultRandom"],"mappings":"AAEA,SAASA,OAAO,EAAEC,MAAM,EAAEC,IAAI,EAAEC,OAAO,QAAQ,sBAAqB;AACpE,SAAqBC,qBAAqB,QAAQ,UAAS;AAC3D,SAASC,gBAAgB,QAAQ,iBAAgB;AAKjD,OAAO,MAAMC,cAAc,CAAC,EAAEC,OAAO,EAAEC,OAAO,EAAEC,MAAM,EAAQ;IAC5D,MAAMC,UAAUN,sBAAsBK,QAAQE,IAAI,CAChD,CAACC,QAAUP,iBAAiBO,UAAUA,MAAMC,IAAI,KAAK;IAEvD,IAAIH,SAAS;QACX,IAAIA,QAAQI,IAAI,KAAK,UAAU;YAC7BN,QAAQO,EAAE,GAAGf,QAAQ,MAAMgB,UAAU;YACrC,OAAO;QACT;QAEA,IAAIN,QAAQI,IAAI,KAAK,QAAQ;YAC3BN,QAAQO,EAAE,GAAGZ,QAAQ,MAAMa,UAAU;YACrC,OAAO;QACT;IACF;IAEA,IAAIT,QAAQU,MAAM,KAAK,QAAQ;QAC7BT,QAAQO,EAAE,GAAGb,KAAK,MAAMgB,aAAa,GAAGF,UAAU;QAClD,OAAO;IACT;IAEAR,QAAQO,EAAE,GAAGd,OAAO,MAAMe,UAAU;IACpC,OAAO;AACT,EAAC"}
@@ -1,11 +1,9 @@
1
1
  import type { IndexBuilder, PgColumnBuilder } from 'drizzle-orm/pg-core';
2
- import type { Field, TabAsField } from 'payload/types';
2
+ import type { Field, TabAsField } from 'payload';
3
3
  import type { GenericColumns, PostgresAdapter } from '../types.js';
4
+ import type { RelationMap } from './build.js';
4
5
  type Args = {
5
6
  adapter: PostgresAdapter;
6
- buildNumbers: boolean;
7
- buildRelationships: boolean;
8
- buildTexts: boolean;
9
7
  columnPrefix?: string;
10
8
  columns: Record<string, PgColumnBuilder>;
11
9
  disableNotNull: boolean;
@@ -18,9 +16,9 @@ type Args = {
18
16
  localesIndexes: Record<string, (cols: GenericColumns) => IndexBuilder>;
19
17
  newTableName: string;
20
18
  parentTableName: string;
21
- relationsToBuild: Map<string, string>;
19
+ relationsToBuild: RelationMap;
22
20
  relationships: Set<string>;
23
- rootRelationsToBuild?: Map<string, string>;
21
+ rootRelationsToBuild?: RelationMap;
24
22
  rootTableIDColType: string;
25
23
  rootTableName: string;
26
24
  versions: boolean;
@@ -33,6 +31,6 @@ type Result = {
33
31
  hasManyNumberField: 'index' | boolean;
34
32
  hasManyTextField: 'index' | boolean;
35
33
  };
36
- export declare const traverseFields: ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions, }: Args) => Result;
34
+ export declare const traverseFields: ({ adapter, columnPrefix, columns, disableNotNull, disableUnique, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions, }: Args) => Result;
37
35
  export {};
38
36
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAsBtD,OAAO,KAAK,EAAE,cAAc,EAAU,eAAe,EAAE,MAAM,aAAa,CAAA;AAW1E,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,EAAE,OAAO,CAAA;IACrB,kBAAkB,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,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;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,sUAuBxB,IAAI,KAAG,MAsnBT,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/schema/traverseFields.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AA2BhD,OAAO,KAAK,EAAE,cAAc,EAAU,eAAe,EAAE,MAAM,aAAa,CAAA;AAC1E,OAAO,KAAK,EAAmB,WAAW,EAAE,MAAM,YAAY,CAAA;AAO9D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC,cAAc,EAAE,OAAO,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IAC/D,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,YAAY,CAAC,CAAA;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,WAAW,CAAA;IAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,oBAAoB,CAAC,EAAE,WAAW,CAAA;IAClC,kBAAkB,EAAE,MAAM,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,iBAAiB,EAAE,OAAO,CAAA;IAC1B,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;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,wRAoBxB,IAAI,KAAG,MA4rBT,CAAA"}
@@ -1,16 +1,14 @@
1
- /* eslint-disable no-param-reassign */ import { relations } from 'drizzle-orm';
1
+ /* eslint-disable no-param-reassign */ import { createTableName, hasLocalesTable, validateExistingBlockIsIdentical } from '@payloadcms/drizzle';
2
+ import { relations } from 'drizzle-orm';
2
3
  import { PgNumericBuilder, PgUUIDBuilder, PgVarcharBuilder, boolean, foreignKey, index, integer, jsonb, numeric, pgEnum, text, timestamp, varchar } from 'drizzle-orm/pg-core';
3
- import { InvalidConfiguration } from 'payload/errors';
4
- import { fieldAffectsData, optionIsObject } from 'payload/types';
4
+ import { InvalidConfiguration } from 'payload';
5
+ import { fieldAffectsData, optionIsObject } from 'payload/shared';
5
6
  import toSnakeCase from 'to-snake-case';
6
- import { hasLocalesTable } from '../utilities/hasLocalesTable.js';
7
7
  import { buildTable } from './build.js';
8
8
  import { createIndex } from './createIndex.js';
9
- import { createTableName } from './createTableName.js';
10
9
  import { idToUUID } from './idToUUID.js';
11
10
  import { parentIDColumnMap } from './parentIDColumnMap.js';
12
- import { validateExistingBlockIsIdentical } from './validateExistingBlockIsIdentical.js';
13
- export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buildTexts, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions })=>{
11
+ export const traverseFields = ({ adapter, columnPrefix, columns, disableNotNull, disableUnique = false, fieldPrefix, fields, forceLocalized, indexes, localesColumns, localesIndexes, newTableName, parentTableName, relationsToBuild, relationships, rootRelationsToBuild, rootTableIDColType, rootTableName, versions })=>{
14
12
  const throwValidationError = true;
15
13
  let hasLocalizedField = false;
16
14
  let hasLocalizedRelationshipField = false;
@@ -33,7 +31,7 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
33
31
  fieldName = `${fieldPrefix?.replace('.', '_') || ''}${field.name}`;
34
32
  // If field is localized,
35
33
  // add the column to the locale table instead of main table
36
- if (adapter.payload.config.localization && (field.localized || forceLocalized)) {
34
+ if (adapter.payload.config.localization && (field.localized || forceLocalized) && field.type !== 'array' && field.type !== 'blocks' && ('hasMany' in field && field.hasMany !== true || !('hasMany' in field))) {
37
35
  hasLocalizedField = true;
38
36
  targetTable = localesColumns;
39
37
  targetIndexes = localesIndexes;
@@ -150,7 +148,8 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
150
148
  config: field,
151
149
  parentTableName: newTableName,
152
150
  prefix: `${newTableName}_`,
153
- throwValidationError
151
+ throwValidationError,
152
+ versionsCustomName: versions
154
153
  });
155
154
  const baseColumns = {
156
155
  order: integer('order').notNull(),
@@ -167,7 +166,7 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
167
166
  foreignColumns: [
168
167
  adapter.tables[parentTableName].id
169
168
  ]
170
- }),
169
+ }).onDelete('cascade'),
171
170
  parentIdx: (cols)=>index(`${selectTableName}_parent_idx`).on(cols.parent)
172
171
  };
173
172
  if (field.localized) {
@@ -184,24 +183,27 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
184
183
  disableNotNull,
185
184
  disableUnique,
186
185
  fields: [],
186
+ rootTableName,
187
187
  tableName: selectTableName,
188
188
  versions
189
189
  });
190
- relationsToBuild.set(fieldName, selectTableName);
191
- const selectTableRelations = relations(adapter.tables[selectTableName], ({ one })=>{
192
- const result = {
190
+ relationsToBuild.set(fieldName, {
191
+ type: 'many',
192
+ // selects have their own localized table, independent of the base table.
193
+ localized: false,
194
+ target: selectTableName
195
+ });
196
+ adapter.relations[`relations_${selectTableName}`] = relations(adapter.tables[selectTableName], ({ one })=>({
193
197
  parent: one(adapter.tables[parentTableName], {
194
198
  fields: [
195
199
  adapter.tables[selectTableName].parent
196
200
  ],
197
201
  references: [
198
202
  adapter.tables[parentTableName].id
199
- ]
203
+ ],
204
+ relationName: fieldName
200
205
  })
201
- };
202
- return result;
203
- });
204
- adapter.relations[`relation_${selectTableName}`] = selectTableRelations;
206
+ }));
205
207
  } else {
206
208
  targetTable[fieldName] = adapter.enums[enumName](fieldName);
207
209
  }
@@ -264,8 +266,13 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
264
266
  if (subHasManyNumberField) {
265
267
  if (!hasManyNumberField || subHasManyNumberField === 'index') hasManyNumberField = subHasManyNumberField;
266
268
  }
267
- relationsToBuild.set(fieldName, arrayTableName);
268
- const arrayTableRelations = relations(adapter.tables[arrayTableName], ({ many, one })=>{
269
+ relationsToBuild.set(fieldName, {
270
+ type: 'many',
271
+ // arrays have their own localized table, independent of the base table.
272
+ localized: false,
273
+ target: arrayTableName
274
+ });
275
+ adapter.relations[`relations_${arrayTableName}`] = relations(adapter.tables[arrayTableName], ({ many, one })=>{
269
276
  const result = {
270
277
  _parentID: one(adapter.tables[parentTableName], {
271
278
  fields: [
@@ -273,18 +280,36 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
273
280
  ],
274
281
  references: [
275
282
  adapter.tables[parentTableName].id
276
- ]
283
+ ],
284
+ relationName: fieldName
277
285
  })
278
286
  };
279
287
  if (hasLocalesTable(field.fields)) {
280
- result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`]);
288
+ result._locales = many(adapter.tables[`${arrayTableName}${adapter.localesSuffix}`], {
289
+ relationName: '_locales'
290
+ });
281
291
  }
282
- subRelationsToBuild.forEach((val, key)=>{
283
- result[key] = many(adapter.tables[val]);
292
+ subRelationsToBuild.forEach(({ type, localized, target }, key)=>{
293
+ if (type === 'one') {
294
+ const arrayWithLocalized = localized ? `${arrayTableName}${adapter.localesSuffix}` : arrayTableName;
295
+ result[key] = one(adapter.tables[target], {
296
+ fields: [
297
+ adapter.tables[arrayWithLocalized][key]
298
+ ],
299
+ references: [
300
+ adapter.tables[target].id
301
+ ],
302
+ relationName: key
303
+ });
304
+ }
305
+ if (type === 'many') {
306
+ result[key] = many(adapter.tables[target], {
307
+ relationName: key
308
+ });
309
+ }
284
310
  });
285
311
  return result;
286
312
  });
287
- adapter.relations[`relations_${arrayTableName}`] = arrayTableRelations;
288
313
  break;
289
314
  }
290
315
  case 'blocks':
@@ -343,7 +368,7 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
343
368
  if (subHasManyNumberField) {
344
369
  if (!hasManyNumberField || subHasManyNumberField === 'index') hasManyNumberField = subHasManyNumberField;
345
370
  }
346
- const blockTableRelations = relations(adapter.tables[blockTableName], ({ many, one })=>{
371
+ adapter.relations[`relations_${blockTableName}`] = relations(adapter.tables[blockTableName], ({ many, one })=>{
347
372
  const result = {
348
373
  _parentID: one(adapter.tables[rootTableName], {
349
374
  fields: [
@@ -351,18 +376,36 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
351
376
  ],
352
377
  references: [
353
378
  adapter.tables[rootTableName].id
354
- ]
379
+ ],
380
+ relationName: `_blocks_${block.slug}`
355
381
  })
356
382
  };
357
383
  if (hasLocalesTable(block.fields)) {
358
- result._locales = many(adapter.tables[`${blockTableName}${adapter.localesSuffix}`]);
384
+ result._locales = many(adapter.tables[`${blockTableName}${adapter.localesSuffix}`], {
385
+ relationName: '_locales'
386
+ });
359
387
  }
360
- subRelationsToBuild.forEach((val, key)=>{
361
- result[key] = many(adapter.tables[val]);
388
+ subRelationsToBuild.forEach(({ type, localized, target }, key)=>{
389
+ if (type === 'one') {
390
+ const blockWithLocalized = localized ? `${blockTableName}${adapter.localesSuffix}` : blockTableName;
391
+ result[key] = one(adapter.tables[target], {
392
+ fields: [
393
+ adapter.tables[blockWithLocalized][key]
394
+ ],
395
+ references: [
396
+ adapter.tables[target].id
397
+ ],
398
+ relationName: key
399
+ });
400
+ }
401
+ if (type === 'many') {
402
+ result[key] = many(adapter.tables[target], {
403
+ relationName: key
404
+ });
405
+ }
362
406
  });
363
407
  return result;
364
408
  });
365
- adapter.relations[`relations_${blockTableName}`] = blockTableRelations;
366
409
  } else if (process.env.NODE_ENV !== 'production' && !versions) {
367
410
  validateExistingBlockIsIdentical({
368
411
  block,
@@ -372,7 +415,13 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
372
415
  tableLocales: adapter.tables[`${blockTableName}${adapter.localesSuffix}`]
373
416
  });
374
417
  }
375
- rootRelationsToBuild.set(`_blocks_${block.slug}`, blockTableName);
418
+ // blocks relationships are defined from the collection or globals table down to the block, bypassing any subBlocks
419
+ rootRelationsToBuild.set(`_blocks_${block.slug}`, {
420
+ type: 'many',
421
+ // blocks are not localized on the parent table
422
+ localized: false,
423
+ target: blockTableName
424
+ });
376
425
  });
377
426
  break;
378
427
  }
@@ -382,9 +431,6 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
382
431
  if (!('name' in field)) {
383
432
  const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField, hasManyTextField: groupHasManyTextField } = traverseFields({
384
433
  adapter,
385
- buildNumbers,
386
- buildRelationships,
387
- buildTexts,
388
434
  columnPrefix,
389
435
  columns,
390
436
  disableNotNull,
@@ -415,9 +461,6 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
415
461
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
416
462
  const { hasLocalizedField: groupHasLocalizedField, hasLocalizedManyNumberField: groupHasLocalizedManyNumberField, hasLocalizedManyTextField: groupHasLocalizedManyTextField, hasLocalizedRelationshipField: groupHasLocalizedRelationshipField, hasManyNumberField: groupHasManyNumberField, hasManyTextField: groupHasManyTextField } = traverseFields({
417
463
  adapter,
418
- buildNumbers,
419
- buildRelationships,
420
- buildTexts,
421
464
  columnPrefix: `${columnName}_`,
422
465
  columns,
423
466
  disableNotNull: disableNotNullFromHere,
@@ -450,9 +493,6 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
450
493
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
451
494
  const { hasLocalizedField: tabHasLocalizedField, hasLocalizedManyNumberField: tabHasLocalizedManyNumberField, hasLocalizedManyTextField: tabHasLocalizedManyTextField, hasLocalizedRelationshipField: tabHasLocalizedRelationshipField, hasManyNumberField: tabHasManyNumberField, hasManyTextField: tabHasManyTextField } = traverseFields({
452
495
  adapter,
453
- buildNumbers,
454
- buildRelationships,
455
- buildTexts,
456
496
  columnPrefix,
457
497
  columns,
458
498
  disableNotNull: disableNotNullFromHere,
@@ -489,9 +529,6 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
489
529
  const disableNotNullFromHere = Boolean(field.admin?.condition) || disableNotNull;
490
530
  const { hasLocalizedField: rowHasLocalizedField, hasLocalizedManyNumberField: rowHasLocalizedManyNumberField, hasLocalizedManyTextField: rowHasLocalizedManyTextField, hasLocalizedRelationshipField: rowHasLocalizedRelationshipField, hasManyNumberField: rowHasManyNumberField, hasManyTextField: rowHasManyTextField } = traverseFields({
491
531
  adapter,
492
- buildNumbers,
493
- buildRelationships,
494
- buildTexts,
495
532
  columnPrefix,
496
533
  columns,
497
534
  disableNotNull: disableNotNullFromHere,
@@ -523,10 +560,34 @@ export const traverseFields = ({ adapter, buildNumbers, buildRelationships, buil
523
560
  case 'upload':
524
561
  if (Array.isArray(field.relationTo)) {
525
562
  field.relationTo.forEach((relation)=>relationships.add(relation));
526
- } else {
563
+ } else if (field.type === 'relationship' && field.hasMany) {
527
564
  relationships.add(field.relationTo);
565
+ } else {
566
+ // simple relationships get a column on the targetTable with a foreign key to the relationTo table
567
+ const relationshipConfig = adapter.payload.collections[field.relationTo].config;
568
+ const tableName = adapter.tableNameMap.get(toSnakeCase(field.relationTo));
569
+ // get the id type of the related collection
570
+ let colType = adapter.idType === 'uuid' ? 'uuid' : 'integer';
571
+ const relatedCollectionCustomID = relationshipConfig.fields.find((field)=>fieldAffectsData(field) && field.name === 'id');
572
+ if (relatedCollectionCustomID?.type === 'number') colType = 'numeric';
573
+ if (relatedCollectionCustomID?.type === 'text') colType = 'varchar';
574
+ // make the foreign key column for relationship using the correct id column type
575
+ targetTable[fieldName] = parentIDColumnMap[colType](`${columnName}_id`).references(()=>adapter.tables[tableName].id, {
576
+ onDelete: 'set null'
577
+ });
578
+ // add relationship to table
579
+ relationsToBuild.set(fieldName, {
580
+ type: 'one',
581
+ localized: adapter.payload.config.localization && field.localized,
582
+ target: tableName
583
+ });
584
+ // add notNull when not required
585
+ if (!disableNotNull && field.required && !field.admin?.condition) {
586
+ targetTable[fieldName].notNull();
587
+ }
588
+ break;
528
589
  }
529
- if (field.localized && adapter.payload.config.localization) {
590
+ if (adapter.payload.config.localization && field.localized) {
530
591
  hasLocalizedRelationshipField = true;
531
592
  }
532
593
  break;