@payloadcms/drizzle 3.0.0-canary.98cbdb9 → 3.0.0-canary.98e0119

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 (330) 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/countGlobalVersions.d.ts +3 -0
  5. package/dist/countGlobalVersions.d.ts.map +1 -0
  6. package/dist/countGlobalVersions.js +27 -0
  7. package/dist/countGlobalVersions.js.map +1 -0
  8. package/dist/countVersions.d.ts +3 -0
  9. package/dist/countVersions.d.ts.map +1 -0
  10. package/dist/countVersions.js +27 -0
  11. package/dist/countVersions.js.map +1 -0
  12. package/dist/create.d.ts.map +1 -1
  13. package/dist/create.js +2 -1
  14. package/dist/create.js.map +1 -1
  15. package/dist/createGlobalVersion.d.ts +1 -1
  16. package/dist/createGlobalVersion.d.ts.map +1 -1
  17. package/dist/createGlobalVersion.js +7 -2
  18. package/dist/createGlobalVersion.js.map +1 -1
  19. package/dist/createTableName.d.ts.map +1 -1
  20. package/dist/createTableName.js +6 -2
  21. package/dist/createTableName.js.map +1 -1
  22. package/dist/createVersion.d.ts +1 -1
  23. package/dist/createVersion.d.ts.map +1 -1
  24. package/dist/createVersion.js +22 -14
  25. package/dist/createVersion.js.map +1 -1
  26. package/dist/deleteOne.d.ts.map +1 -1
  27. package/dist/deleteOne.js +6 -3
  28. package/dist/deleteOne.js.map +1 -1
  29. package/dist/deleteVersions.js +1 -1
  30. package/dist/deleteVersions.js.map +1 -1
  31. package/dist/destroy.d.ts.map +1 -1
  32. package/dist/destroy.js +3 -1
  33. package/dist/destroy.js.map +1 -1
  34. package/dist/exports/postgres.d.ts +15 -0
  35. package/dist/exports/postgres.d.ts.map +1 -0
  36. package/dist/exports/postgres.js +16 -0
  37. package/dist/exports/postgres.js.map +1 -0
  38. package/dist/find/buildFindManyArgs.d.ts +15 -7
  39. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  40. package/dist/find/buildFindManyArgs.js +40 -17
  41. package/dist/find/buildFindManyArgs.js.map +1 -1
  42. package/dist/find/findMany.d.ts +2 -1
  43. package/dist/find/findMany.d.ts.map +1 -1
  44. package/dist/find/findMany.js +12 -7
  45. package/dist/find/findMany.js.map +1 -1
  46. package/dist/find/traverseFields.d.ts +18 -4
  47. package/dist/find/traverseFields.d.ts.map +1 -1
  48. package/dist/find/traverseFields.js +359 -69
  49. package/dist/find/traverseFields.js.map +1 -1
  50. package/dist/find.d.ts.map +1 -1
  51. package/dist/find.js +4 -2
  52. package/dist/find.js.map +1 -1
  53. package/dist/findGlobal.d.ts.map +1 -1
  54. package/dist/findGlobal.js +2 -1
  55. package/dist/findGlobal.js.map +1 -1
  56. package/dist/findGlobalVersions.d.ts.map +1 -1
  57. package/dist/findGlobalVersions.js +4 -3
  58. package/dist/findGlobalVersions.js.map +1 -1
  59. package/dist/findMigrationDir.d.ts.map +1 -1
  60. package/dist/findMigrationDir.js +3 -1
  61. package/dist/findMigrationDir.js.map +1 -1
  62. package/dist/findOne.d.ts +1 -1
  63. package/dist/findOne.d.ts.map +1 -1
  64. package/dist/findOne.js +3 -1
  65. package/dist/findOne.js.map +1 -1
  66. package/dist/findVersions.d.ts.map +1 -1
  67. package/dist/findVersions.js +4 -3
  68. package/dist/findVersions.js.map +1 -1
  69. package/dist/index.d.ts +5 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +5 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/migrate.d.ts.map +1 -1
  74. package/dist/migrate.js +4 -0
  75. package/dist/migrate.js.map +1 -1
  76. package/dist/migrateDown.d.ts.map +1 -1
  77. package/dist/migrateDown.js +1 -1
  78. package/dist/migrateDown.js.map +1 -1
  79. package/dist/migrateFresh.d.ts.map +1 -1
  80. package/dist/migrateFresh.js +4 -0
  81. package/dist/migrateFresh.js.map +1 -1
  82. package/dist/migrateRefresh.d.ts.map +1 -1
  83. package/dist/migrateRefresh.js +2 -1
  84. package/dist/migrateRefresh.js.map +1 -1
  85. package/dist/migrateReset.d.ts.map +1 -1
  86. package/dist/migrateReset.js +5 -3
  87. package/dist/migrateReset.js.map +1 -1
  88. package/dist/migrateStatus.js +0 -1
  89. package/dist/migrateStatus.js.map +1 -1
  90. package/dist/postgres/countDistinct.d.ts +3 -0
  91. package/dist/postgres/countDistinct.d.ts.map +1 -0
  92. package/dist/postgres/countDistinct.js +23 -0
  93. package/dist/postgres/countDistinct.js.map +1 -0
  94. package/dist/postgres/createDatabase.d.ts +14 -0
  95. package/dist/postgres/createDatabase.d.ts.map +1 -0
  96. package/dist/postgres/createDatabase.js +76 -0
  97. package/dist/postgres/createDatabase.js.map +1 -0
  98. package/dist/postgres/createExtensions.d.ts +3 -0
  99. package/dist/postgres/createExtensions.d.ts.map +1 -0
  100. package/dist/postgres/createExtensions.js +16 -0
  101. package/dist/postgres/createExtensions.js.map +1 -0
  102. package/dist/postgres/createJSONQuery/index.d.ts +3 -0
  103. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -0
  104. package/dist/postgres/createJSONQuery/index.js +42 -0
  105. package/dist/postgres/createJSONQuery/index.js.map +1 -0
  106. package/dist/postgres/createMigration.d.ts +3 -0
  107. package/dist/postgres/createMigration.d.ts.map +1 -0
  108. package/dist/postgres/createMigration.js +88 -0
  109. package/dist/postgres/createMigration.js.map +1 -0
  110. package/dist/postgres/defaultSnapshot.d.ts +3 -0
  111. package/dist/postgres/defaultSnapshot.d.ts.map +1 -0
  112. package/dist/postgres/defaultSnapshot.js +20 -0
  113. package/dist/postgres/defaultSnapshot.js.map +1 -0
  114. package/dist/postgres/deleteWhere.d.ts +3 -0
  115. package/dist/postgres/deleteWhere.d.ts.map +1 -0
  116. package/dist/postgres/deleteWhere.js +6 -0
  117. package/dist/postgres/deleteWhere.js.map +1 -0
  118. package/dist/postgres/dropDatabase.d.ts +3 -0
  119. package/dist/postgres/dropDatabase.d.ts.map +1 -0
  120. package/dist/postgres/dropDatabase.js +9 -0
  121. package/dist/postgres/dropDatabase.js.map +1 -0
  122. package/dist/postgres/execute.d.ts +3 -0
  123. package/dist/postgres/execute.d.ts.map +1 -0
  124. package/dist/postgres/execute.js +11 -0
  125. package/dist/postgres/execute.js.map +1 -0
  126. package/dist/postgres/getMigrationTemplate.d.ts +4 -0
  127. package/dist/postgres/getMigrationTemplate.d.ts.map +1 -0
  128. package/dist/postgres/getMigrationTemplate.js +13 -0
  129. package/dist/postgres/getMigrationTemplate.js.map +1 -0
  130. package/dist/postgres/init.d.ts +3 -0
  131. package/dist/postgres/init.d.ts.map +1 -0
  132. package/dist/postgres/init.js +104 -0
  133. package/dist/postgres/init.js.map +1 -0
  134. package/dist/postgres/insert.d.ts +3 -0
  135. package/dist/postgres/insert.d.ts.map +1 -0
  136. package/dist/postgres/insert.js +12 -0
  137. package/dist/postgres/insert.js.map +1 -0
  138. package/dist/postgres/requireDrizzleKit.d.ts +3 -0
  139. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -0
  140. package/dist/postgres/requireDrizzleKit.js +5 -0
  141. package/dist/postgres/requireDrizzleKit.js.map +1 -0
  142. package/dist/postgres/schema/build.d.ts +42 -0
  143. package/dist/postgres/schema/build.d.ts.map +1 -0
  144. package/dist/postgres/schema/build.js +404 -0
  145. package/dist/postgres/schema/build.js.map +1 -0
  146. package/dist/postgres/schema/createIndex.d.ts +11 -0
  147. package/dist/postgres/schema/createIndex.d.ts.map +1 -0
  148. package/dist/postgres/schema/createIndex.js +20 -0
  149. package/dist/postgres/schema/createIndex.js.map +1 -0
  150. package/dist/postgres/schema/geometryColumn.d.ts +12 -0
  151. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -0
  152. package/dist/postgres/schema/geometryColumn.js +18 -0
  153. package/dist/postgres/schema/geometryColumn.js.map +1 -0
  154. package/dist/postgres/schema/idToUUID.d.ts +3 -0
  155. package/dist/postgres/schema/idToUUID.d.ts.map +1 -0
  156. package/dist/postgres/schema/idToUUID.js +11 -0
  157. package/dist/postgres/schema/idToUUID.js.map +1 -0
  158. package/dist/postgres/schema/parentIDColumnMap.d.ts +4 -0
  159. package/dist/postgres/schema/parentIDColumnMap.d.ts.map +1 -0
  160. package/dist/postgres/schema/parentIDColumnMap.js +9 -0
  161. package/dist/postgres/schema/parentIDColumnMap.js.map +1 -0
  162. package/dist/postgres/schema/setColumnID.d.ts +11 -0
  163. package/dist/postgres/schema/setColumnID.d.ts.map +1 -0
  164. package/dist/postgres/schema/setColumnID.js +24 -0
  165. package/dist/postgres/schema/setColumnID.js.map +1 -0
  166. package/dist/postgres/schema/traverseFields.d.ts +42 -0
  167. package/dist/postgres/schema/traverseFields.d.ts.map +1 -0
  168. package/dist/postgres/schema/traverseFields.js +743 -0
  169. package/dist/postgres/schema/traverseFields.js.map +1 -0
  170. package/dist/postgres/schema/withDefault.d.ts +4 -0
  171. package/dist/postgres/schema/withDefault.d.ts.map +1 -0
  172. package/dist/postgres/schema/withDefault.js +15 -0
  173. package/dist/postgres/schema/withDefault.js.map +1 -0
  174. package/dist/postgres/types.d.ts +142 -0
  175. package/dist/postgres/types.d.ts.map +1 -0
  176. package/dist/postgres/types.js +3 -0
  177. package/dist/postgres/types.js.map +1 -0
  178. package/dist/queries/addJoinTable.d.ts +11 -0
  179. package/dist/queries/addJoinTable.d.ts.map +1 -0
  180. package/dist/queries/addJoinTable.js +13 -0
  181. package/dist/queries/addJoinTable.js.map +1 -0
  182. package/dist/queries/buildAndOrConditions.d.ts +1 -1
  183. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  184. package/dist/queries/buildAndOrConditions.js +2 -4
  185. package/dist/queries/buildAndOrConditions.js.map +1 -1
  186. package/dist/queries/buildOrderBy.d.ts +18 -0
  187. package/dist/queries/buildOrderBy.d.ts.map +1 -0
  188. package/dist/queries/buildOrderBy.js +56 -0
  189. package/dist/queries/buildOrderBy.js.map +1 -0
  190. package/dist/queries/buildQuery.d.ts +8 -7
  191. package/dist/queries/buildQuery.d.ts.map +1 -1
  192. package/dist/queries/buildQuery.js +12 -47
  193. package/dist/queries/buildQuery.js.map +1 -1
  194. package/dist/queries/getTableColumnFromPath.d.ts +6 -2
  195. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  196. package/dist/queries/getTableColumnFromPath.js +271 -224
  197. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  198. package/dist/queries/operatorMap.d.ts.map +1 -1
  199. package/dist/queries/operatorMap.js +0 -4
  200. package/dist/queries/operatorMap.js.map +1 -1
  201. package/dist/queries/parseParams.d.ts +1 -1
  202. package/dist/queries/parseParams.d.ts.map +1 -1
  203. package/dist/queries/parseParams.js +85 -6
  204. package/dist/queries/parseParams.js.map +1 -1
  205. package/dist/queries/sanitizeQueryValue.d.ts +12 -1
  206. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  207. package/dist/queries/sanitizeQueryValue.js +89 -25
  208. package/dist/queries/sanitizeQueryValue.js.map +1 -1
  209. package/dist/queries/selectDistinct.d.ts +3 -4
  210. package/dist/queries/selectDistinct.d.ts.map +1 -1
  211. package/dist/queries/selectDistinct.js.map +1 -1
  212. package/dist/queryDrafts.d.ts.map +1 -1
  213. package/dist/queryDrafts.js +6 -6
  214. package/dist/queryDrafts.js.map +1 -1
  215. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  216. package/dist/transactions/beginTransaction.js +5 -1
  217. package/dist/transactions/beginTransaction.js.map +1 -1
  218. package/dist/transactions/commitTransaction.d.ts.map +1 -1
  219. package/dist/transactions/commitTransaction.js +3 -1
  220. package/dist/transactions/commitTransaction.js.map +1 -1
  221. package/dist/transform/read/hasManyNumber.d.ts +2 -1
  222. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  223. package/dist/transform/read/hasManyNumber.js +12 -2
  224. package/dist/transform/read/hasManyNumber.js.map +1 -1
  225. package/dist/transform/read/hasManyText.d.ts +2 -1
  226. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  227. package/dist/transform/read/hasManyText.js +12 -2
  228. package/dist/transform/read/hasManyText.js.map +1 -1
  229. package/dist/transform/read/index.d.ts +3 -2
  230. package/dist/transform/read/index.d.ts.map +1 -1
  231. package/dist/transform/read/index.js +3 -2
  232. package/dist/transform/read/index.js.map +1 -1
  233. package/dist/transform/read/relationship.d.ts +2 -1
  234. package/dist/transform/read/relationship.d.ts.map +1 -1
  235. package/dist/transform/read/relationship.js +15 -6
  236. package/dist/transform/read/relationship.js.map +1 -1
  237. package/dist/transform/read/traverseFields.d.ts +10 -2
  238. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  239. package/dist/transform/read/traverseFields.js +185 -71
  240. package/dist/transform/read/traverseFields.js.map +1 -1
  241. package/dist/transform/write/array.d.ts +6 -1
  242. package/dist/transform/write/array.d.ts.map +1 -1
  243. package/dist/transform/write/array.js +7 -3
  244. package/dist/transform/write/array.js.map +1 -1
  245. package/dist/transform/write/blocks.d.ts +8 -3
  246. package/dist/transform/write/blocks.d.ts.map +1 -1
  247. package/dist/transform/write/blocks.js +19 -7
  248. package/dist/transform/write/blocks.js.map +1 -1
  249. package/dist/transform/write/index.d.ts.map +1 -1
  250. package/dist/transform/write/index.js +1 -1
  251. package/dist/transform/write/index.js.map +1 -1
  252. package/dist/transform/write/relationships.d.ts.map +1 -1
  253. package/dist/transform/write/relationships.js +6 -2
  254. package/dist/transform/write/relationships.js.map +1 -1
  255. package/dist/transform/write/selects.d.ts.map +1 -1
  256. package/dist/transform/write/selects.js +1 -1
  257. package/dist/transform/write/selects.js.map +1 -1
  258. package/dist/transform/write/traverseFields.d.ts +6 -1
  259. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  260. package/dist/transform/write/traverseFields.js +62 -19
  261. package/dist/transform/write/traverseFields.js.map +1 -1
  262. package/dist/types.d.ts +6 -4
  263. package/dist/types.d.ts.map +1 -1
  264. package/dist/types.js.map +1 -1
  265. package/dist/update.d.ts.map +1 -1
  266. package/dist/update.js +4 -2
  267. package/dist/update.js.map +1 -1
  268. package/dist/updateGlobal.d.ts +1 -1
  269. package/dist/updateGlobal.d.ts.map +1 -1
  270. package/dist/updateGlobal.js +2 -1
  271. package/dist/updateGlobal.js.map +1 -1
  272. package/dist/updateGlobalVersion.d.ts +1 -1
  273. package/dist/updateGlobalVersion.d.ts.map +1 -1
  274. package/dist/updateGlobalVersion.js +4 -3
  275. package/dist/updateGlobalVersion.js.map +1 -1
  276. package/dist/updateVersion.d.ts +1 -1
  277. package/dist/updateVersion.d.ts.map +1 -1
  278. package/dist/updateVersion.js +4 -3
  279. package/dist/updateVersion.js.map +1 -1
  280. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  281. package/dist/upsertRow/deleteExistingRowsByPath.js +6 -2
  282. package/dist/upsertRow/deleteExistingRowsByPath.js.map +1 -1
  283. package/dist/upsertRow/index.d.ts +1 -1
  284. package/dist/upsertRow/index.d.ts.map +1 -1
  285. package/dist/upsertRow/index.js +51 -12
  286. package/dist/upsertRow/index.js.map +1 -1
  287. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  288. package/dist/upsertRow/insertArrays.js +5 -2
  289. package/dist/upsertRow/insertArrays.js.map +1 -1
  290. package/dist/upsertRow/types.d.ts +10 -5
  291. package/dist/upsertRow/types.d.ts.map +1 -1
  292. package/dist/upsertRow/types.js.map +1 -1
  293. package/dist/utilities/buildIndexName.d.ts +7 -0
  294. package/dist/utilities/buildIndexName.d.ts.map +1 -0
  295. package/dist/utilities/buildIndexName.js +14 -0
  296. package/dist/utilities/buildIndexName.js.map +1 -0
  297. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  298. package/dist/utilities/createBlocksMap.js +4 -2
  299. package/dist/utilities/createBlocksMap.js.map +1 -1
  300. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  301. package/dist/utilities/createRelationshipMap.js +3 -1
  302. package/dist/utilities/createRelationshipMap.js.map +1 -1
  303. package/dist/utilities/executeSchemaHooks.d.ts +24 -0
  304. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -0
  305. package/dist/utilities/executeSchemaHooks.js +21 -0
  306. package/dist/utilities/executeSchemaHooks.js.map +1 -0
  307. package/dist/utilities/extendDrizzleTable.d.ts +19 -0
  308. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -0
  309. package/dist/utilities/extendDrizzleTable.js +38 -0
  310. package/dist/utilities/extendDrizzleTable.js.map +1 -0
  311. package/dist/utilities/getCollectionIdType.d.ts +7 -0
  312. package/dist/utilities/getCollectionIdType.d.ts.map +1 -0
  313. package/dist/utilities/getCollectionIdType.js +11 -0
  314. package/dist/utilities/getCollectionIdType.js.map +1 -0
  315. package/dist/utilities/getNameFromDrizzleTable.d.ts +3 -0
  316. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -0
  317. package/dist/utilities/getNameFromDrizzleTable.js +6 -0
  318. package/dist/utilities/getNameFromDrizzleTable.js.map +1 -0
  319. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  320. package/dist/utilities/hasLocalesTable.js +12 -4
  321. package/dist/utilities/hasLocalesTable.js.map +1 -1
  322. package/dist/utilities/isPolymorphicRelationship.d.ts +6 -0
  323. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -0
  324. package/dist/utilities/isPolymorphicRelationship.js +5 -0
  325. package/dist/utilities/isPolymorphicRelationship.js.map +1 -0
  326. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  327. package/dist/utilities/pushDevSchema.js +5 -0
  328. package/dist/utilities/pushDevSchema.js.map +1 -1
  329. package/license.md +22 -0
  330. package/package.json +22 -8
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import { count } from 'drizzle-orm'\n\nimport type { ChainedMethods, TransactionPg } from '../types.js'\nimport type { BasePostgresAdapter, CountDistinct } from './types.js'\n\nimport { chainMethods } from '../find/chainMethods.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BasePostgresAdapter,\n { db, joins, tableName, where },\n) {\n const chainedMethods: ChainedMethods = []\n\n joins.forEach(({ condition, table }) => {\n chainedMethods.push({\n args: [table, condition],\n method: 'leftJoin',\n })\n })\n\n const countResult = await chainMethods({\n methods: chainedMethods,\n query: (db as TransactionPg)\n .select({\n count: count(),\n })\n .from(this.tables[tableName])\n .where(where),\n })\n\n return Number(countResult[0].count)\n}\n"],"names":["count","chainMethods","countDistinct","db","joins","tableName","where","chainedMethods","forEach","condition","table","push","args","method","countResult","methods","query","select","from","tables","Number"],"mappings":"AAAA,SAASA,KAAK,QAAQ,cAAa;AAKnC,SAASC,YAAY,QAAQ,0BAAyB;AAEtD,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAE/B,MAAMC,iBAAiC,EAAE;IAEzCH,MAAMI,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;QACjCH,eAAeI,IAAI,CAAC;YAClBC,MAAM;gBAACF;gBAAOD;aAAU;YACxBI,QAAQ;QACV;IACF;IAEA,MAAMC,cAAc,MAAMb,aAAa;QACrCc,SAASR;QACTS,OAAO,AAACb,GACLc,MAAM,CAAC;YACNjB,OAAOA;QACT,GACCkB,IAAI,CAAC,IAAI,CAACC,MAAM,CAACd,UAAU,EAC3BC,KAAK,CAACA;IACX;IAEA,OAAOc,OAAON,WAAW,CAAC,EAAE,CAACd,KAAK;AACpC,EAAC"}
@@ -0,0 +1,14 @@
1
+ import type { BasePostgresAdapter } from './types.js';
2
+ type Args = {
3
+ /**
4
+ * Name of a database, defaults to the current one
5
+ */
6
+ name?: string;
7
+ /**
8
+ * Schema to create in addition to 'public'. Defaults to adapter.schemaName if exists.
9
+ */
10
+ schemaName?: string;
11
+ };
12
+ export declare const createDatabase: (this: BasePostgresAdapter, args?: Args) => Promise<boolean>;
13
+ export {};
14
+ //# sourceMappingURL=createDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createDatabase.d.ts","sourceRoot":"","sources":["../../src/postgres/createDatabase.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAgBrD,KAAK,IAAI,GAAG;IACV;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,cAAc,SAAyB,mBAAmB,SAAQ,IAAI,qBAkFlF,CAAA"}
@@ -0,0 +1,76 @@
1
+ const setConnectionStringDatabase = ({ connectionString, database })=>{
2
+ const connectionURL = new URL(connectionString);
3
+ const newConnectionURL = new URL(connectionURL);
4
+ newConnectionURL.pathname = `/${database}`;
5
+ return newConnectionURL.toString();
6
+ };
7
+ export const createDatabase = async function(args = {}) {
8
+ // POSTGRES_URL - default Vercel env
9
+ const connectionString = this.poolOptions?.connectionString ?? process.env.POSTGRES_URL ?? process.env.DATABASE_URL;
10
+ let managementClientConfig = {};
11
+ let dbName = args.name;
12
+ const schemaName = this.schemaName || 'public';
13
+ if (connectionString) {
14
+ if (!dbName) {
15
+ dbName = new URL(connectionString).pathname.slice(1);
16
+ }
17
+ managementClientConfig.connectionString = setConnectionStringDatabase({
18
+ connectionString,
19
+ database: 'postgres'
20
+ });
21
+ } else {
22
+ if (!dbName) {
23
+ dbName = this.poolOptions.database;
24
+ }
25
+ managementClientConfig = {
26
+ ...this.poolOptions,
27
+ database: 'postgres'
28
+ };
29
+ }
30
+ // import pg only when createDatabase is used
31
+ const pg = await import('pg').then((mod)=>mod.default);
32
+ const managementClient = new pg.Client(managementClientConfig);
33
+ try {
34
+ await managementClient.connect();
35
+ await managementClient.query(`CREATE DATABASE "${dbName}"`);
36
+ this.payload.logger.info(`Created database "${dbName}"`);
37
+ if (schemaName !== 'public') {
38
+ let createdDatabaseConfig = {};
39
+ if (connectionString) {
40
+ createdDatabaseConfig.connectionString = setConnectionStringDatabase({
41
+ connectionString,
42
+ database: dbName
43
+ });
44
+ } else {
45
+ createdDatabaseConfig = {
46
+ ...this.poolOptions,
47
+ database: dbName
48
+ };
49
+ }
50
+ const createdDatabaseClient = new pg.Client(createdDatabaseConfig);
51
+ try {
52
+ await createdDatabaseClient.connect();
53
+ await createdDatabaseClient.query(`CREATE SCHEMA ${schemaName}`);
54
+ this.payload.logger.info(`Created schema "${dbName}.${schemaName}"`);
55
+ } catch (err) {
56
+ this.payload.logger.error({
57
+ err,
58
+ msg: `Error: failed to create schema "${dbName}.${schemaName}". Details: ${err.message}`
59
+ });
60
+ } finally{
61
+ await createdDatabaseClient.end();
62
+ }
63
+ }
64
+ return true;
65
+ } catch (err) {
66
+ this.payload.logger.error({
67
+ err,
68
+ msg: `Error: failed to create database ${dbName}. Details: ${err.message}`
69
+ });
70
+ return false;
71
+ } finally{
72
+ await managementClient.end();
73
+ }
74
+ };
75
+
76
+ //# sourceMappingURL=createDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/createDatabase.ts"],"sourcesContent":["import type { ClientConfig } from 'pg'\n\nimport type { BasePostgresAdapter } from './types.js'\n\nconst setConnectionStringDatabase = ({\n connectionString,\n database,\n}: {\n connectionString: string\n database: string\n}): string => {\n const connectionURL = new URL(connectionString)\n const newConnectionURL = new URL(connectionURL)\n newConnectionURL.pathname = `/${database}`\n\n return newConnectionURL.toString()\n}\n\ntype Args = {\n /**\n * Name of a database, defaults to the current one\n */\n name?: string\n /**\n * Schema to create in addition to 'public'. Defaults to adapter.schemaName if exists.\n */\n schemaName?: string\n}\nexport const createDatabase = async function (this: BasePostgresAdapter, args: Args = {}) {\n // POSTGRES_URL - default Vercel env\n const connectionString =\n this.poolOptions?.connectionString ?? process.env.POSTGRES_URL ?? process.env.DATABASE_URL\n let managementClientConfig: ClientConfig = {}\n let dbName = args.name\n const schemaName = this.schemaName || 'public'\n\n if (connectionString) {\n if (!dbName) {\n dbName = new URL(connectionString).pathname.slice(1)\n }\n\n managementClientConfig.connectionString = setConnectionStringDatabase({\n connectionString,\n database: 'postgres',\n })\n } else {\n if (!dbName) {\n dbName = this.poolOptions.database\n }\n\n managementClientConfig = {\n ...this.poolOptions,\n database: 'postgres',\n }\n }\n\n // import pg only when createDatabase is used\n const pg = await import('pg').then((mod) => mod.default)\n\n const managementClient = new pg.Client(managementClientConfig)\n\n try {\n await managementClient.connect()\n await managementClient.query(`CREATE DATABASE \"${dbName}\"`)\n\n this.payload.logger.info(`Created database \"${dbName}\"`)\n\n if (schemaName !== 'public') {\n let createdDatabaseConfig: ClientConfig = {}\n\n if (connectionString) {\n createdDatabaseConfig.connectionString = setConnectionStringDatabase({\n connectionString,\n database: dbName,\n })\n } else {\n createdDatabaseConfig = {\n ...this.poolOptions,\n database: dbName,\n }\n }\n\n const createdDatabaseClient = new pg.Client(createdDatabaseConfig)\n\n try {\n await createdDatabaseClient.connect()\n\n await createdDatabaseClient.query(`CREATE SCHEMA ${schemaName}`)\n this.payload.logger.info(`Created schema \"${dbName}.${schemaName}\"`)\n } catch (err) {\n this.payload.logger.error({\n err,\n msg: `Error: failed to create schema \"${dbName}.${schemaName}\". Details: ${err.message}`,\n })\n } finally {\n await createdDatabaseClient.end()\n }\n }\n\n return true\n } catch (err) {\n this.payload.logger.error({\n err,\n msg: `Error: failed to create database ${dbName}. Details: ${err.message}`,\n })\n\n return false\n } finally {\n await managementClient.end()\n }\n}\n"],"names":["setConnectionStringDatabase","connectionString","database","connectionURL","URL","newConnectionURL","pathname","toString","createDatabase","args","poolOptions","process","env","POSTGRES_URL","DATABASE_URL","managementClientConfig","dbName","name","schemaName","slice","pg","then","mod","default","managementClient","Client","connect","query","payload","logger","info","createdDatabaseConfig","createdDatabaseClient","err","error","msg","message","end"],"mappings":"AAIA,MAAMA,8BAA8B,CAAC,EACnCC,gBAAgB,EAChBC,QAAQ,EAIT;IACC,MAAMC,gBAAgB,IAAIC,IAAIH;IAC9B,MAAMI,mBAAmB,IAAID,IAAID;IACjCE,iBAAiBC,QAAQ,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC;IAE1C,OAAOG,iBAAiBE,QAAQ;AAClC;AAYA,OAAO,MAAMC,iBAAiB,eAA2CC,OAAa,CAAC,CAAC;IACtF,oCAAoC;IACpC,MAAMR,mBACJ,IAAI,CAACS,WAAW,EAAET,oBAAoBU,QAAQC,GAAG,CAACC,YAAY,IAAIF,QAAQC,GAAG,CAACE,YAAY;IAC5F,IAAIC,yBAAuC,CAAC;IAC5C,IAAIC,SAASP,KAAKQ,IAAI;IACtB,MAAMC,aAAa,IAAI,CAACA,UAAU,IAAI;IAEtC,IAAIjB,kBAAkB;QACpB,IAAI,CAACe,QAAQ;YACXA,SAAS,IAAIZ,IAAIH,kBAAkBK,QAAQ,CAACa,KAAK,CAAC;QACpD;QAEAJ,uBAAuBd,gBAAgB,GAAGD,4BAA4B;YACpEC;YACAC,UAAU;QACZ;IACF,OAAO;QACL,IAAI,CAACc,QAAQ;YACXA,SAAS,IAAI,CAACN,WAAW,CAACR,QAAQ;QACpC;QAEAa,yBAAyB;YACvB,GAAG,IAAI,CAACL,WAAW;YACnBR,UAAU;QACZ;IACF;IAEA,6CAA6C;IAC7C,MAAMkB,KAAK,MAAM,MAAM,CAAC,MAAMC,IAAI,CAAC,CAACC,MAAQA,IAAIC,OAAO;IAEvD,MAAMC,mBAAmB,IAAIJ,GAAGK,MAAM,CAACV;IAEvC,IAAI;QACF,MAAMS,iBAAiBE,OAAO;QAC9B,MAAMF,iBAAiBG,KAAK,CAAC,CAAC,iBAAiB,EAAEX,OAAO,CAAC,CAAC;QAE1D,IAAI,CAACY,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,kBAAkB,EAAEd,OAAO,CAAC,CAAC;QAEvD,IAAIE,eAAe,UAAU;YAC3B,IAAIa,wBAAsC,CAAC;YAE3C,IAAI9B,kBAAkB;gBACpB8B,sBAAsB9B,gBAAgB,GAAGD,4BAA4B;oBACnEC;oBACAC,UAAUc;gBACZ;YACF,OAAO;gBACLe,wBAAwB;oBACtB,GAAG,IAAI,CAACrB,WAAW;oBACnBR,UAAUc;gBACZ;YACF;YAEA,MAAMgB,wBAAwB,IAAIZ,GAAGK,MAAM,CAACM;YAE5C,IAAI;gBACF,MAAMC,sBAAsBN,OAAO;gBAEnC,MAAMM,sBAAsBL,KAAK,CAAC,CAAC,cAAc,EAAET,WAAW,CAAC;gBAC/D,IAAI,CAACU,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,gBAAgB,EAAEd,OAAO,CAAC,EAAEE,WAAW,CAAC,CAAC;YACrE,EAAE,OAAOe,KAAK;gBACZ,IAAI,CAACL,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC;oBACxBD;oBACAE,KAAK,CAAC,gCAAgC,EAAEnB,OAAO,CAAC,EAAEE,WAAW,YAAY,EAAEe,IAAIG,OAAO,CAAC,CAAC;gBAC1F;YACF,SAAU;gBACR,MAAMJ,sBAAsBK,GAAG;YACjC;QACF;QAEA,OAAO;IACT,EAAE,OAAOJ,KAAK;QACZ,IAAI,CAACL,OAAO,CAACC,MAAM,CAACK,KAAK,CAAC;YACxBD;YACAE,KAAK,CAAC,iCAAiC,EAAEnB,OAAO,WAAW,EAAEiB,IAAIG,OAAO,CAAC,CAAC;QAC5E;QAEA,OAAO;IACT,SAAU;QACR,MAAMZ,iBAAiBa,GAAG;IAC5B;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { BasePostgresAdapter } from './types.js';
2
+ export declare const createExtensions: (this: BasePostgresAdapter) => Promise<void>;
3
+ //# sourceMappingURL=createExtensions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createExtensions.d.ts","sourceRoot":"","sources":["../../src/postgres/createExtensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAErD,eAAO,MAAM,gBAAgB,SAAyB,mBAAmB,KAAG,OAAO,CAAC,IAAI,CAUvF,CAAA"}
@@ -0,0 +1,16 @@
1
+ export const createExtensions = async function() {
2
+ for(const extension in this.extensions){
3
+ if (this.extensions[extension]) {
4
+ try {
5
+ await this.drizzle.execute(`CREATE EXTENSION IF NOT EXISTS "${extension}"`);
6
+ } catch (err) {
7
+ this.payload.logger.error({
8
+ err,
9
+ msg: `Failed to create extension ${extension}`
10
+ });
11
+ }
12
+ }
13
+ }
14
+ };
15
+
16
+ //# sourceMappingURL=createExtensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/createExtensions.ts"],"sourcesContent":["import type { BasePostgresAdapter } from './types.js'\n\nexport const createExtensions = async function (this: BasePostgresAdapter): Promise<void> {\n for (const extension in this.extensions) {\n if (this.extensions[extension]) {\n try {\n await this.drizzle.execute(`CREATE EXTENSION IF NOT EXISTS \"${extension}\"`)\n } catch (err) {\n this.payload.logger.error({ err, msg: `Failed to create extension ${extension}` })\n }\n }\n }\n}\n"],"names":["createExtensions","extension","extensions","drizzle","execute","err","payload","logger","error","msg"],"mappings":"AAEA,OAAO,MAAMA,mBAAmB;IAC9B,IAAK,MAAMC,aAAa,IAAI,CAACC,UAAU,CAAE;QACvC,IAAI,IAAI,CAACA,UAAU,CAACD,UAAU,EAAE;YAC9B,IAAI;gBACF,MAAM,IAAI,CAACE,OAAO,CAACC,OAAO,CAAC,CAAC,gCAAgC,EAAEH,UAAU,CAAC,CAAC;YAC5E,EAAE,OAAOI,KAAK;gBACZ,IAAI,CAACC,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;oBAAEH;oBAAKI,KAAK,CAAC,2BAA2B,EAAER,UAAU,CAAC;gBAAC;YAClF;QACF;IACF;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CreateJSONQueryArgs } from '../../types.js';
2
+ export declare const createJSONQuery: ({ column, operator, pathSegments, value }: CreateJSONQueryArgs) => string;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAoBzD,eAAO,MAAM,eAAe,8CAA+C,mBAAmB,WAsB7F,CAAA"}
@@ -0,0 +1,42 @@
1
+ const operatorMap = {
2
+ contains: '~',
3
+ equals: '==',
4
+ in: 'in',
5
+ like: 'like_regex',
6
+ not_equals: '!=',
7
+ not_in: 'in'
8
+ };
9
+ const sanitizeValue = (value, operator)=>{
10
+ if (typeof value === 'string') {
11
+ // ignore casing with like
12
+ return `"${operator === 'like' ? '(?i)' : ''}${value}"`;
13
+ }
14
+ return value;
15
+ };
16
+ export const createJSONQuery = ({ column, operator, pathSegments, value })=>{
17
+ const columnName = typeof column === 'object' ? column.name : column;
18
+ const jsonPaths = pathSegments.slice(1).map((key)=>{
19
+ return `${key}[*]`;
20
+ }).join('.');
21
+ let sql = '';
22
+ if ([
23
+ 'in',
24
+ 'not_in'
25
+ ].includes(operator) && Array.isArray(value)) {
26
+ value.forEach((item, i)=>{
27
+ sql = `${sql}${createJSONQuery({
28
+ column,
29
+ operator: operator === 'in' ? 'equals' : 'not_equals',
30
+ pathSegments,
31
+ value: item
32
+ })}${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`;
33
+ });
34
+ } else if (operator === 'exists') {
35
+ sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '$.${jsonPaths}')`;
36
+ } else {
37
+ sql = `jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`;
38
+ }
39
+ return sql;
40
+ };
41
+
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/postgres/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\nconst operatorMap: Record<string, string> = {\n contains: '~',\n equals: '==',\n in: 'in',\n like: 'like_regex',\n not_equals: '!=',\n not_in: 'in',\n}\n\nconst sanitizeValue = (value: unknown, operator?: string) => {\n if (typeof value === 'string') {\n // ignore casing with like\n return `\"${operator === 'like' ? '(?i)' : ''}${value}\"`\n }\n\n return value as string\n}\n\nexport const createJSONQuery = ({ column, operator, pathSegments, value }: CreateJSONQueryArgs) => {\n const columnName = typeof column === 'object' ? column.name : column\n const jsonPaths = pathSegments\n .slice(1)\n .map((key) => {\n return `${key}[*]`\n })\n .join('.')\n\n let sql = ''\n\n if (['in', 'not_in'].includes(operator) && Array.isArray(value)) {\n value.forEach((item, i) => {\n sql = `${sql}${createJSONQuery({ column, operator: operator === 'in' ? 'equals' : 'not_equals', pathSegments, value: item })}${i === value.length - 1 ? '' : ` ${operator === 'in' ? 'OR' : 'AND'} `}`\n })\n } else if (operator === 'exists') {\n sql = `${value === false ? 'NOT ' : ''}jsonb_path_exists(${columnName}, '$.${jsonPaths}')`\n } else {\n sql = `jsonb_path_exists(${columnName}, '$.${jsonPaths} ? (@ ${operatorMap[operator]} ${sanitizeValue(value, operator)})')`\n }\n\n return sql\n}\n"],"names":["operatorMap","contains","equals","in","like","not_equals","not_in","sanitizeValue","value","operator","createJSONQuery","column","pathSegments","columnName","name","jsonPaths","slice","map","key","join","sql","includes","Array","isArray","forEach","item","i","length"],"mappings":"AAEA,MAAMA,cAAsC;IAC1CC,UAAU;IACVC,QAAQ;IACRC,IAAI;IACJC,MAAM;IACNC,YAAY;IACZC,QAAQ;AACV;AAEA,MAAMC,gBAAgB,CAACC,OAAgBC;IACrC,IAAI,OAAOD,UAAU,UAAU;QAC7B,0BAA0B;QAC1B,OAAO,CAAC,CAAC,EAAEC,aAAa,SAAS,SAAS,GAAG,EAAED,MAAM,CAAC,CAAC;IACzD;IAEA,OAAOA;AACT;AAEA,OAAO,MAAME,kBAAkB,CAAC,EAAEC,MAAM,EAAEF,QAAQ,EAAEG,YAAY,EAAEJ,KAAK,EAAuB;IAC5F,MAAMK,aAAa,OAAOF,WAAW,WAAWA,OAAOG,IAAI,GAAGH;IAC9D,MAAMI,YAAYH,aACfI,KAAK,CAAC,GACNC,GAAG,CAAC,CAACC;QACJ,OAAO,CAAC,EAAEA,IAAI,GAAG,CAAC;IACpB,GACCC,IAAI,CAAC;IAER,IAAIC,MAAM;IAEV,IAAI;QAAC;QAAM;KAAS,CAACC,QAAQ,CAACZ,aAAaa,MAAMC,OAAO,CAACf,QAAQ;QAC/DA,MAAMgB,OAAO,CAAC,CAACC,MAAMC;YACnBN,MAAM,CAAC,EAAEA,IAAI,EAAEV,gBAAgB;gBAAEC;gBAAQF,UAAUA,aAAa,OAAO,WAAW;gBAAcG;gBAAcJ,OAAOiB;YAAK,GAAG,EAAEC,MAAMlB,MAAMmB,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,EAAElB,aAAa,OAAO,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QACxM;IACF,OAAO,IAAIA,aAAa,UAAU;QAChCW,MAAM,CAAC,EAAEZ,UAAU,QAAQ,SAAS,GAAG,kBAAkB,EAAEK,WAAW,KAAK,EAAEE,UAAU,EAAE,CAAC;IAC5F,OAAO;QACLK,MAAM,CAAC,kBAAkB,EAAEP,WAAW,KAAK,EAAEE,UAAU,MAAM,EAAEf,WAAW,CAACS,SAAS,CAAC,CAAC,EAAEF,cAAcC,OAAOC,UAAU,GAAG,CAAC;IAC7H;IAEA,OAAOW;AACT,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CreateMigration } from 'payload';
2
+ export declare const createMigration: CreateMigration;
3
+ //# sourceMappingURL=createMigration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createMigration.d.ts","sourceRoot":"","sources":["../../src/postgres/createMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAc9C,eAAO,MAAM,eAAe,EAAE,eAuG7B,CAAA"}
@@ -0,0 +1,88 @@
1
+ import fs from 'fs';
2
+ import { createRequire } from 'module';
3
+ import { getPredefinedMigration, writeMigrationIndex } from 'payload';
4
+ import prompts from 'prompts';
5
+ import { defaultDrizzleSnapshot } from './defaultSnapshot.js';
6
+ import { getMigrationTemplate } from './getMigrationTemplate.js';
7
+ const require = createRequire(import.meta.url);
8
+ export const createMigration = async function createMigration({ dirname, file, forceAcceptWarning, migrationName, payload }) {
9
+ const dir = payload.db.migrationDir;
10
+ if (!fs.existsSync(dir)) {
11
+ fs.mkdirSync(dir);
12
+ }
13
+ const { generateDrizzleJson, generateMigration, upPgSnapshot } = require('drizzle-kit/api');
14
+ const drizzleJsonAfter = generateDrizzleJson(this.schema);
15
+ const [yyymmdd, hhmmss] = new Date().toISOString().split('T');
16
+ const formattedDate = yyymmdd.replace(/\D/g, '');
17
+ const formattedTime = hhmmss.split('.')[0].replace(/\D/g, '');
18
+ let imports = '';
19
+ let downSQL;
20
+ let upSQL;
21
+ ({ downSQL, imports, upSQL } = await getPredefinedMigration({
22
+ dirname,
23
+ file,
24
+ migrationName,
25
+ payload
26
+ }));
27
+ const timestamp = `${formattedDate}_${formattedTime}`;
28
+ const name = migrationName || file?.split('/').slice(2).join('/');
29
+ const fileName = `${timestamp}${name ? `_${name.replace(/\W/g, '_')}` : ''}`;
30
+ const filePath = `${dir}/${fileName}`;
31
+ let drizzleJsonBefore = defaultDrizzleSnapshot;
32
+ if (this.schemaName) {
33
+ drizzleJsonBefore.schemas = {
34
+ [this.schemaName]: this.schemaName
35
+ };
36
+ }
37
+ if (!upSQL) {
38
+ // Get latest migration snapshot
39
+ const latestSnapshot = fs.readdirSync(dir).filter((file)=>file.endsWith('.json')).sort().reverse()?.[0];
40
+ if (latestSnapshot) {
41
+ drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'));
42
+ if (drizzleJsonBefore.version < drizzleJsonAfter.version) {
43
+ drizzleJsonBefore = upPgSnapshot(drizzleJsonBefore);
44
+ }
45
+ }
46
+ const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter);
47
+ const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore);
48
+ const sqlExecute = 'await payload.db.drizzle.execute(sql`';
49
+ if (sqlStatementsUp?.length) {
50
+ upSQL = `${sqlExecute}\n ${sqlStatementsUp?.join('\n')}\`)`;
51
+ }
52
+ if (sqlStatementsDown?.length) {
53
+ downSQL = `${sqlExecute}\n ${sqlStatementsDown?.join('\n')}\`)`;
54
+ }
55
+ if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {
56
+ const { confirm: shouldCreateBlankMigration } = await prompts({
57
+ name: 'confirm',
58
+ type: 'confirm',
59
+ initial: false,
60
+ message: 'No schema changes detected. Would you like to create a blank migration file?'
61
+ }, {
62
+ onCancel: ()=>{
63
+ process.exit(0);
64
+ }
65
+ });
66
+ if (!shouldCreateBlankMigration) {
67
+ process.exit(0);
68
+ }
69
+ }
70
+ // write schema
71
+ fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2));
72
+ }
73
+ // write migration
74
+ fs.writeFileSync(`${filePath}.ts`, getMigrationTemplate({
75
+ downSQL: downSQL || ` // Migration code`,
76
+ imports,
77
+ packageName: payload.db.packageName,
78
+ upSQL: upSQL || ` // Migration code`
79
+ }));
80
+ writeMigrationIndex({
81
+ migrationsDir: payload.db.migrationDir
82
+ });
83
+ payload.logger.info({
84
+ msg: `Migration created at ${filePath}.ts`
85
+ });
86
+ };
87
+
88
+ //# sourceMappingURL=createMigration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/createMigration.ts"],"sourcesContent":["import type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\n\nimport type { BasePostgresAdapter } from './types.js'\n\nimport { defaultDrizzleSnapshot } from './defaultSnapshot.js'\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nconst require = createRequire(import.meta.url)\n\nexport const createMigration: CreateMigration = async function createMigration(\n this: BasePostgresAdapter,\n { dirname, file, forceAcceptWarning, migrationName, payload },\n) {\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n const { generateDrizzleJson, generateMigration, upPgSnapshot } = require('drizzle-kit/api')\n const drizzleJsonAfter = generateDrizzleJson(this.schema)\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n ;({ downSQL, imports, upSQL } = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n }))\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n let drizzleJsonBefore = defaultDrizzleSnapshot\n\n if (this.schemaName) {\n drizzleJsonBefore.schemas = {\n [this.schemaName]: this.schemaName,\n }\n }\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'))\n\n if (drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upPgSnapshot(drizzleJsonBefore)\n }\n }\n\n const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore)\n const sqlExecute = 'await payload.db.drizzle.execute(sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = `${sqlExecute}\\n ${sqlStatementsUp?.join('\\n')}\\`)`\n }\n if (sqlStatementsDown?.length) {\n downSQL = `${sqlExecute}\\n ${sqlStatementsDown?.join('\\n')}\\`)`\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {\n const { confirm: shouldCreateBlankMigration } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!shouldCreateBlankMigration) {\n process.exit(0)\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n // write migration\n fs.writeFileSync(\n `${filePath}.ts`,\n getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n packageName: payload.db.packageName,\n upSQL: upSQL || ` // Migration code`,\n }),\n )\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}.ts` })\n}\n"],"names":["fs","createRequire","getPredefinedMigration","writeMigrationIndex","prompts","defaultDrizzleSnapshot","getMigrationTemplate","require","url","createMigration","dirname","file","forceAcceptWarning","migrationName","payload","dir","db","migrationDir","existsSync","mkdirSync","generateDrizzleJson","generateMigration","upPgSnapshot","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","timestamp","name","slice","join","fileName","filePath","drizzleJsonBefore","schemaName","schemas","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","version","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","confirm","shouldCreateBlankMigration","type","initial","message","onCancel","process","exit","writeFileSync","stringify","packageName","migrationsDir","logger","info","msg"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { DrizzleSnapshotJSON } from 'drizzle-kit/api';
2
+ export declare const defaultDrizzleSnapshot: DrizzleSnapshotJSON;
3
+ //# sourceMappingURL=defaultSnapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaultSnapshot.d.ts","sourceRoot":"","sources":["../../src/postgres/defaultSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAE1D,eAAO,MAAM,sBAAsB,EAAE,mBAiBpC,CAAA"}
@@ -0,0 +1,20 @@
1
+ export const defaultDrizzleSnapshot = {
2
+ id: '00000000-0000-0000-0000-000000000000',
3
+ _meta: {
4
+ columns: {},
5
+ schemas: {},
6
+ tables: {}
7
+ },
8
+ dialect: 'postgresql',
9
+ enums: {},
10
+ policies: {},
11
+ prevId: '00000000-0000-0000-0000-00000000000',
12
+ roles: {},
13
+ schemas: {},
14
+ sequences: {},
15
+ tables: {},
16
+ version: '7',
17
+ views: {}
18
+ };
19
+
20
+ //# sourceMappingURL=defaultSnapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/defaultSnapshot.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\n\nexport const defaultDrizzleSnapshot: DrizzleSnapshotJSON = {\n id: '00000000-0000-0000-0000-000000000000',\n _meta: {\n columns: {},\n schemas: {},\n tables: {},\n },\n dialect: 'postgresql',\n enums: {},\n policies: {},\n prevId: '00000000-0000-0000-0000-00000000000',\n roles: {},\n schemas: {},\n sequences: {},\n tables: {},\n version: '7',\n views: {},\n}\n"],"names":["defaultDrizzleSnapshot","id","_meta","columns","schemas","tables","dialect","enums","policies","prevId","roles","sequences","version","views"],"mappings":"AAEA,OAAO,MAAMA,yBAA8C;IACzDC,IAAI;IACJC,OAAO;QACLC,SAAS,CAAC;QACVC,SAAS,CAAC;QACVC,QAAQ,CAAC;IACX;IACAC,SAAS;IACTC,OAAO,CAAC;IACRC,UAAU,CAAC;IACXC,QAAQ;IACRC,OAAO,CAAC;IACRN,SAAS,CAAC;IACVO,WAAW,CAAC;IACZN,QAAQ,CAAC;IACTO,SAAS;IACTC,OAAO,CAAC;AACV,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DeleteWhere } from './types.js';
2
+ export declare const deleteWhere: DeleteWhere;
3
+ //# sourceMappingURL=deleteWhere.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteWhere.d.ts","sourceRoot":"","sources":["../../src/postgres/deleteWhere.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,eAAO,MAAM,WAAW,EAAE,WAGzB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export const deleteWhere = async function deleteWhere({ db, tableName, where }) {
2
+ const table = this.tables[tableName];
3
+ await db.delete(table).where(where);
4
+ };
5
+
6
+ //# sourceMappingURL=deleteWhere.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/deleteWhere.ts"],"sourcesContent":["import type { TransactionPg } from '../types.js'\nimport type { DeleteWhere } from './types.js'\n\nexport const deleteWhere: DeleteWhere = async function deleteWhere({ db, tableName, where }) {\n const table = this.tables[tableName]\n await (db as TransactionPg).delete(table).where(where)\n}\n"],"names":["deleteWhere","db","tableName","where","table","tables","delete"],"mappings":"AAGA,OAAO,MAAMA,cAA2B,eAAeA,YAAY,EAAEC,EAAE,EAAEC,SAAS,EAAEC,KAAK,EAAE;IACzF,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACH,UAAU;IACpC,MAAM,AAACD,GAAqBK,MAAM,CAACF,OAAOD,KAAK,CAACA;AAClD,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { DropDatabase } from './types.js';
2
+ export declare const dropDatabase: DropDatabase;
3
+ //# sourceMappingURL=dropDatabase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropDatabase.d.ts","sourceRoot":"","sources":["../../src/postgres/dropDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,eAAO,MAAM,YAAY,EAAE,YAM1B,CAAA"}
@@ -0,0 +1,9 @@
1
+ export const dropDatabase = async function dropDatabase({ adapter }) {
2
+ await adapter.execute({
3
+ drizzle: adapter.drizzle,
4
+ raw: `drop schema if exists ${this.schemaName || 'public'} cascade;
5
+ create schema ${this.schemaName || 'public'};`
6
+ });
7
+ };
8
+
9
+ //# sourceMappingURL=dropDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/dropDatabase.ts"],"sourcesContent":["import type { DropDatabase } from './types.js'\n\nexport const dropDatabase: DropDatabase = async function dropDatabase({ adapter }) {\n await adapter.execute({\n drizzle: adapter.drizzle,\n raw: `drop schema if exists ${this.schemaName || 'public'} cascade;\n create schema ${this.schemaName || 'public'};`,\n })\n}\n"],"names":["dropDatabase","adapter","execute","drizzle","raw","schemaName"],"mappings":"AAEA,OAAO,MAAMA,eAA6B,eAAeA,aAAa,EAAEC,OAAO,EAAE;IAC/E,MAAMA,QAAQC,OAAO,CAAC;QACpBC,SAASF,QAAQE,OAAO;QACxBC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAACC,UAAU,IAAI,SAAS;kBAC5C,EAAE,IAAI,CAACA,UAAU,IAAI,SAAS,CAAC,CAAC;IAChD;AACF,EAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Execute } from './types.js';
2
+ export declare const execute: Execute<any>;
3
+ //# sourceMappingURL=execute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../src/postgres/execute.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEzC,eAAO,MAAM,OAAO,EAAE,OAAO,CAAC,GAAG,CAQhC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { sql } from 'drizzle-orm';
2
+ export const execute = function execute({ db, drizzle, raw, sql: statement }) {
3
+ const executeFrom = db ?? drizzle;
4
+ if (raw) {
5
+ return executeFrom.execute(sql.raw(raw));
6
+ } else {
7
+ return executeFrom.execute(sql`${statement}`);
8
+ }
9
+ };
10
+
11
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/execute.ts"],"sourcesContent":["import { sql } from 'drizzle-orm'\n\nimport type { Execute } from './types.js'\n\nexport const execute: Execute<any> = function execute({ db, drizzle, raw, sql: statement }) {\n const executeFrom = db ?? drizzle\n\n if (raw) {\n return executeFrom.execute(sql.raw(raw))\n } else {\n return executeFrom.execute(sql`${statement}`)\n }\n}\n"],"names":["sql","execute","db","drizzle","raw","statement","executeFrom"],"mappings":"AAAA,SAASA,GAAG,QAAQ,cAAa;AAIjC,OAAO,MAAMC,UAAwB,SAASA,QAAQ,EAAEC,EAAE,EAAEC,OAAO,EAAEC,GAAG,EAAEJ,KAAKK,SAAS,EAAE;IACxF,MAAMC,cAAcJ,MAAMC;IAE1B,IAAIC,KAAK;QACP,OAAOE,YAAYL,OAAO,CAACD,IAAII,GAAG,CAACA;IACrC,OAAO;QACL,OAAOE,YAAYL,OAAO,CAACD,GAAG,CAAC,EAAEK,UAAU,CAAC;IAC9C;AACF,EAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MigrationTemplateArgs } from 'payload';
2
+ export declare const indent: (text: string) => string;
3
+ export declare const getMigrationTemplate: ({ downSQL, imports, packageName, upSQL, }: MigrationTemplateArgs) => string;
4
+ //# sourceMappingURL=getMigrationTemplate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getMigrationTemplate.d.ts","sourceRoot":"","sources":["../../src/postgres/getMigrationTemplate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAA;AAEpD,eAAO,MAAM,MAAM,SAAU,MAAM,WAIpB,CAAA;AAEf,eAAO,MAAM,oBAAoB,8CAK9B,qBAAqB,KAAG,MAS1B,CAAA"}
@@ -0,0 +1,13 @@
1
+ export const indent = (text)=>text.split('\n').map((line)=>` ${line}`).join('\n');
2
+ export const getMigrationTemplate = ({ downSQL, imports, packageName, upSQL })=>`import { MigrateUpArgs, MigrateDownArgs, sql } from '${packageName}'
3
+ ${imports ? `${imports}\n` : ''}
4
+ export async function up({ payload, req }: MigrateUpArgs): Promise<void> {
5
+ ${indent(upSQL)}
6
+ }
7
+
8
+ export async function down({ payload, req }: MigrateDownArgs): Promise<void> {
9
+ ${indent(downSQL)}
10
+ }
11
+ `;
12
+
13
+ //# sourceMappingURL=getMigrationTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/postgres/getMigrationTemplate.ts"],"sourcesContent":["import type { MigrationTemplateArgs } from 'payload'\n\nexport const indent = (text: string) =>\n text\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n')\n\nexport const getMigrationTemplate = ({\n downSQL,\n imports,\n packageName,\n upSQL,\n}: MigrationTemplateArgs): string => `import { MigrateUpArgs, MigrateDownArgs, sql } from '${packageName}'\n${imports ? `${imports}\\n` : ''}\nexport async function up({ payload, req }: MigrateUpArgs): Promise<void> {\n${indent(upSQL)}\n}\n\nexport async function down({ payload, req }: MigrateDownArgs): Promise<void> {\n${indent(downSQL)}\n}\n`\n"],"names":["indent","text","split","map","line","join","getMigrationTemplate","downSQL","imports","packageName","upSQL"],"mappings":"AAEA,OAAO,MAAMA,SAAS,CAACC,OACrBA,KACGC,KAAK,CAAC,MACNC,GAAG,CAAC,CAACC,OAAS,CAAC,EAAE,EAAEA,KAAK,CAAC,EACzBC,IAAI,CAAC,MAAK;AAEf,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,OAAO,EACPC,OAAO,EACPC,WAAW,EACXC,KAAK,EACiB,GAAa,CAAC,qDAAqD,EAAED,YAAY;AACzG,EAAED,UAAU,CAAC,EAAEA,QAAQ,EAAE,CAAC,GAAG,GAAG;;AAEhC,EAAER,OAAOU,OAAO;;;;AAIhB,EAAEV,OAAOO,SAAS;;AAElB,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { Init } from 'payload';
2
+ export declare const init: Init;
3
+ //# sourceMappingURL=init.d.ts.map
@@ -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,IAyGlB,CAAA"}
@@ -0,0 +1,104 @@
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
+ tableName,
48
+ timestamps: collection.timestamps,
49
+ versions: false
50
+ });
51
+ if (collection.versions) {
52
+ const versionsTableName = this.tableNameMap.get(`_${toSnakeCase(collection.slug)}${this.versionsSuffix}`);
53
+ const versionFields = buildVersionCollectionFields(this.payload.config, collection);
54
+ buildTable({
55
+ adapter: this,
56
+ disableNotNull: !!collection.versions?.drafts,
57
+ disableUnique: true,
58
+ fields: versionFields,
59
+ tableName: versionsTableName,
60
+ timestamps: true,
61
+ versions: true
62
+ });
63
+ }
64
+ });
65
+ this.payload.config.globals.forEach((global)=>{
66
+ const tableName = createTableName({
67
+ adapter: this,
68
+ config: global
69
+ });
70
+ buildTable({
71
+ adapter: this,
72
+ disableNotNull: !!global?.versions?.drafts,
73
+ disableUnique: false,
74
+ fields: global.fields,
75
+ tableName,
76
+ timestamps: false,
77
+ versions: false
78
+ });
79
+ if (global.versions) {
80
+ const versionsTableName = createTableName({
81
+ adapter: this,
82
+ config: global,
83
+ versions: true,
84
+ versionsCustomName: true
85
+ });
86
+ const versionFields = buildVersionGlobalFields(this.payload.config, global);
87
+ buildTable({
88
+ adapter: this,
89
+ disableNotNull: !!global.versions?.drafts,
90
+ disableUnique: true,
91
+ fields: versionFields,
92
+ tableName: versionsTableName,
93
+ timestamps: true,
94
+ versions: true
95
+ });
96
+ }
97
+ });
98
+ await executeSchemaHooks({
99
+ type: 'afterSchemaInit',
100
+ adapter: this
101
+ });
102
+ };
103
+
104
+ //# 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 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","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"}