@payloadcms/drizzle 4.0.0-internal.1f9ae9a → 4.0.0-internal.2071af3

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 (302) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/createTableName.d.ts.map +1 -1
  3. package/dist/createTableName.js +2 -7
  4. package/dist/createTableName.js.map +1 -1
  5. package/dist/exports/postgres.d.ts +5 -1
  6. package/dist/exports/postgres.d.ts.map +1 -1
  7. package/dist/exports/postgres.js +5 -1
  8. package/dist/exports/postgres.js.map +1 -1
  9. package/dist/exports/sqlite.d.ts +3 -1
  10. package/dist/exports/sqlite.d.ts.map +1 -1
  11. package/dist/exports/sqlite.js +3 -1
  12. package/dist/exports/sqlite.js.map +1 -1
  13. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  14. package/dist/find/buildPolymorphicJoinQuery.d.ts +39 -0
  15. package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
  16. package/dist/find/buildPolymorphicJoinQuery.js +146 -0
  17. package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
  18. package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
  19. package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
  20. package/dist/find/buildPolymorphicJoinWhere.js +301 -0
  21. package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
  22. package/dist/find/createPolymorphicJoinWherePlan.d.ts +38 -0
  23. package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
  24. package/dist/find/createPolymorphicJoinWherePlan.js +200 -0
  25. package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
  26. package/dist/find/findMany.d.ts.map +1 -1
  27. package/dist/find/traverseFields.d.ts.map +1 -1
  28. package/dist/find/traverseFields.js +21 -193
  29. package/dist/find/traverseFields.js.map +1 -1
  30. package/dist/index.d.ts +4 -11
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -9
  33. package/dist/index.js.map +1 -1
  34. package/dist/migrate.d.ts.map +1 -1
  35. package/dist/migrate.js +41 -15
  36. package/dist/migrate.js.map +1 -1
  37. package/dist/migrateDown.d.ts +2 -1
  38. package/dist/migrateDown.d.ts.map +1 -1
  39. package/dist/migrateDown.js +17 -4
  40. package/dist/migrateDown.js.map +1 -1
  41. package/dist/migrateFresh.d.ts +4 -2
  42. package/dist/migrateFresh.d.ts.map +1 -1
  43. package/dist/migrateFresh.js +26 -9
  44. package/dist/migrateFresh.js.map +1 -1
  45. package/dist/migrateRefresh.d.ts +2 -1
  46. package/dist/migrateRefresh.d.ts.map +1 -1
  47. package/dist/migrateRefresh.js +20 -5
  48. package/dist/migrateRefresh.js.map +1 -1
  49. package/dist/migrateReset.d.ts +2 -1
  50. package/dist/migrateReset.d.ts.map +1 -1
  51. package/dist/migrateReset.js +18 -4
  52. package/dist/migrateReset.js.map +1 -1
  53. package/dist/migrateStatus.d.ts +2 -1
  54. package/dist/migrateStatus.d.ts.map +1 -1
  55. package/dist/migrateStatus.js +11 -6
  56. package/dist/migrateStatus.js.map +1 -1
  57. package/dist/postgres/createDatabase.d.ts.map +1 -1
  58. package/dist/postgres/createExtensions.d.ts.map +1 -1
  59. package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
  60. package/dist/postgres/createJSONQuery/index.js +3 -3
  61. package/dist/postgres/createJSONQuery/index.js.map +1 -1
  62. package/dist/postgres/init.d.ts.map +1 -1
  63. package/dist/postgres/init.js +6 -0
  64. package/dist/postgres/init.js.map +1 -1
  65. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts +11 -0
  66. package/dist/postgres/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  67. package/dist/postgres/predefinedMigrations/localize-status/index.js +296 -0
  68. package/dist/postgres/predefinedMigrations/localize-status/index.js.map +1 -0
  69. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts +13 -0
  70. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  71. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js +51 -0
  72. package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  73. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +13 -0
  74. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  75. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js +54 -0
  76. package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  77. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
  78. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  79. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
  80. package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  81. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
  82. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
  83. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
  84. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
  85. package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
  86. package/dist/postgres/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -1
  87. package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
  88. package/dist/postgres/predefinedMigrations/v2-v3/index.js +2 -2
  89. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  90. package/dist/postgres/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
  91. package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
  92. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
  93. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
  94. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
  95. package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
  96. package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
  97. package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
  98. package/dist/postgres/query/postgresUnaccent.js +40 -0
  99. package/dist/postgres/query/postgresUnaccent.js.map +1 -0
  100. package/dist/postgres/requireDrizzleKit.d.ts +4 -0
  101. package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
  102. package/dist/postgres/requireDrizzleKit.js +16 -10
  103. package/dist/postgres/requireDrizzleKit.js.map +1 -1
  104. package/dist/postgres/schema/buildDrizzleTable.d.ts.map +1 -1
  105. package/dist/postgres/schema/geometryColumn.d.ts +2 -2
  106. package/dist/postgres/schema/geometryColumn.d.ts.map +1 -1
  107. package/dist/postgres/types.d.ts +13 -2
  108. package/dist/postgres/types.d.ts.map +1 -1
  109. package/dist/postgres/types.js.map +1 -1
  110. package/dist/queries/addJoinTable.d.ts +1 -1
  111. package/dist/queries/addJoinTable.d.ts.map +1 -1
  112. package/dist/queries/buildOperatorConstraint.d.ts +22 -0
  113. package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
  114. package/dist/queries/buildOperatorConstraint.js +63 -0
  115. package/dist/queries/buildOperatorConstraint.js.map +1 -0
  116. package/dist/queries/buildOrderBy.d.ts +1 -1
  117. package/dist/queries/buildOrderBy.d.ts.map +1 -1
  118. package/dist/queries/buildQuery.d.ts.map +1 -1
  119. package/dist/queries/getTableAlias.d.ts.map +1 -1
  120. package/dist/queries/getTableColumnFromPath.d.ts +12 -3
  121. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  122. package/dist/queries/getTableColumnFromPath.js +61 -29
  123. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  124. package/dist/queries/operatorMap.d.ts +7 -3
  125. package/dist/queries/operatorMap.d.ts.map +1 -1
  126. package/dist/queries/operatorMap.js.map +1 -1
  127. package/dist/queries/parseParams.d.ts.map +1 -1
  128. package/dist/queries/parseParams.js +262 -10
  129. package/dist/queries/parseParams.js.map +1 -1
  130. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  131. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  132. package/dist/queries/resolveRelationshipPath.js +66 -0
  133. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  134. package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
  135. package/dist/queries/selectDistinct.d.ts.map +1 -1
  136. package/dist/queries/validateOperatorHandlers.d.ts +8 -0
  137. package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
  138. package/dist/queries/validateOperatorHandlers.js +30 -0
  139. package/dist/queries/validateOperatorHandlers.js.map +1 -0
  140. package/dist/schema/build.d.ts.map +1 -1
  141. package/dist/schema/build.js +3 -3
  142. package/dist/schema/build.js.map +1 -1
  143. package/dist/schema/buildDrizzleRelations.d.ts.map +1 -1
  144. package/dist/schema/buildRawSchema.d.ts.map +1 -1
  145. package/dist/schema/idToUUID.d.ts.map +1 -1
  146. package/dist/schema/traverseFields.d.ts.map +1 -1
  147. package/dist/schema/traverseFields.js +7 -6
  148. package/dist/schema/traverseFields.js.map +1 -1
  149. package/dist/schema/withDefault.d.ts.map +1 -1
  150. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
  151. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
  152. package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
  153. package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
  154. package/dist/sqlite/createJSONQuery/index.js +6 -5
  155. package/dist/sqlite/createJSONQuery/index.js.map +1 -1
  156. package/dist/sqlite/createRequireDrizzleKit.d.ts +6 -0
  157. package/dist/sqlite/createRequireDrizzleKit.d.ts.map +1 -0
  158. package/dist/sqlite/createRequireDrizzleKit.js +15 -0
  159. package/dist/sqlite/createRequireDrizzleKit.js.map +1 -0
  160. package/dist/sqlite/execute.js.map +1 -1
  161. package/dist/sqlite/insert.d.ts.map +1 -1
  162. package/dist/sqlite/insert.js +4 -1
  163. package/dist/sqlite/insert.js.map +1 -1
  164. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts +28 -0
  165. package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts.map +1 -0
  166. package/dist/sqlite/predefinedMigrations/localize-status/index.js +198 -0
  167. package/dist/sqlite/predefinedMigrations/localize-status/index.js.map +1 -0
  168. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts +12 -0
  169. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
  170. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js +24 -0
  171. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
  172. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +12 -0
  173. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
  174. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js +28 -0
  175. package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
  176. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
  177. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
  178. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
  179. package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
  180. package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
  181. package/dist/transform/read/hasManyText.d.ts.map +1 -1
  182. package/dist/transform/read/index.d.ts.map +1 -1
  183. package/dist/transform/read/relationship.d.ts.map +1 -1
  184. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  185. package/dist/transform/read/traverseFields.js +2 -2
  186. package/dist/transform/read/traverseFields.js.map +1 -1
  187. package/dist/transform/write/array.d.ts.map +1 -1
  188. package/dist/transform/write/blocks.d.ts.map +1 -1
  189. package/dist/transform/write/blocks.js +1 -1
  190. package/dist/transform/write/blocks.js.map +1 -1
  191. package/dist/transform/write/index.d.ts.map +1 -1
  192. package/dist/transform/write/numbers.d.ts.map +1 -1
  193. package/dist/transform/write/relationships.d.ts.map +1 -1
  194. package/dist/transform/write/selects.d.ts.map +1 -1
  195. package/dist/transform/write/texts.d.ts.map +1 -1
  196. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  197. package/dist/transform/write/traverseFields.js +10 -17
  198. package/dist/transform/write/traverseFields.js.map +1 -1
  199. package/dist/types.d.ts +52 -8
  200. package/dist/types.d.ts.map +1 -1
  201. package/dist/types.js +1 -3
  202. package/dist/types.js.map +1 -1
  203. package/dist/updateJobs.d.ts.map +1 -1
  204. package/dist/updateJobs.js +37 -0
  205. package/dist/updateJobs.js.map +1 -1
  206. package/dist/updateOne.d.ts.map +1 -1
  207. package/dist/updateOne.js +41 -1
  208. package/dist/updateOne.js.map +1 -1
  209. package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
  210. package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
  211. package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
  212. package/dist/upsertRow/handleUpsertError.js +2 -1
  213. package/dist/upsertRow/handleUpsertError.js.map +1 -1
  214. package/dist/upsertRow/index.d.ts +1 -1
  215. package/dist/upsertRow/index.d.ts.map +1 -1
  216. package/dist/upsertRow/index.js +30 -7
  217. package/dist/upsertRow/index.js.map +1 -1
  218. package/dist/upsertRow/insertArrays.d.ts.map +1 -1
  219. package/dist/upsertRow/insertArrays.js +2 -1
  220. package/dist/upsertRow/insertArrays.js.map +1 -1
  221. package/dist/upsertRow/shouldUseOptimizedUpsertRow.d.ts.map +1 -1
  222. package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
  223. package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
  224. package/dist/utilities/blocksToJsonMigrator.js +7 -18
  225. package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
  226. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  227. package/dist/utilities/buildCreateMigration.js +13 -9
  228. package/dist/utilities/buildCreateMigration.js.map +1 -1
  229. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
  230. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
  231. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
  232. package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
  233. package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
  234. package/dist/utilities/buildForeignKeyName.js +3 -2
  235. package/dist/utilities/buildForeignKeyName.js.map +1 -1
  236. package/dist/utilities/buildIndexName.d.ts.map +1 -1
  237. package/dist/utilities/buildIndexName.js +3 -2
  238. package/dist/utilities/buildIndexName.js.map +1 -1
  239. package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
  240. package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
  241. package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
  242. package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
  243. package/dist/utilities/createBlocksMap.d.ts.map +1 -1
  244. package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
  245. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  246. package/dist/utilities/createSchemaGenerator.js +10 -12
  247. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  248. package/dist/utilities/escapeSQLValue.d.ts.map +1 -1
  249. package/dist/utilities/executeSchemaHooks.d.ts.map +1 -1
  250. package/dist/utilities/executeSchemaHooks.js +1 -1
  251. package/dist/utilities/executeSchemaHooks.js.map +1 -1
  252. package/dist/utilities/extendDrizzleTable.d.ts.map +1 -1
  253. package/dist/utilities/formatGeneratedFile.d.ts +10 -0
  254. package/dist/utilities/formatGeneratedFile.d.ts.map +1 -0
  255. package/dist/utilities/formatGeneratedFile.js +58 -0
  256. package/dist/utilities/formatGeneratedFile.js.map +1 -0
  257. package/dist/utilities/getArrayRelationName.d.ts.map +1 -1
  258. package/dist/utilities/getCollectionIdType.d.ts.map +1 -1
  259. package/dist/utilities/getMigrationTemplate.d.ts.map +1 -1
  260. package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -1
  261. package/dist/utilities/getPrimaryDb.d.ts +1 -1
  262. package/dist/utilities/getPrimaryDb.d.ts.map +1 -1
  263. package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
  264. package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
  265. package/dist/utilities/getSizesToVariantsRenames.js +251 -0
  266. package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
  267. package/dist/utilities/getTransaction.d.ts +1 -1
  268. package/dist/utilities/getTransaction.d.ts.map +1 -1
  269. package/dist/utilities/getTransaction.js.map +1 -1
  270. package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
  271. package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -1
  272. package/dist/utilities/isUUIDType.d.ts.map +1 -1
  273. package/dist/utilities/json.d.ts.map +1 -1
  274. package/dist/utilities/migrationTableExists.d.ts.map +1 -1
  275. package/dist/utilities/parseError.d.ts.map +1 -1
  276. package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
  277. package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
  278. package/dist/utilities/parseJSONPathSegment.js +17 -0
  279. package/dist/utilities/parseJSONPathSegment.js.map +1 -0
  280. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  281. package/dist/utilities/pushDevSchema.js +1 -1
  282. package/dist/utilities/pushDevSchema.js.map +1 -1
  283. package/dist/utilities/rawConstraint.d.ts.map +1 -1
  284. package/dist/utilities/sanitizePathSegment.d.ts.map +1 -1
  285. package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
  286. package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
  287. package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
  288. package/dist/utilities/validateIdentifierLength.d.ts +12 -0
  289. package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
  290. package/dist/utilities/validateIdentifierLength.js +18 -0
  291. package/dist/utilities/validateIdentifierLength.js.map +1 -0
  292. package/package.json +17 -19
  293. package/dist/find/chainMethods.d.ts +0 -20
  294. package/dist/find/chainMethods.d.ts.map +0 -1
  295. package/dist/find/chainMethods.js +0 -16
  296. package/dist/find/chainMethods.js.map +0 -1
  297. package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
  298. package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
  299. package/dist/sqlite/requireDrizzleKit.js +0 -12
  300. package/dist/sqlite/requireDrizzleKit.js.map +0 -1
  301. package/dist/utilities/isValidStringID.spec.js +0 -15
  302. package/dist/utilities/isValidStringID.spec.js.map +0 -1
package/dist/types.d.ts CHANGED
@@ -4,14 +4,14 @@ import type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-post
4
4
  import type { PgColumn, PgTable, PgTransaction, Precision, UpdateDeleteAction } from 'drizzle-orm/pg-core';
5
5
  import type { SQLiteColumn, SQLiteTable, SQLiteTransaction } from 'drizzle-orm/sqlite-core';
6
6
  import type { Result } from 'drizzle-orm/sqlite-core/session';
7
- import type { BaseDatabaseAdapter, FlattenedField, MigrationData, Payload, PayloadRequest } from 'payload';
7
+ import type { BaseDatabaseAdapter, FlattenedField, MigrationData, Operator, Payload, PayloadRequest } from 'payload';
8
8
  import type { BuildQueryJoinAliases } from './queries/buildQuery.js';
9
9
  export { BuildQueryJoinAliases };
10
10
  import type { ResultSet } from '@libsql/client';
11
11
  import type { DrizzleSnapshotJSON } from 'drizzle-kit/api';
12
12
  import type { SQLiteRaw } from 'drizzle-orm/sqlite-core/query-builders/raw';
13
13
  import type { QueryResult } from 'pg';
14
- import type { Operators } from './queries/operatorMap.js';
14
+ import type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js';
15
15
  export type PostgresDB = NodePgDatabase<Record<string, unknown>>;
16
16
  export type SQLiteDB = LibSQLDatabase<Record<string, GenericRelation | GenericTable> & Record<string, unknown>>;
17
17
  export type GenericPgColumn = PgColumn<ColumnBaseConfig<ColumnDataType, string>, Record<string, unknown>>;
@@ -67,7 +67,7 @@ export type Insert = (args: {
67
67
  tableName: string;
68
68
  values: Record<string, unknown> | Record<string, unknown>[];
69
69
  }) => Promise<Record<string, unknown>[]>;
70
- export type RequireDrizzleKit = () => {
70
+ export type RequireDrizzleKit = () => Promise<{
71
71
  generateDrizzleJson: (args: Record<string, unknown>) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>;
72
72
  generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>;
73
73
  pushSchema: (schema: Record<string, unknown>, drizzle: DrizzleAdapter['drizzle'], filterSchema?: string[], tablesFilter?: string[], extensionsFilter?: string[]) => Promise<{
@@ -76,7 +76,7 @@ export type RequireDrizzleKit = () => {
76
76
  warnings: any;
77
77
  }>;
78
78
  upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON;
79
- };
79
+ }>;
80
80
  export type Migration = {
81
81
  down: ({ db, payload, req, }: {
82
82
  db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB;
@@ -273,6 +273,53 @@ export interface BlocksToJsonMigrator {
273
273
  setTempFolder(tempFolderPath: string): void;
274
274
  updatePayloadConfigFile(): Promise<void>;
275
275
  }
276
+ /**
277
+ * The information passed to a query-operator handler for one user-facing leaf comparison.
278
+ */
279
+ export type DrizzleOperatorHandlerContext = {
280
+ adapter: DrizzleAdapter;
281
+ column: Column | SQL;
282
+ field: FlattenedField;
283
+ locale?: string;
284
+ /** The operator supplied by the Payload query, before any adapter conversions. */
285
+ originalOperator: Operator;
286
+ path: string;
287
+ /** The operator actually sent to the database after Payload's existing conversions. */
288
+ resolvedOperator: DrizzleResolvedOperator;
289
+ storage: 'column';
290
+ value: unknown;
291
+ };
292
+ /**
293
+ * Transforms the column and/or value of a matching operator before the default (or replacement)
294
+ * comparison runs. Multiple matching transform handlers compose in configuration order.
295
+ */
296
+ export type DrizzleOperandTransformHandler = {
297
+ build?: never;
298
+ /** Restricts the handler to these Payload field types. Omit to match every field type. */
299
+ fieldTypes?: FlattenedField['type'][];
300
+ name: string;
301
+ operators: DrizzleResolvedOperator[];
302
+ transformOperands: (context: DrizzleOperatorHandlerContext) => {
303
+ column: Column | SQL;
304
+ value: unknown;
305
+ };
306
+ };
307
+ /**
308
+ * Replaces the default comparison for a matching operator entirely. Runs after every matching
309
+ * `transformOperands` handler has already run.
310
+ */
311
+ export type DrizzleOperatorReplacementHandler = {
312
+ build: (context: DrizzleOperatorHandlerContext) => SQL;
313
+ /** Restricts the handler to these Payload field types. Omit to match every field type. */
314
+ fieldTypes?: FlattenedField['type'][];
315
+ name: string;
316
+ operators: DrizzleResolvedOperator[];
317
+ transformOperands?: never;
318
+ };
319
+ export type DrizzleOperatorHandler = DrizzleOperandTransformHandler | DrizzleOperatorReplacementHandler;
320
+ export type DrizzleQueryConfig = {
321
+ operatorHandlers?: DrizzleOperatorHandler[];
322
+ };
276
323
  export interface DrizzleAdapter extends BaseDatabaseAdapter {
277
324
  blocksAsJSON?: boolean;
278
325
  blocksToJsonMigrator?: BlocksToJsonMigrator;
@@ -307,6 +354,7 @@ export interface DrizzleAdapter extends BaseDatabaseAdapter {
307
354
  limitedBoundParameters?: boolean;
308
355
  localesSuffix?: string;
309
356
  logger: DrizzleConfig['logger'];
357
+ operatorHandlers: DrizzleOperatorHandler[];
310
358
  operators: Operators;
311
359
  /**
312
360
  * When read replicas are configured, holds the unwrapped primary drizzle instance
@@ -348,8 +396,4 @@ export type RelationMap = Map<string, {
348
396
  target: string;
349
397
  type: 'many' | 'one';
350
398
  }>;
351
- /**
352
- * @deprecated - will be removed in 4.0. Use query + $dynamic() instead: https://orm.drizzle.team/docs/dynamic-query-building
353
- */
354
- export type { ChainedMethods } from './find/chainMethods.js';
355
399
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,5 +1,3 @@
1
- /**
2
- * @deprecated - will be removed in 4.0. Use query + $dynamic() instead: https://orm.drizzle.team/docs/dynamic-query-building
3
- */ export { };
1
+ export { };
4
2
 
5
3
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n Column,\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n SQL,\n TableRelationalConfig,\n} from 'drizzle-orm'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgTable,\n PgTransaction,\n Precision,\n UpdateDeleteAction,\n} from 'drizzle-orm/pg-core'\nimport type { SQLiteColumn, SQLiteTable, SQLiteTransaction } from 'drizzle-orm/sqlite-core'\nimport type { Result } from 'drizzle-orm/sqlite-core/session'\nimport type {\n BaseDatabaseAdapter,\n FlattenedField,\n MigrationData,\n Payload,\n PayloadRequest,\n} from 'payload'\n\nimport type { BuildQueryJoinAliases } from './queries/buildQuery.js'\n\nexport { BuildQueryJoinAliases }\n\nimport type { ResultSet } from '@libsql/client'\nimport type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { SQLiteRaw } from 'drizzle-orm/sqlite-core/query-builders/raw'\nimport type { QueryResult } from 'pg'\n\nimport type { Operators } from './queries/operatorMap.js'\n\nexport type PostgresDB = NodePgDatabase<Record<string, unknown>>\n\nexport type SQLiteDB = LibSQLDatabase<\n Record<string, GenericRelation | GenericTable> & Record<string, unknown>\n>\n\nexport type GenericPgColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns<T> = {\n [x: string]: T\n}\n\ntype GenericPgTable = PgTable<{\n columns: GenericColumns<GenericPgColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\ntype GenericSQLiteTable = SQLiteTable<{\n columns: GenericColumns<SQLiteColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericColumn = GenericPgColumn | SQLiteColumn\n\nexport type GenericTable = GenericPgTable | GenericSQLiteTable\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type TransactionSQLite = SQLiteTransaction<\n 'async',\n Result<'async', unknown>,\n Record<string, unknown>,\n { tsName: TableRelationalConfig }\n>\nexport type TransactionPg = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type DrizzleTransaction = TransactionPg | TransactionSQLite\n\nexport type CountDistinct = (args: {\n column?: PgColumn<any> | SQLiteColumn<any>\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n joins: BuildQueryJoinAliases\n tableName: string\n where: SQL\n}) => Promise<number>\n\nexport type DeleteWhere = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n tableName: string\n where: SQL\n}) => Promise<void>\n\nexport type DropDatabase = (args: { adapter: DrizzleAdapter }) => Promise<void>\n\nexport type Execute<T> = (args: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n drizzle?: LibSQLDatabase | PostgresDB\n raw?: string\n sql?: SQL<unknown>\n}) =>\n | Promise<QueryResult<Record<string, T>>>\n | SQLiteRaw<Promise<{ rows: T[] }>>\n | SQLiteRaw<ResultSet>\n\nexport type Insert = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n onConflictDoUpdate?: unknown\n tableName: string\n values: Record<string, unknown> | Record<string, unknown>[]\n}) => Promise<Record<string, unknown>[]>\n\nexport type RequireDrizzleKit = () => {\n generateDrizzleJson: (\n args: Record<string, unknown>,\n ) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>\n generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>\n pushSchema: (\n schema: Record<string, unknown>,\n drizzle: DrizzleAdapter['drizzle'],\n filterSchema?: string[],\n tablesFilter?: string[],\n extensionsFilter?: string[],\n ) => Promise<{ apply; hasDataLoss; warnings }>\n upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON\n}\n\nexport type Migration = {\n down: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n up: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n} & MigrationData\n\nexport type CreateJSONQueryArgs = {\n column?: Column | string\n operator: string\n pathSegments: string[]\n rawColumn?: SQL<unknown>\n table?: string\n treatAsArray?: string[]\n treatRootAsArray?: boolean\n value: boolean | number | number[] | string | string[]\n}\n\n/**\n * Abstract relation link\n */\nexport type RawRelation =\n | {\n fields: { name: string; table: string }[]\n references: string[]\n relationName?: string\n to: string\n type: 'one'\n }\n | {\n relationName?: string\n to: string\n type: 'many'\n }\n\n/**\n * Abstract SQL table that later gets converted by database specific implementation to Drizzle\n */\nexport type RawTable = {\n columns: Record<string, RawColumn>\n foreignKeys?: Record<string, RawForeignKey>\n indexes?: Record<string, RawIndex>\n name: string\n}\n\n/**\n * Abstract SQL foreign key that later gets converted by database specific implementation to Drizzle\n */\nexport type RawForeignKey = {\n columns: string[]\n foreignColumns: { name: string; table: string }[]\n name: string\n onDelete?: UpdateDeleteAction\n onUpdate?: UpdateDeleteAction\n}\n\n/**\n * Abstract SQL index that later gets converted by database specific implementation to Drizzle\n */\nexport type RawIndex = {\n name: string\n on: string | string[]\n unique?: boolean\n}\n\n/**\n * Abstract SQL column that later gets converted by database specific implementation to Drizzle\n */\nexport type BaseRawColumn = {\n default?: any\n name: string\n notNull?: boolean\n primaryKey?: boolean\n reference?: {\n name: string\n onDelete: UpdateDeleteAction\n table: string\n }\n}\n\n/**\n * Postgres: native timestamp type\n * SQLite: text column, defaultNow achieved through strftime('%Y-%m-%dT%H:%M:%fZ', 'now'). withTimezone/precision have no any effect.\n */\nexport type TimestampRawColumn = {\n defaultNow?: boolean\n mode: 'date' | 'string'\n precision: Precision\n type: 'timestamp'\n withTimezone?: boolean\n} & BaseRawColumn\n\n/**\n * Postgres: native UUID type and db lavel defaultRandom\n * SQLite: text type and defaultRandom in the app level\n */\nexport type UUIDRawColumn = {\n defaultRandom?: boolean\n /** App-side UUID v7 default (Postgres & SQLite); mutually exclusive with defaultRandom in practice */\n defaultV7?: boolean\n type: 'uuid'\n} & BaseRawColumn\n\n/**\n * Accepts either `locale: true` to have options from locales or `options` string array\n * Postgres: native enums\n * SQLite: text column with checks.\n */\nexport type EnumRawColumn = (\n | {\n enumName: string\n options: string[]\n type: 'enum'\n }\n | {\n locale: true\n type: 'enum'\n }\n) &\n BaseRawColumn\n\nexport type IntegerRawColumn = {\n /**\n * SQLite only.\n * Enable [AUTOINCREMENT](https://www.sqlite.org/autoinc.html) for primary key to ensure that the same ID cannot be reused from previously deleted rows.\n */\n autoIncrement?: boolean\n type: 'integer'\n} & BaseRawColumn\n\nexport type VectorRawColumn = {\n dimensions?: number\n type: 'vector'\n} & BaseRawColumn\n\nexport type HalfVecRawColumn = {\n dimensions?: number\n type: 'halfvec'\n} & BaseRawColumn\n\nexport type SparseVecRawColumn = {\n dimensions?: number\n type: 'sparsevec'\n} & BaseRawColumn\n\nexport type BinaryVecRawColumn = {\n dimensions?: number\n type: 'bit'\n} & BaseRawColumn\n\nexport type RawColumn =\n | ({\n type: 'boolean' | 'geometry' | 'jsonb' | 'numeric' | 'serial' | 'text' | 'varchar'\n } & BaseRawColumn)\n | BinaryVecRawColumn\n | EnumRawColumn\n | HalfVecRawColumn\n | IntegerRawColumn\n | SparseVecRawColumn\n | TimestampRawColumn\n | UUIDRawColumn\n | VectorRawColumn\n\nexport type IDType = 'integer' | 'numeric' | 'text' | 'uuid' | 'varchar'\n\nexport type SetColumnID = (args: {\n adapter: DrizzleAdapter\n columns: Record<string, RawColumn>\n fields: FlattenedField[]\n}) => IDType\n\nexport type ColumnToCodeConverter = (args: {\n adapter: DrizzleAdapter\n addEnum: (name: string, options: string[]) => void\n addImport: (from: string, name: string) => void\n circularEdges?: Set<string>\n column: RawColumn\n locales?: string[]\n tableKey: string\n}) => string\n\nexport type BuildDrizzleTable<T extends DrizzleAdapter = DrizzleAdapter> = (args: {\n adapter: T\n locales: string[]\n rawTable: RawTable\n}) => void\n\nexport type BlocksToJsonBlockToMigrate = {\n data: Record<string, unknown> | Record<string, unknown>[]\n fieldAccessor: (number | string)[]\n}\n\nexport interface BaseBlocksToJsonEntityToMigrate {\n blocks: BlocksToJsonBlockToMigrate[]\n originalData: Record<string, any>\n}\n\nexport interface CollectionOrVersionBlocksToJsonEntityToMigrate\n extends BaseBlocksToJsonEntityToMigrate {\n id: number | string\n slug: string\n type: 'collection' | 'collectionVersion' | 'globalVersion'\n}\n\nexport interface GlobalBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n slug: string\n type: 'global'\n}\n\nexport type BlocksToJsonEntityToMigrate =\n | CollectionOrVersionBlocksToJsonEntityToMigrate\n | GlobalBlocksToJsonEntityToMigrate\n\nexport interface BlocksToJsonMigrator {\n collectAndSaveEntitiesToBatches(\n req: PayloadRequest,\n options?: {\n batchSize?: number\n },\n ): Promise<void>\n getMigrationStatements(): Promise<{\n statements: string\n writeDrizzleSnapshot(filePath: string): void\n }>\n migrateEntitiesFromTempFolder(\n req: PayloadRequest,\n options?: {\n clearBatches?: boolean\n },\n ): Promise<void>\n setTempFolder(tempFolderPath: string): void\n updatePayloadConfigFile(): Promise<void>\n}\n\nexport interface DrizzleAdapter extends BaseDatabaseAdapter {\n blocksAsJSON?: boolean\n blocksToJsonMigrator?: BlocksToJsonMigrator\n convertPathToJSONTraversal?: (incomingSegments: string[]) => string\n countDistinct: CountDistinct\n createJSONQuery: (args: CreateJSONQueryArgs) => string\n defaultDrizzleSnapshot: Record<string, unknown>\n deleteWhere: DeleteWhere\n drizzle: LibSQLDatabase | PostgresDB\n dropDatabase: DropDatabase\n enums?: never | Record<string, unknown>\n execute: Execute<unknown>\n features: {\n json?: boolean\n }\n /**\n * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n\n foreignKeys: Set<string>\n idType: 'serial' | 'uuid' | 'uuidv7'\n indexes: Set<string>\n initializing: Promise<void>\n insert: Insert\n /**\n * Timestamp (ms) of the last write operation. When read replicas are configured,\n * reads within `readReplicasAfterWriteInterval` ms of this timestamp are routed to the\n * primary to guarantee read-after-write consistency.\n */\n lastWriteTimestamp?: number\n limitedBoundParameters?: boolean\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n operators: Operators\n /**\n * When read replicas are configured, holds the unwrapped primary drizzle instance\n * (before withReplicas wrapping). Used for reads that are part of write operations\n * to avoid replication lag.\n */\n primaryDrizzle?: PostgresDB\n push: boolean\n rawRelations: Record<string, Record<string, RawRelation>>\n rawTables: Record<string, RawTable>\n /**\n * How long (ms) after a write to route reads to the primary instead of a\n * read replica. Avoids stale reads caused by replication lag.\n * @default 2000\n */\n readReplicasAfterWriteInterval: number\n\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n requireDrizzleKit: RequireDrizzleKit\n resolveInitializing: () => void\n\n schema: Record<string, unknown>\n\n schemaName?: string\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tableNameMap: Map<string, string>\n tables: Record<string, any>\n transactionOptions: unknown\n versionsSuffix?: string\n}\n\nexport type RelationMap = Map<\n string,\n {\n localized: boolean\n relationName?: string\n target: string\n type: 'many' | 'one'\n }\n>\n\n/**\n * @deprecated - will be removed in 4.0. Use query + $dynamic() instead: https://orm.drizzle.team/docs/dynamic-query-building\n */\nexport type { ChainedMethods } from './find/chainMethods.js'\n"],"names":[],"mappings":"AAsdA;;CAEC,GACD,WAA4D"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n Column,\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n SQL,\n TableRelationalConfig,\n} from 'drizzle-orm'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgTable,\n PgTransaction,\n Precision,\n UpdateDeleteAction,\n} from 'drizzle-orm/pg-core'\nimport type { SQLiteColumn, SQLiteTable, SQLiteTransaction } from 'drizzle-orm/sqlite-core'\nimport type { Result } from 'drizzle-orm/sqlite-core/session'\nimport type {\n BaseDatabaseAdapter,\n FlattenedField,\n MigrationData,\n Operator,\n Payload,\n PayloadRequest,\n} from 'payload'\n\nimport type { BuildQueryJoinAliases } from './queries/buildQuery.js'\n\nexport { BuildQueryJoinAliases }\n\nimport type { ResultSet } from '@libsql/client'\nimport type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { SQLiteRaw } from 'drizzle-orm/sqlite-core/query-builders/raw'\nimport type { QueryResult } from 'pg'\n\nimport type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js'\n\nexport type PostgresDB = NodePgDatabase<Record<string, unknown>>\n\nexport type SQLiteDB = LibSQLDatabase<\n Record<string, GenericRelation | GenericTable> & Record<string, unknown>\n>\n\nexport type GenericPgColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns<T> = {\n [x: string]: T\n}\n\ntype GenericPgTable = PgTable<{\n columns: GenericColumns<GenericPgColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\ntype GenericSQLiteTable = SQLiteTable<{\n columns: GenericColumns<SQLiteColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericColumn = GenericPgColumn | SQLiteColumn\n\nexport type GenericTable = GenericPgTable | GenericSQLiteTable\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type TransactionSQLite = SQLiteTransaction<\n 'async',\n Result<'async', unknown>,\n Record<string, unknown>,\n { tsName: TableRelationalConfig }\n>\nexport type TransactionPg = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type DrizzleTransaction = TransactionPg | TransactionSQLite\n\nexport type CountDistinct = (args: {\n column?: PgColumn<any> | SQLiteColumn<any>\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n joins: BuildQueryJoinAliases\n tableName: string\n where: SQL\n}) => Promise<number>\n\nexport type DeleteWhere = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n tableName: string\n where: SQL\n}) => Promise<void>\n\nexport type DropDatabase = (args: { adapter: DrizzleAdapter }) => Promise<void>\n\nexport type Execute<T> = (args: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n drizzle?: LibSQLDatabase | PostgresDB\n raw?: string\n sql?: SQL<unknown>\n}) =>\n | Promise<QueryResult<Record<string, T>>>\n | SQLiteRaw<Promise<{ rows: T[] }>>\n | SQLiteRaw<ResultSet>\n\nexport type Insert = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n onConflictDoUpdate?: unknown\n tableName: string\n values: Record<string, unknown> | Record<string, unknown>[]\n}) => Promise<Record<string, unknown>[]>\n\nexport type RequireDrizzleKit = () => Promise<{\n generateDrizzleJson: (\n args: Record<string, unknown>,\n ) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>\n generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>\n pushSchema: (\n schema: Record<string, unknown>,\n drizzle: DrizzleAdapter['drizzle'],\n filterSchema?: string[],\n tablesFilter?: string[],\n extensionsFilter?: string[],\n ) => Promise<{ apply; hasDataLoss; warnings }>\n upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON\n}>\n\nexport type Migration = {\n down: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n up: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n} & MigrationData\n\nexport type CreateJSONQueryArgs = {\n column?: Column | string\n operator: string\n pathSegments: string[]\n rawColumn?: SQL<unknown>\n table?: string\n treatAsArray?: string[]\n treatRootAsArray?: boolean\n value: boolean | number | number[] | string | string[]\n}\n\n/**\n * Abstract relation link\n */\nexport type RawRelation =\n | {\n fields: { name: string; table: string }[]\n references: string[]\n relationName?: string\n to: string\n type: 'one'\n }\n | {\n relationName?: string\n to: string\n type: 'many'\n }\n\n/**\n * Abstract SQL table that later gets converted by database specific implementation to Drizzle\n */\nexport type RawTable = {\n columns: Record<string, RawColumn>\n foreignKeys?: Record<string, RawForeignKey>\n indexes?: Record<string, RawIndex>\n name: string\n}\n\n/**\n * Abstract SQL foreign key that later gets converted by database specific implementation to Drizzle\n */\nexport type RawForeignKey = {\n columns: string[]\n foreignColumns: { name: string; table: string }[]\n name: string\n onDelete?: UpdateDeleteAction\n onUpdate?: UpdateDeleteAction\n}\n\n/**\n * Abstract SQL index that later gets converted by database specific implementation to Drizzle\n */\nexport type RawIndex = {\n name: string\n on: string | string[]\n unique?: boolean\n}\n\n/**\n * Abstract SQL column that later gets converted by database specific implementation to Drizzle\n */\nexport type BaseRawColumn = {\n default?: any\n name: string\n notNull?: boolean\n primaryKey?: boolean\n reference?: {\n name: string\n onDelete: UpdateDeleteAction\n table: string\n }\n}\n\n/**\n * Postgres: native timestamp type\n * SQLite: text column, defaultNow achieved through strftime('%Y-%m-%dT%H:%M:%fZ', 'now'). withTimezone/precision have no any effect.\n */\nexport type TimestampRawColumn = {\n defaultNow?: boolean\n mode: 'date' | 'string'\n precision: Precision\n type: 'timestamp'\n withTimezone?: boolean\n} & BaseRawColumn\n\n/**\n * Postgres: native UUID type and db lavel defaultRandom\n * SQLite: text type and defaultRandom in the app level\n */\nexport type UUIDRawColumn = {\n defaultRandom?: boolean\n /** App-side UUID v7 default (Postgres & SQLite); mutually exclusive with defaultRandom in practice */\n defaultV7?: boolean\n type: 'uuid'\n} & BaseRawColumn\n\n/**\n * Accepts either `locale: true` to have options from locales or `options` string array\n * Postgres: native enums\n * SQLite: text column with checks.\n */\nexport type EnumRawColumn = (\n | {\n enumName: string\n options: string[]\n type: 'enum'\n }\n | {\n locale: true\n type: 'enum'\n }\n) &\n BaseRawColumn\n\nexport type IntegerRawColumn = {\n /**\n * SQLite only.\n * Enable [AUTOINCREMENT](https://www.sqlite.org/autoinc.html) for primary key to ensure that the same ID cannot be reused from previously deleted rows.\n */\n autoIncrement?: boolean\n type: 'integer'\n} & BaseRawColumn\n\nexport type VectorRawColumn = {\n dimensions?: number\n type: 'vector'\n} & BaseRawColumn\n\nexport type HalfVecRawColumn = {\n dimensions?: number\n type: 'halfvec'\n} & BaseRawColumn\n\nexport type SparseVecRawColumn = {\n dimensions?: number\n type: 'sparsevec'\n} & BaseRawColumn\n\nexport type BinaryVecRawColumn = {\n dimensions?: number\n type: 'bit'\n} & BaseRawColumn\n\nexport type RawColumn =\n | ({\n type: 'boolean' | 'geometry' | 'jsonb' | 'numeric' | 'serial' | 'text' | 'varchar'\n } & BaseRawColumn)\n | BinaryVecRawColumn\n | EnumRawColumn\n | HalfVecRawColumn\n | IntegerRawColumn\n | SparseVecRawColumn\n | TimestampRawColumn\n | UUIDRawColumn\n | VectorRawColumn\n\nexport type IDType = 'integer' | 'numeric' | 'text' | 'uuid' | 'varchar'\n\nexport type SetColumnID = (args: {\n adapter: DrizzleAdapter\n columns: Record<string, RawColumn>\n fields: FlattenedField[]\n}) => IDType\n\nexport type ColumnToCodeConverter = (args: {\n adapter: DrizzleAdapter\n addEnum: (name: string, options: string[]) => void\n addImport: (from: string, name: string) => void\n circularEdges?: Set<string>\n column: RawColumn\n locales?: string[]\n tableKey: string\n}) => string\n\nexport type BuildDrizzleTable<T extends DrizzleAdapter = DrizzleAdapter> = (args: {\n adapter: T\n locales: string[]\n rawTable: RawTable\n}) => void\n\nexport type BlocksToJsonBlockToMigrate = {\n data: Record<string, unknown> | Record<string, unknown>[]\n fieldAccessor: (number | string)[]\n}\n\nexport interface BaseBlocksToJsonEntityToMigrate {\n blocks: BlocksToJsonBlockToMigrate[]\n originalData: Record<string, any>\n}\n\nexport interface CollectionOrVersionBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n id: number | string\n slug: string\n type: 'collection' | 'collectionVersion' | 'globalVersion'\n}\n\nexport interface GlobalBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n slug: string\n type: 'global'\n}\n\nexport type BlocksToJsonEntityToMigrate =\n | CollectionOrVersionBlocksToJsonEntityToMigrate\n | GlobalBlocksToJsonEntityToMigrate\n\nexport interface BlocksToJsonMigrator {\n collectAndSaveEntitiesToBatches(\n req: PayloadRequest,\n options?: {\n batchSize?: number\n },\n ): Promise<void>\n getMigrationStatements(): Promise<{\n statements: string\n writeDrizzleSnapshot(filePath: string): void\n }>\n migrateEntitiesFromTempFolder(\n req: PayloadRequest,\n options?: {\n clearBatches?: boolean\n },\n ): Promise<void>\n setTempFolder(tempFolderPath: string): void\n updatePayloadConfigFile(): Promise<void>\n}\n\n/**\n * The information passed to a query-operator handler for one user-facing leaf comparison.\n */\nexport type DrizzleOperatorHandlerContext = {\n adapter: DrizzleAdapter\n column: Column | SQL\n field: FlattenedField\n locale?: string\n /** The operator supplied by the Payload query, before any adapter conversions. */\n originalOperator: Operator\n path: string\n /** The operator actually sent to the database after Payload's existing conversions. */\n resolvedOperator: DrizzleResolvedOperator\n storage: 'column'\n value: unknown\n}\n\n/**\n * Transforms the column and/or value of a matching operator before the default (or replacement)\n * comparison runs. Multiple matching transform handlers compose in configuration order.\n */\nexport type DrizzleOperandTransformHandler = {\n build?: never\n /** Restricts the handler to these Payload field types. Omit to match every field type. */\n fieldTypes?: FlattenedField['type'][]\n name: string\n operators: DrizzleResolvedOperator[]\n transformOperands: (context: DrizzleOperatorHandlerContext) => {\n column: Column | SQL\n value: unknown\n }\n}\n\n/**\n * Replaces the default comparison for a matching operator entirely. Runs after every matching\n * `transformOperands` handler has already run.\n */\nexport type DrizzleOperatorReplacementHandler = {\n build: (context: DrizzleOperatorHandlerContext) => SQL\n /** Restricts the handler to these Payload field types. Omit to match every field type. */\n fieldTypes?: FlattenedField['type'][]\n name: string\n operators: DrizzleResolvedOperator[]\n transformOperands?: never\n}\n\nexport type DrizzleOperatorHandler =\n | DrizzleOperandTransformHandler\n | DrizzleOperatorReplacementHandler\n\nexport type DrizzleQueryConfig = {\n operatorHandlers?: DrizzleOperatorHandler[]\n}\n\nexport interface DrizzleAdapter extends BaseDatabaseAdapter {\n blocksAsJSON?: boolean\n blocksToJsonMigrator?: BlocksToJsonMigrator\n convertPathToJSONTraversal?: (incomingSegments: string[]) => string\n countDistinct: CountDistinct\n createJSONQuery: (args: CreateJSONQueryArgs) => string\n defaultDrizzleSnapshot: Record<string, unknown>\n deleteWhere: DeleteWhere\n drizzle: LibSQLDatabase | PostgresDB\n dropDatabase: DropDatabase\n enums?: never | Record<string, unknown>\n execute: Execute<unknown>\n features: {\n json?: boolean\n }\n /**\n * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n\n foreignKeys: Set<string>\n idType: 'serial' | 'uuid' | 'uuidv7'\n indexes: Set<string>\n initializing: Promise<void>\n insert: Insert\n /**\n * Timestamp (ms) of the last write operation. When read replicas are configured,\n * reads within `readReplicasAfterWriteInterval` ms of this timestamp are routed to the\n * primary to guarantee read-after-write consistency.\n */\n lastWriteTimestamp?: number\n limitedBoundParameters?: boolean\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n operatorHandlers: DrizzleOperatorHandler[]\n operators: Operators\n /**\n * When read replicas are configured, holds the unwrapped primary drizzle instance\n * (before withReplicas wrapping). Used for reads that are part of write operations\n * to avoid replication lag.\n */\n primaryDrizzle?: PostgresDB\n push: boolean\n rawRelations: Record<string, Record<string, RawRelation>>\n rawTables: Record<string, RawTable>\n /**\n * How long (ms) after a write to route reads to the primary instead of a\n * read replica. Avoids stale reads caused by replication lag.\n * @default 2000\n */\n readReplicasAfterWriteInterval: number\n\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n requireDrizzleKit: RequireDrizzleKit\n resolveInitializing: () => void\n\n schema: Record<string, unknown>\n\n schemaName?: string\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tableNameMap: Map<string, string>\n tables: Record<string, any>\n transactionOptions: unknown\n versionsSuffix?: string\n}\n\nexport type RelationMap = Map<\n string,\n {\n localized: boolean\n relationName?: string\n target: string\n type: 'many' | 'one'\n }\n>\n"],"names":[],"mappings":"AAmgBA,WAQC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateJobs.d.ts","sourceRoot":"","sources":["../src/updateJobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAYhD,eAAO,MAAM,UAAU,EAAE,UA2FxB,CAAA"}
1
+ {"version":3,"file":"updateJobs.d.ts","sourceRoot":"","sources":["../src/updateJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAsBhD,eAAO,MAAM,UAAU,EAAE,UAsIxB,CAAA"}
@@ -1,9 +1,13 @@
1
+ import { and, inArray, isNull, lte, or } from 'drizzle-orm';
1
2
  import toSnakeCase from 'to-snake-case';
2
3
  import { findMany } from './find/findMany.js';
4
+ import { transformForWrite } from './transform/write/index.js';
3
5
  import { upsertRow } from './upsertRow/index.js';
4
6
  import { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js';
5
7
  import { getPrimaryDb } from './utilities/getPrimaryDb.js';
6
8
  import { getTransaction } from './utilities/getTransaction.js';
9
+ import { markWrite } from './utilities/readAfterWrite.js';
10
+ const isInitialJobClaim = (data)=>typeof data.processingToken === 'string' && typeof data.processingUntil === 'string' && Object.keys(data).every((field)=>field === 'processingToken' || field === 'processingUntil' || field === 'updatedAt');
7
11
  export const updateJobs = async function updateMany({ id, data, limit: limitArg, req, returning, sort: sortArg, where: whereArg }) {
8
12
  if (!data?.log?.length && !(data.log && typeof data.log === 'object' && '$push' in data.log)) {
9
13
  delete data.log;
@@ -54,6 +58,39 @@ export const updateJobs = async function updateMany({ id, data, limit: limitArg,
54
58
  return [];
55
59
  }
56
60
  const db = getPrimaryDb(this, await getTransaction(this, req));
61
+ if (isInitialJobClaim(data)) {
62
+ // Atomically claim jobs so multiple workers cannot pick up the same job.
63
+ // We don't need FOR UPDATE SKIP LOCKED here because of the compare-and-swap-style update using processingUntil and processingToken.
64
+ // The first update makes the where clause fail for other workers, so they cannot claim the same job.
65
+ const _db = db;
66
+ const table = this.tables[tableName];
67
+ const now = new Date().toISOString();
68
+ const { row } = transformForWrite({
69
+ adapter: this,
70
+ data,
71
+ enableAtomicWrites: true,
72
+ fields: collection.flattenedFields,
73
+ tableName
74
+ });
75
+ if (typeof row.updatedAt === 'undefined' || row.updatedAt === null) {
76
+ delete row.updatedAt;
77
+ }
78
+ const jobIDs = jobs.docs.map((job)=>job.id);
79
+ const claimedRows = await _db.update(table).set(row).where(and(inArray(table.id, jobIDs), or(isNull(table.processingUntil), lte(table.processingUntil, now)))).returning({
80
+ id: table.id
81
+ });
82
+ if (claimedRows.length) {
83
+ markWrite(this);
84
+ }
85
+ if (returning === false) {
86
+ return null;
87
+ }
88
+ const claimedIDs = new Set(claimedRows.map(({ id })=>id));
89
+ return jobs.docs.filter((job)=>claimedIDs.has(job.id)).map((job)=>({
90
+ ...job,
91
+ ...data
92
+ }));
93
+ }
57
94
  const results = [];
58
95
  // TODO: We need to batch this to reduce the amount of db calls. This can get very slow if we are updating a lot of rows.
59
96
  for (const job of jobs.docs){
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateJobs.ts"],"sourcesContent":["import type { UpdateJobs, Where } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js'\nimport { getPrimaryDb } from './utilities/getPrimaryDb.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateJobs: UpdateJobs = async function updateMany(\n this: DrizzleAdapter,\n { id, data, limit: limitArg, req, returning, sort: sortArg, where: whereArg },\n) {\n if (\n !(data?.log as object[])?.length &&\n !(data.log && typeof data.log === 'object' && '$push' in data.log)\n ) {\n delete data.log\n }\n\n const whereToUse: Where = id ? { id: { equals: id } } : whereArg\n const limit = id ? 1 : limitArg\n\n const collection = this.payload.collections['payload-jobs'].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collection.defaultSort\n\n const useOptimizedUpsertRow = shouldUseOptimizedUpsertRow({\n data,\n fields: collection.flattenedFields,\n })\n\n if (useOptimizedUpsertRow && id) {\n const db = getPrimaryDb(this, await getTransaction(this, req))\n\n const result = await upsertRow({\n id,\n adapter: this,\n collectionSlug: 'payload-jobs',\n data,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n tableName,\n })\n\n return returning === false ? null : [result]\n }\n\n const jobs = await findMany({\n adapter: this,\n collectionSlug: 'payload-jobs',\n fields: collection.flattenedFields,\n limit: id ? 1 : limit,\n pagination: false,\n req,\n sort,\n tableName,\n where: whereToUse,\n })\n if (!jobs.docs.length) {\n return []\n }\n\n const db = getPrimaryDb(this, await getTransaction(this, req))\n\n const results = []\n\n // TODO: We need to batch this to reduce the amount of db calls. This can get very slow if we are updating a lot of rows.\n for (const job of jobs.docs) {\n const updateData = useOptimizedUpsertRow\n ? data\n : {\n ...job,\n ...data,\n }\n\n const result = await upsertRow({\n id: job.id,\n adapter: this,\n collectionSlug: 'payload-jobs',\n data: updateData,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n tableName,\n })\n\n results.push(result)\n }\n\n if (returning === false) {\n return null\n }\n\n return results\n}\n"],"names":["toSnakeCase","findMany","upsertRow","shouldUseOptimizedUpsertRow","getPrimaryDb","getTransaction","updateJobs","updateMany","id","data","limit","limitArg","req","returning","sort","sortArg","where","whereArg","log","length","whereToUse","equals","collection","payload","collections","config","tableName","tableNameMap","get","slug","undefined","defaultSort","useOptimizedUpsertRow","fields","flattenedFields","db","result","adapter","collectionSlug","ignoreResult","operation","jobs","pagination","docs","results","job","updateData","push"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAC7C,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,2BAA2B,QAAQ,6CAA4C;AACxF,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,MAAMC,aAAyB,eAAeC,WAEnD,EAAEC,EAAE,EAAEC,IAAI,EAAEC,OAAOC,QAAQ,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAMC,OAAO,EAAEC,OAAOC,QAAQ,EAAE;IAE7E,IACE,CAAER,MAAMS,KAAkBC,UAC1B,CAAEV,CAAAA,KAAKS,GAAG,IAAI,OAAOT,KAAKS,GAAG,KAAK,YAAY,WAAWT,KAAKS,GAAG,AAAD,GAChE;QACA,OAAOT,KAAKS,GAAG;IACjB;IAEA,MAAME,aAAoBZ,KAAK;QAAEA,IAAI;YAAEa,QAAQb;QAAG;IAAE,IAAIS;IACxD,MAAMP,QAAQF,KAAK,IAAIG;IAEvB,MAAMW,aAAa,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,eAAe,CAACC,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC5B,YAAYsB,WAAWO,IAAI;IACnE,MAAMf,OAAOC,YAAYe,aAAaf,YAAY,OAAOA,UAAUO,WAAWS,WAAW;IAEzF,MAAMC,wBAAwB7B,4BAA4B;QACxDM;QACAwB,QAAQX,WAAWY,eAAe;IACpC;IAEA,IAAIF,yBAAyBxB,IAAI;QAC/B,MAAM2B,KAAK/B,aAAa,IAAI,EAAE,MAAMC,eAAe,IAAI,EAAEO;QAEzD,MAAMwB,SAAS,MAAMlC,UAAU;YAC7BM;YACA6B,SAAS,IAAI;YACbC,gBAAgB;YAChB7B;YACA0B;YACAF,QAAQX,WAAWY,eAAe;YAClCK,cAAc1B,cAAc;YAC5B2B,WAAW;YACX5B;YACAc;QACF;QAEA,OAAOb,cAAc,QAAQ,OAAO;YAACuB;SAAO;IAC9C;IAEA,MAAMK,OAAO,MAAMxC,SAAS;QAC1BoC,SAAS,IAAI;QACbC,gBAAgB;QAChBL,QAAQX,WAAWY,eAAe;QAClCxB,OAAOF,KAAK,IAAIE;QAChBgC,YAAY;QACZ9B;QACAE;QACAY;QACAV,OAAOI;IACT;IACA,IAAI,CAACqB,KAAKE,IAAI,CAACxB,MAAM,EAAE;QACrB,OAAO,EAAE;IACX;IAEA,MAAMgB,KAAK/B,aAAa,IAAI,EAAE,MAAMC,eAAe,IAAI,EAAEO;IAEzD,MAAMgC,UAAU,EAAE;IAElB,yHAAyH;IACzH,KAAK,MAAMC,OAAOJ,KAAKE,IAAI,CAAE;QAC3B,MAAMG,aAAad,wBACfvB,OACA;YACE,GAAGoC,GAAG;YACN,GAAGpC,IAAI;QACT;QAEJ,MAAM2B,SAAS,MAAMlC,UAAU;YAC7BM,IAAIqC,IAAIrC,EAAE;YACV6B,SAAS,IAAI;YACbC,gBAAgB;YAChB7B,MAAMqC;YACNX;YACAF,QAAQX,WAAWY,eAAe;YAClCK,cAAc1B,cAAc;YAC5B2B,WAAW;YACX5B;YACAc;QACF;QAEAkB,QAAQG,IAAI,CAACX;IACf;IAEA,IAAIvB,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAO+B;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateJobs.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { UpdateJobs, Where } from 'payload'\n\nimport { and, inArray, isNull, lte, or } from 'drizzle-orm'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\nimport { transformForWrite } from './transform/write/index.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js'\nimport { getPrimaryDb } from './utilities/getPrimaryDb.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { markWrite } from './utilities/readAfterWrite.js'\n\nconst isInitialJobClaim = (data: Record<string, unknown>): boolean =>\n typeof data.processingToken === 'string' &&\n typeof data.processingUntil === 'string' &&\n Object.keys(data).every(\n (field) => field === 'processingToken' || field === 'processingUntil' || field === 'updatedAt',\n )\n\nexport const updateJobs: UpdateJobs = async function updateMany(\n this: DrizzleAdapter,\n { id, data, limit: limitArg, req, returning, sort: sortArg, where: whereArg },\n) {\n if (\n !(data?.log as object[])?.length &&\n !(data.log && typeof data.log === 'object' && '$push' in data.log)\n ) {\n delete data.log\n }\n\n const whereToUse: Where = id ? { id: { equals: id } } : whereArg\n const limit = id ? 1 : limitArg\n\n const collection = this.payload.collections['payload-jobs'].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collection.defaultSort\n\n const useOptimizedUpsertRow = shouldUseOptimizedUpsertRow({\n data,\n fields: collection.flattenedFields,\n })\n\n if (useOptimizedUpsertRow && id) {\n const db = getPrimaryDb(this, await getTransaction(this, req))\n\n const result = await upsertRow({\n id,\n adapter: this,\n collectionSlug: 'payload-jobs',\n data,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n tableName,\n })\n\n return returning === false ? null : [result]\n }\n\n const jobs = await findMany({\n adapter: this,\n collectionSlug: 'payload-jobs',\n fields: collection.flattenedFields,\n limit: id ? 1 : limit,\n pagination: false,\n req,\n sort,\n tableName,\n where: whereToUse,\n })\n if (!jobs.docs.length) {\n return []\n }\n\n const db = getPrimaryDb(this, await getTransaction(this, req))\n\n if (isInitialJobClaim(data)) {\n // Atomically claim jobs so multiple workers cannot pick up the same job.\n // We don't need FOR UPDATE SKIP LOCKED here because of the compare-and-swap-style update using processingUntil and processingToken.\n // The first update makes the where clause fail for other workers, so they cannot claim the same job.\n const _db = db as LibSQLDatabase\n const table = this.tables[tableName]\n const now = new Date().toISOString()\n const { row } = transformForWrite({\n adapter: this,\n data,\n enableAtomicWrites: true,\n fields: collection.flattenedFields,\n tableName,\n })\n\n if (typeof row.updatedAt === 'undefined' || row.updatedAt === null) {\n delete row.updatedAt\n }\n\n const jobIDs = jobs.docs.map((job) => job.id)\n const claimedRows = await _db\n .update(table)\n .set(row)\n .where(\n and(\n inArray(table.id, jobIDs),\n or(isNull(table.processingUntil), lte(table.processingUntil, now)),\n ),\n )\n .returning({ id: table.id })\n\n if (claimedRows.length) {\n markWrite(this)\n }\n\n if (returning === false) {\n return null\n }\n\n const claimedIDs = new Set(claimedRows.map(({ id }) => id))\n return jobs.docs.filter((job) => claimedIDs.has(job.id)).map((job) => ({ ...job, ...data }))\n }\n\n const results = []\n\n // TODO: We need to batch this to reduce the amount of db calls. This can get very slow if we are updating a lot of rows.\n for (const job of jobs.docs) {\n const updateData = useOptimizedUpsertRow\n ? data\n : {\n ...job,\n ...data,\n }\n\n const result = await upsertRow({\n id: job.id,\n adapter: this,\n collectionSlug: 'payload-jobs',\n data: updateData,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n tableName,\n })\n\n results.push(result)\n }\n\n if (returning === false) {\n return null\n }\n\n return results\n}\n"],"names":["and","inArray","isNull","lte","or","toSnakeCase","findMany","transformForWrite","upsertRow","shouldUseOptimizedUpsertRow","getPrimaryDb","getTransaction","markWrite","isInitialJobClaim","data","processingToken","processingUntil","Object","keys","every","field","updateJobs","updateMany","id","limit","limitArg","req","returning","sort","sortArg","where","whereArg","log","length","whereToUse","equals","collection","payload","collections","config","tableName","tableNameMap","get","slug","undefined","defaultSort","useOptimizedUpsertRow","fields","flattenedFields","db","result","adapter","collectionSlug","ignoreResult","operation","jobs","pagination","docs","_db","table","tables","now","Date","toISOString","row","enableAtomicWrites","updatedAt","jobIDs","map","job","claimedRows","update","set","claimedIDs","Set","filter","has","results","updateData","push"],"mappings":"AAGA,SAASA,GAAG,EAAEC,OAAO,EAAEC,MAAM,EAAEC,GAAG,EAAEC,EAAE,QAAQ,cAAa;AAC3D,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAC7C,SAASC,iBAAiB,QAAQ,6BAA4B;AAC9D,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,2BAA2B,QAAQ,6CAA4C;AACxF,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,SAAS,QAAQ,gCAA+B;AAEzD,MAAMC,oBAAoB,CAACC,OACzB,OAAOA,KAAKC,eAAe,KAAK,YAChC,OAAOD,KAAKE,eAAe,KAAK,YAChCC,OAAOC,IAAI,CAACJ,MAAMK,KAAK,CACrB,CAACC,QAAUA,UAAU,qBAAqBA,UAAU,qBAAqBA,UAAU;AAGvF,OAAO,MAAMC,aAAyB,eAAeC,WAEnD,EAAEC,EAAE,EAAET,IAAI,EAAEU,OAAOC,QAAQ,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAMC,OAAO,EAAEC,OAAOC,QAAQ,EAAE;IAE7E,IACE,CAAEjB,MAAMkB,KAAkBC,UAC1B,CAAEnB,CAAAA,KAAKkB,GAAG,IAAI,OAAOlB,KAAKkB,GAAG,KAAK,YAAY,WAAWlB,KAAKkB,GAAG,AAAD,GAChE;QACA,OAAOlB,KAAKkB,GAAG;IACjB;IAEA,MAAME,aAAoBX,KAAK;QAAEA,IAAI;YAAEY,QAAQZ;QAAG;IAAE,IAAIQ;IACxD,MAAMP,QAAQD,KAAK,IAAIE;IAEvB,MAAMW,aAAa,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,eAAe,CAACC,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACrC,YAAY+B,WAAWO,IAAI;IACnE,MAAMf,OAAOC,YAAYe,aAAaf,YAAY,OAAOA,UAAUO,WAAWS,WAAW;IAEzF,MAAMC,wBAAwBrC,4BAA4B;QACxDK;QACAiC,QAAQX,WAAWY,eAAe;IACpC;IAEA,IAAIF,yBAAyBvB,IAAI;QAC/B,MAAM0B,KAAKvC,aAAa,IAAI,EAAE,MAAMC,eAAe,IAAI,EAAEe;QAEzD,MAAMwB,SAAS,MAAM1C,UAAU;YAC7Be;YACA4B,SAAS,IAAI;YACbC,gBAAgB;YAChBtC;YACAmC;YACAF,QAAQX,WAAWY,eAAe;YAClCK,cAAc1B,cAAc;YAC5B2B,WAAW;YACX5B;YACAc;QACF;QAEA,OAAOb,cAAc,QAAQ,OAAO;YAACuB;SAAO;IAC9C;IAEA,MAAMK,OAAO,MAAMjD,SAAS;QAC1B6C,SAAS,IAAI;QACbC,gBAAgB;QAChBL,QAAQX,WAAWY,eAAe;QAClCxB,OAAOD,KAAK,IAAIC;QAChBgC,YAAY;QACZ9B;QACAE;QACAY;QACAV,OAAOI;IACT;IACA,IAAI,CAACqB,KAAKE,IAAI,CAACxB,MAAM,EAAE;QACrB,OAAO,EAAE;IACX;IAEA,MAAMgB,KAAKvC,aAAa,IAAI,EAAE,MAAMC,eAAe,IAAI,EAAEe;IAEzD,IAAIb,kBAAkBC,OAAO;QAC3B,yEAAyE;QACzE,oIAAoI;QACpI,qGAAqG;QACrG,MAAM4C,MAAMT;QACZ,MAAMU,QAAQ,IAAI,CAACC,MAAM,CAACpB,UAAU;QACpC,MAAMqB,MAAM,IAAIC,OAAOC,WAAW;QAClC,MAAM,EAAEC,GAAG,EAAE,GAAGzD,kBAAkB;YAChC4C,SAAS,IAAI;YACbrC;YACAmD,oBAAoB;YACpBlB,QAAQX,WAAWY,eAAe;YAClCR;QACF;QAEA,IAAI,OAAOwB,IAAIE,SAAS,KAAK,eAAeF,IAAIE,SAAS,KAAK,MAAM;YAClE,OAAOF,IAAIE,SAAS;QACtB;QAEA,MAAMC,SAASZ,KAAKE,IAAI,CAACW,GAAG,CAAC,CAACC,MAAQA,IAAI9C,EAAE;QAC5C,MAAM+C,cAAc,MAAMZ,IACvBa,MAAM,CAACZ,OACPa,GAAG,CAACR,KACJlC,KAAK,CACJ9B,IACEC,QAAQ0D,MAAMpC,EAAE,EAAE4C,SAClB/D,GAAGF,OAAOyD,MAAM3C,eAAe,GAAGb,IAAIwD,MAAM3C,eAAe,EAAE6C,QAGhElC,SAAS,CAAC;YAAEJ,IAAIoC,MAAMpC,EAAE;QAAC;QAE5B,IAAI+C,YAAYrC,MAAM,EAAE;YACtBrB,UAAU,IAAI;QAChB;QAEA,IAAIe,cAAc,OAAO;YACvB,OAAO;QACT;QAEA,MAAM8C,aAAa,IAAIC,IAAIJ,YAAYF,GAAG,CAAC,CAAC,EAAE7C,EAAE,EAAE,GAAKA;QACvD,OAAOgC,KAAKE,IAAI,CAACkB,MAAM,CAAC,CAACN,MAAQI,WAAWG,GAAG,CAACP,IAAI9C,EAAE,GAAG6C,GAAG,CAAC,CAACC,MAAS,CAAA;gBAAE,GAAGA,GAAG;gBAAE,GAAGvD,IAAI;YAAC,CAAA;IAC3F;IAEA,MAAM+D,UAAU,EAAE;IAElB,yHAAyH;IACzH,KAAK,MAAMR,OAAOd,KAAKE,IAAI,CAAE;QAC3B,MAAMqB,aAAahC,wBACfhC,OACA;YACE,GAAGuD,GAAG;YACN,GAAGvD,IAAI;QACT;QAEJ,MAAMoC,SAAS,MAAM1C,UAAU;YAC7Be,IAAI8C,IAAI9C,EAAE;YACV4B,SAAS,IAAI;YACbC,gBAAgB;YAChBtC,MAAMgE;YACN7B;YACAF,QAAQX,WAAWY,eAAe;YAClCK,cAAc1B,cAAc;YAC5B2B,WAAW;YACX5B;YACAc;QACF;QAEAqC,QAAQE,IAAI,CAAC7B;IACf;IAEA,IAAIvB,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOkD;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAYxC,eAAO,MAAM,SAAS,EAAE,SAqFvB,CAAA"}
1
+ {"version":3,"file":"updateOne.d.ts","sourceRoot":"","sources":["../src/updateOne.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAgBxC,eAAO,MAAM,SAAS,EAAE,SAiIvB,CAAA"}
package/dist/updateOne.js CHANGED
@@ -1,15 +1,20 @@
1
1
  import toSnakeCase from 'to-snake-case';
2
2
  import { buildQuery } from './queries/buildQuery.js';
3
3
  import { selectDistinct } from './queries/selectDistinct.js';
4
+ import { transform } from './transform/read/index.js';
5
+ import { transformForWrite } from './transform/write/index.js';
4
6
  import { upsertRow } from './upsertRow/index.js';
7
+ import { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js';
5
8
  import { getPrimaryDb } from './utilities/getPrimaryDb.js';
6
9
  import { getTransaction } from './utilities/getTransaction.js';
10
+ import { markWrite } from './utilities/readAfterWrite.js';
7
11
  export const updateOne = async function updateOne({ id, collection: collectionSlug, data, joins: joinQuery, locale, options = {
8
12
  upsert: false
9
13
  }, req, returning, select, where: whereArg }) {
10
14
  const collection = this.payload.collections[collectionSlug].config;
11
15
  const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
12
16
  let idToUpdate = id;
17
+ let whereToUpdate;
13
18
  const db = getPrimaryDb(this, await getTransaction(this, req));
14
19
  if (!idToUpdate) {
15
20
  const { joins, selectFields, where } = buildQuery({
@@ -19,6 +24,40 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
19
24
  tableName,
20
25
  where: whereArg
21
26
  });
27
+ // A `where` that needs joins cannot be applied to the UPDATE statement itself, so those
28
+ // queries keep resolving a matching id first and then update that row unconditionally
29
+ whereToUpdate = joins.length === 0 ? where : undefined;
30
+ if (options.atomic === true) {
31
+ if (!shouldUseOptimizedUpsertRow({
32
+ data,
33
+ fields: collection.flattenedFields
34
+ })) {
35
+ throw new Error('Atomic where updates only support fields stored on the main table');
36
+ }
37
+ const { arraysToPush, row } = transformForWrite({
38
+ adapter: this,
39
+ data,
40
+ enableAtomicWrites: true,
41
+ fields: collection.flattenedFields,
42
+ tableName
43
+ });
44
+ if (arraysToPush && Object.keys(arraysToPush).length) {
45
+ throw new Error('Atomic where updates do not support array operations');
46
+ }
47
+ markWrite(this);
48
+ const docs = await db.update(this.tables[tableName]).set(row).where(where).returning();
49
+ if (!docs[0]) {
50
+ return null;
51
+ }
52
+ return transform({
53
+ adapter: this,
54
+ config: this.payload.config,
55
+ data: docs[0],
56
+ fields: collection.flattenedFields,
57
+ joinQuery: false,
58
+ tableName
59
+ });
60
+ }
22
61
  // selectDistinct will only return if there are joins
23
62
  const selectDistinctResult = await selectDistinct({
24
63
  adapter: this,
@@ -58,7 +97,8 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
58
97
  operation: 'update',
59
98
  req,
60
99
  select,
61
- tableName
100
+ tableName,
101
+ where: whereToUpdate
62
102
  });
63
103
  if (returning === false) {
64
104
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { UpdateOne } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getPrimaryDb } from './utilities/getPrimaryDb.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: DrizzleAdapter,\n {\n id,\n collection: collectionSlug,\n data,\n joins: joinQuery,\n locale,\n options = { upsert: false },\n req,\n returning,\n select,\n where: whereArg,\n },\n) {\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n let idToUpdate = id\n\n const db = getPrimaryDb(this, await getTransaction(this, req))\n\n if (!idToUpdate) {\n const { joins, selectFields, where } = buildQuery({\n adapter: this,\n fields: collection.flattenedFields,\n locale,\n tableName,\n where: whereArg,\n })\n\n // selectDistinct will only return if there are joins\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n joins,\n query: ({ query }) => query.limit(1),\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n // If id wasn't passed but `where` without any joins, retrieve it with findFirst\n } else if (whereArg && !joins.length) {\n const table = this.tables[tableName]\n\n const docsToUpdate = await (db as LibSQLDatabase)\n .select({\n id: table.id,\n })\n .from(table)\n .where(where)\n .limit(1)\n idToUpdate = docsToUpdate?.[0]?.id\n }\n }\n\n if (!idToUpdate && !options.upsert) {\n // TODO: In 4.0, if returning === false, we should differentiate between:\n // - No document found to update\n // - Document found, but returning === false\n return null\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n collectionSlug,\n data,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n joinQuery,\n operation: 'update',\n req,\n select,\n tableName,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["toSnakeCase","buildQuery","selectDistinct","upsertRow","getPrimaryDb","getTransaction","updateOne","id","collection","collectionSlug","data","joins","joinQuery","locale","options","upsert","req","returning","select","where","whereArg","payload","collections","config","tableName","tableNameMap","get","slug","idToUpdate","db","selectFields","adapter","fields","flattenedFields","selectDistinctResult","query","limit","length","table","tables","docsToUpdate","from","result","ignoreResult","operation"],"mappings":"AAGA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EACEC,EAAE,EACFC,YAAYC,cAAc,EAC1BC,IAAI,EACJC,OAAOC,SAAS,EAChBC,MAAM,EACNC,UAAU;IAAEC,QAAQ;AAAM,CAAC,EAC3BC,GAAG,EACHC,SAAS,EACTC,MAAM,EACNC,OAAOC,QAAQ,EAChB;IAED,MAAMZ,aAAa,IAAI,CAACa,OAAO,CAACC,WAAW,CAACb,eAAe,CAACc,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC1B,YAAYQ,WAAWmB,IAAI;IACnE,IAAIC,aAAarB;IAEjB,MAAMsB,KAAKzB,aAAa,IAAI,EAAE,MAAMC,eAAe,IAAI,EAAEW;IAEzD,IAAI,CAACY,YAAY;QACf,MAAM,EAAEjB,KAAK,EAAEmB,YAAY,EAAEX,KAAK,EAAE,GAAGlB,WAAW;YAChD8B,SAAS,IAAI;YACbC,QAAQxB,WAAWyB,eAAe;YAClCpB;YACAW;YACAL,OAAOC;QACT;QAEA,qDAAqD;QACrD,MAAMc,uBAAuB,MAAMhC,eAAe;YAChD6B,SAAS,IAAI;YACbF;YACAlB;YACAwB,OAAO,CAAC,EAAEA,KAAK,EAAE,GAAKA,MAAMC,KAAK,CAAC;YAClCN;YACAN;YACAL;QACF;QAEA,IAAIe,sBAAsB,CAAC,EAAE,EAAE3B,IAAI;YACjCqB,aAAaM,sBAAsB,CAAC,EAAE,EAAE3B;QACxC,gFAAgF;QAClF,OAAO,IAAIa,YAAY,CAACT,MAAM0B,MAAM,EAAE;YACpC,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACf,UAAU;YAEpC,MAAMgB,eAAe,MAAM,AAACX,GACzBX,MAAM,CAAC;gBACNX,IAAI+B,MAAM/B,EAAE;YACd,GACCkC,IAAI,CAACH,OACLnB,KAAK,CAACA,OACNiB,KAAK,CAAC;YACTR,aAAaY,cAAc,CAAC,EAAE,EAAEjC;QAClC;IACF;IAEA,IAAI,CAACqB,cAAc,CAACd,QAAQC,MAAM,EAAE;QAClC,yEAAyE;QACzE,gCAAgC;QAChC,4CAA4C;QAC5C,OAAO;IACT;IAEA,MAAM2B,SAAS,MAAMvC,UAAU;QAC7BI,IAAIqB;QACJG,SAAS,IAAI;QACbtB;QACAC;QACAmB;QACAG,QAAQxB,WAAWyB,eAAe;QAClCU,cAAc1B,cAAc;QAC5BL;QACAgC,WAAW;QACX5B;QACAE;QACAM;IACF;IAEA,IAAIP,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOyB;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/updateOne.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { UpdateOne } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { transform } from './transform/read/index.js'\nimport { transformForWrite } from './transform/write/index.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js'\nimport { getPrimaryDb } from './utilities/getPrimaryDb.js'\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { markWrite } from './utilities/readAfterWrite.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: DrizzleAdapter,\n {\n id,\n collection: collectionSlug,\n data,\n joins: joinQuery,\n locale,\n options = { upsert: false },\n req,\n returning,\n select,\n where: whereArg,\n },\n) {\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n let idToUpdate = id\n let whereToUpdate: SQL<unknown> | undefined\n\n const db = getPrimaryDb(this, await getTransaction(this, req))\n\n if (!idToUpdate) {\n const { joins, selectFields, where } = buildQuery({\n adapter: this,\n fields: collection.flattenedFields,\n locale,\n tableName,\n where: whereArg,\n })\n // A `where` that needs joins cannot be applied to the UPDATE statement itself, so those\n // queries keep resolving a matching id first and then update that row unconditionally\n whereToUpdate = joins.length === 0 ? where : undefined\n\n if (options.atomic === true) {\n if (!shouldUseOptimizedUpsertRow({ data, fields: collection.flattenedFields })) {\n throw new Error('Atomic where updates only support fields stored on the main table')\n }\n\n const { arraysToPush, row } = transformForWrite({\n adapter: this,\n data,\n enableAtomicWrites: true,\n fields: collection.flattenedFields,\n tableName,\n })\n\n if (arraysToPush && Object.keys(arraysToPush).length) {\n throw new Error('Atomic where updates do not support array operations')\n }\n\n markWrite(this)\n\n const docs = await (db as LibSQLDatabase)\n .update(this.tables[tableName])\n .set(row)\n .where(where)\n .returning()\n\n if (!docs[0]) {\n return null\n }\n\n return transform({\n adapter: this,\n config: this.payload.config,\n data: docs[0],\n fields: collection.flattenedFields,\n joinQuery: false,\n tableName,\n })\n }\n\n // selectDistinct will only return if there are joins\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n db,\n joins,\n query: ({ query }) => query.limit(1),\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n // If id wasn't passed but `where` without any joins, retrieve it with findFirst\n } else if (whereArg && !joins.length) {\n const table = this.tables[tableName]\n\n const docsToUpdate = await (db as LibSQLDatabase)\n .select({\n id: table.id,\n })\n .from(table)\n .where(where)\n .limit(1)\n idToUpdate = docsToUpdate?.[0]?.id\n }\n }\n\n if (!idToUpdate && !options.upsert) {\n // TODO: In 4.0, if returning === false, we should differentiate between:\n // - No document found to update\n // - Document found, but returning === false\n return null\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n collectionSlug,\n data,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n joinQuery,\n operation: 'update',\n req,\n select,\n tableName,\n where: whereToUpdate,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["toSnakeCase","buildQuery","selectDistinct","transform","transformForWrite","upsertRow","shouldUseOptimizedUpsertRow","getPrimaryDb","getTransaction","markWrite","updateOne","id","collection","collectionSlug","data","joins","joinQuery","locale","options","upsert","req","returning","select","where","whereArg","payload","collections","config","tableName","tableNameMap","get","slug","idToUpdate","whereToUpdate","db","selectFields","adapter","fields","flattenedFields","length","undefined","atomic","Error","arraysToPush","row","enableAtomicWrites","Object","keys","docs","update","tables","set","selectDistinctResult","query","limit","table","docsToUpdate","from","result","ignoreResult","operation"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteExistingArrayRows.d.ts","sourceRoot":"","sources":["../../src/upsertRow/deleteExistingArrayRows.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAU,uCAK3C,IAAI,KAAG,OAAO,CAAC,IAAI,CAUrB,CAAA"}
1
+ {"version":3,"file":"deleteExistingArrayRows.d.ts","sourceRoot":"","sources":["../../src/upsertRow/deleteExistingArrayRows.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,uBAAuB,0CAKjC,IAAI,KAAG,OAAO,CAAC,IAAI,CAUrB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"deleteExistingRowsByPath.d.ts","sourceRoot":"","sources":["../../src/upsertRow/deleteExistingRowsByPath.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,iGAS5C,IAAI,KAAG,OAAO,CAAC,IAAI,CA4CrB,CAAA"}
1
+ {"version":3,"file":"deleteExistingRowsByPath.d.ts","sourceRoot":"","sources":["../../src/upsertRow/deleteExistingRowsByPath.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAErE,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,cAAc,CAAA;IACvB,EAAE,EAAE,cAAc,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAA;IAClD,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAC/B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,wBAAwB,oGASlC,IAAI,KAAG,OAAO,CAAC,IAAI,CA4CrB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleUpsertError.d.ts","sourceRoot":"","sources":["../../src/upsertRow/handleUpsertError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,kFAQ/B,qBAAqB,KAAG,KAiE1B,CAAA"}
1
+ {"version":3,"file":"handleUpsertError.d.ts","sourceRoot":"","sources":["../../src/upsertRow/handleUpsertError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,cAAc,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,qFAQ3B,qBAAqB,KAAG,KAkE1B,CAAA"}
@@ -51,7 +51,8 @@ import { ValidationError } from 'payload';
51
51
  errors: [
52
52
  {
53
53
  message: req?.t ? req.t('error:valueMustBeUnique') : 'Value must be unique',
54
- path: fieldName
54
+ path: fieldName,
55
+ tableName
55
56
  }
56
57
  ],
57
58
  global: globalSlug,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/upsertRow/handleUpsertError.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { ValidationError } from 'payload'\n\nimport type { DrizzleAdapter } from '../types.js'\n\ntype HandleUpsertErrorArgs = {\n adapter: DrizzleAdapter\n collectionSlug?: string\n error: unknown\n globalSlug?: string\n id?: number | string\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\n/**\n * Handles unique constraint violation errors from PostgreSQL and SQLite,\n * converting them to Payload ValidationErrors.\n * Re-throws non-constraint errors unchanged.\n */\nexport const handleUpsertError = ({\n id,\n adapter,\n collectionSlug,\n error: caughtError,\n globalSlug,\n req,\n tableName,\n}: HandleUpsertErrorArgs): never => {\n let error: any = caughtError\n if (typeof caughtError === 'object' && caughtError !== null && 'cause' in caughtError) {\n error = caughtError.cause\n }\n\n // PostgreSQL: 23505, SQLite: SQLITE_CONSTRAINT_UNIQUE\n if (error?.code === '23505' || error?.code === 'SQLITE_CONSTRAINT_UNIQUE') {\n let fieldName: null | string = null\n\n if (error.code === '23505') {\n // PostgreSQL - extract field name from constraint\n if (adapter.fieldConstraints?.[tableName]?.[error.constraint]) {\n fieldName = adapter.fieldConstraints[tableName][error.constraint]\n } else {\n const replacement = `${tableName}_`\n if (error.constraint?.includes(replacement)) {\n const replacedConstraint = error.constraint.replace(replacement, '')\n if (replacedConstraint && adapter.fieldConstraints[tableName]?.[replacedConstraint]) {\n fieldName = adapter.fieldConstraints[tableName][replacedConstraint]\n }\n }\n }\n\n if (!fieldName && error.detail) {\n // Extract from detail: \"Key (field)=(value) already exists.\"\n const regex = /Key \\(([^)]+)\\)=\\(([^)]+)\\)/\n const match: string[] = error.detail.match(regex)\n if (match && match[1]) {\n fieldName = match[1]\n }\n }\n } else if (error.code === 'SQLITE_CONSTRAINT_UNIQUE') {\n // SQLite - extract from message: \"UNIQUE constraint failed: table.field[, table.field2, ...]\"\n const regex = /UNIQUE constraint failed: ([^.]+)\\.([^.,]+)/\n const match: string[] = error.message?.match(regex)\n if (match && match[2]) {\n if (adapter.fieldConstraints[tableName]) {\n fieldName = adapter.fieldConstraints[tableName][`${match[2]}_idx`]\n }\n if (!fieldName) {\n fieldName = match[2]\n }\n }\n }\n\n throw new ValidationError(\n {\n id,\n collection: collectionSlug,\n errors: [\n {\n message: req?.t ? req.t('error:valueMustBeUnique') : 'Value must be unique',\n path: fieldName,\n },\n ],\n global: globalSlug,\n req,\n },\n req?.t,\n )\n }\n\n // Re-throw non-constraint errors\n throw caughtError\n}\n"],"names":["ValidationError","handleUpsertError","id","adapter","collectionSlug","error","caughtError","globalSlug","req","tableName","cause","code","fieldName","fieldConstraints","constraint","replacement","includes","replacedConstraint","replace","detail","regex","match","message","collection","errors","t","path","global"],"mappings":"AAEA,SAASA,eAAe,QAAQ,UAAS;AAczC;;;;CAIC,GACD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,EAAE,EACFC,OAAO,EACPC,cAAc,EACdC,OAAOC,WAAW,EAClBC,UAAU,EACVC,GAAG,EACHC,SAAS,EACa;IACtB,IAAIJ,QAAaC;IACjB,IAAI,OAAOA,gBAAgB,YAAYA,gBAAgB,QAAQ,WAAWA,aAAa;QACrFD,QAAQC,YAAYI,KAAK;IAC3B;IAEA,sDAAsD;IACtD,IAAIL,OAAOM,SAAS,WAAWN,OAAOM,SAAS,4BAA4B;QACzE,IAAIC,YAA2B;QAE/B,IAAIP,MAAMM,IAAI,KAAK,SAAS;YAC1B,kDAAkD;YAClD,IAAIR,QAAQU,gBAAgB,EAAE,CAACJ,UAAU,EAAE,CAACJ,MAAMS,UAAU,CAAC,EAAE;gBAC7DF,YAAYT,QAAQU,gBAAgB,CAACJ,UAAU,CAACJ,MAAMS,UAAU,CAAC;YACnE,OAAO;gBACL,MAAMC,cAAc,GAAGN,UAAU,CAAC,CAAC;gBACnC,IAAIJ,MAAMS,UAAU,EAAEE,SAASD,cAAc;oBAC3C,MAAME,qBAAqBZ,MAAMS,UAAU,CAACI,OAAO,CAACH,aAAa;oBACjE,IAAIE,sBAAsBd,QAAQU,gBAAgB,CAACJ,UAAU,EAAE,CAACQ,mBAAmB,EAAE;wBACnFL,YAAYT,QAAQU,gBAAgB,CAACJ,UAAU,CAACQ,mBAAmB;oBACrE;gBACF;YACF;YAEA,IAAI,CAACL,aAAaP,MAAMc,MAAM,EAAE;gBAC9B,6DAA6D;gBAC7D,MAAMC,QAAQ;gBACd,MAAMC,QAAkBhB,MAAMc,MAAM,CAACE,KAAK,CAACD;gBAC3C,IAAIC,SAASA,KAAK,CAAC,EAAE,EAAE;oBACrBT,YAAYS,KAAK,CAAC,EAAE;gBACtB;YACF;QACF,OAAO,IAAIhB,MAAMM,IAAI,KAAK,4BAA4B;YACpD,8FAA8F;YAC9F,MAAMS,QAAQ;YACd,MAAMC,QAAkBhB,MAAMiB,OAAO,EAAED,MAAMD;YAC7C,IAAIC,SAASA,KAAK,CAAC,EAAE,EAAE;gBACrB,IAAIlB,QAAQU,gBAAgB,CAACJ,UAAU,EAAE;oBACvCG,YAAYT,QAAQU,gBAAgB,CAACJ,UAAU,CAAC,GAAGY,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACpE;gBACA,IAAI,CAACT,WAAW;oBACdA,YAAYS,KAAK,CAAC,EAAE;gBACtB;YACF;QACF;QAEA,MAAM,IAAIrB,gBACR;YACEE;YACAqB,YAAYnB;YACZoB,QAAQ;gBACN;oBACEF,SAASd,KAAKiB,IAAIjB,IAAIiB,CAAC,CAAC,6BAA6B;oBACrDC,MAAMd;gBACR;aACD;YACDe,QAAQpB;YACRC;QACF,GACAA,KAAKiB;IAET;IAEA,iCAAiC;IACjC,MAAMnB;AACR,EAAC"}
1
+ {"version":3,"sources":["../../src/upsertRow/handleUpsertError.ts"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { ValidationError } from 'payload'\n\nimport type { DrizzleAdapter } from '../types.js'\n\ntype HandleUpsertErrorArgs = {\n adapter: DrizzleAdapter\n collectionSlug?: string\n error: unknown\n globalSlug?: string\n id?: number | string\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\n/**\n * Handles unique constraint violation errors from PostgreSQL and SQLite,\n * converting them to Payload ValidationErrors.\n * Re-throws non-constraint errors unchanged.\n */\nexport const handleUpsertError = ({\n id,\n adapter,\n collectionSlug,\n error: caughtError,\n globalSlug,\n req,\n tableName,\n}: HandleUpsertErrorArgs): never => {\n let error: any = caughtError\n if (typeof caughtError === 'object' && caughtError !== null && 'cause' in caughtError) {\n error = caughtError.cause\n }\n\n // PostgreSQL: 23505, SQLite: SQLITE_CONSTRAINT_UNIQUE\n if (error?.code === '23505' || error?.code === 'SQLITE_CONSTRAINT_UNIQUE') {\n let fieldName: null | string = null\n\n if (error.code === '23505') {\n // PostgreSQL - extract field name from constraint\n if (adapter.fieldConstraints?.[tableName]?.[error.constraint]) {\n fieldName = adapter.fieldConstraints[tableName][error.constraint]\n } else {\n const replacement = `${tableName}_`\n if (error.constraint?.includes(replacement)) {\n const replacedConstraint = error.constraint.replace(replacement, '')\n if (replacedConstraint && adapter.fieldConstraints[tableName]?.[replacedConstraint]) {\n fieldName = adapter.fieldConstraints[tableName][replacedConstraint]\n }\n }\n }\n\n if (!fieldName && error.detail) {\n // Extract from detail: \"Key (field)=(value) already exists.\"\n const regex = /Key \\(([^)]+)\\)=\\(([^)]+)\\)/\n const match: string[] = error.detail.match(regex)\n if (match && match[1]) {\n fieldName = match[1]\n }\n }\n } else if (error.code === 'SQLITE_CONSTRAINT_UNIQUE') {\n // SQLite - extract from message: \"UNIQUE constraint failed: table.field[, table.field2, ...]\"\n const regex = /UNIQUE constraint failed: ([^.]+)\\.([^.,]+)/\n const match: string[] = error.message?.match(regex)\n if (match && match[2]) {\n if (adapter.fieldConstraints[tableName]) {\n fieldName = adapter.fieldConstraints[tableName][`${match[2]}_idx`]\n }\n if (!fieldName) {\n fieldName = match[2]\n }\n }\n }\n\n throw new ValidationError(\n {\n id,\n collection: collectionSlug,\n errors: [\n {\n message: req?.t ? req.t('error:valueMustBeUnique') : 'Value must be unique',\n path: fieldName,\n tableName,\n },\n ],\n global: globalSlug,\n req,\n },\n req?.t,\n )\n }\n\n // Re-throw non-constraint errors\n throw caughtError\n}\n"],"names":["ValidationError","handleUpsertError","id","adapter","collectionSlug","error","caughtError","globalSlug","req","tableName","cause","code","fieldName","fieldConstraints","constraint","replacement","includes","replacedConstraint","replace","detail","regex","match","message","collection","errors","t","path","global"],"mappings":"AAEA,SAASA,eAAe,QAAQ,UAAS;AAczC;;;;CAIC,GACD,OAAO,MAAMC,oBAAoB,CAAC,EAChCC,EAAE,EACFC,OAAO,EACPC,cAAc,EACdC,OAAOC,WAAW,EAClBC,UAAU,EACVC,GAAG,EACHC,SAAS,EACa;IACtB,IAAIJ,QAAaC;IACjB,IAAI,OAAOA,gBAAgB,YAAYA,gBAAgB,QAAQ,WAAWA,aAAa;QACrFD,QAAQC,YAAYI,KAAK;IAC3B;IAEA,sDAAsD;IACtD,IAAIL,OAAOM,SAAS,WAAWN,OAAOM,SAAS,4BAA4B;QACzE,IAAIC,YAA2B;QAE/B,IAAIP,MAAMM,IAAI,KAAK,SAAS;YAC1B,kDAAkD;YAClD,IAAIR,QAAQU,gBAAgB,EAAE,CAACJ,UAAU,EAAE,CAACJ,MAAMS,UAAU,CAAC,EAAE;gBAC7DF,YAAYT,QAAQU,gBAAgB,CAACJ,UAAU,CAACJ,MAAMS,UAAU,CAAC;YACnE,OAAO;gBACL,MAAMC,cAAc,GAAGN,UAAU,CAAC,CAAC;gBACnC,IAAIJ,MAAMS,UAAU,EAAEE,SAASD,cAAc;oBAC3C,MAAME,qBAAqBZ,MAAMS,UAAU,CAACI,OAAO,CAACH,aAAa;oBACjE,IAAIE,sBAAsBd,QAAQU,gBAAgB,CAACJ,UAAU,EAAE,CAACQ,mBAAmB,EAAE;wBACnFL,YAAYT,QAAQU,gBAAgB,CAACJ,UAAU,CAACQ,mBAAmB;oBACrE;gBACF;YACF;YAEA,IAAI,CAACL,aAAaP,MAAMc,MAAM,EAAE;gBAC9B,6DAA6D;gBAC7D,MAAMC,QAAQ;gBACd,MAAMC,QAAkBhB,MAAMc,MAAM,CAACE,KAAK,CAACD;gBAC3C,IAAIC,SAASA,KAAK,CAAC,EAAE,EAAE;oBACrBT,YAAYS,KAAK,CAAC,EAAE;gBACtB;YACF;QACF,OAAO,IAAIhB,MAAMM,IAAI,KAAK,4BAA4B;YACpD,8FAA8F;YAC9F,MAAMS,QAAQ;YACd,MAAMC,QAAkBhB,MAAMiB,OAAO,EAAED,MAAMD;YAC7C,IAAIC,SAASA,KAAK,CAAC,EAAE,EAAE;gBACrB,IAAIlB,QAAQU,gBAAgB,CAACJ,UAAU,EAAE;oBACvCG,YAAYT,QAAQU,gBAAgB,CAACJ,UAAU,CAAC,GAAGY,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACpE;gBACA,IAAI,CAACT,WAAW;oBACdA,YAAYS,KAAK,CAAC,EAAE;gBACtB;YACF;QACF;QAEA,MAAM,IAAIrB,gBACR;YACEE;YACAqB,YAAYnB;YACZoB,QAAQ;gBACN;oBACEF,SAASd,KAAKiB,IAAIjB,IAAIiB,CAAC,CAAC,6BAA6B;oBACrDC,MAAMd;oBACNH;gBACF;aACD;YACDkB,QAAQpB;YACRC;QACF,GACAA,KAAKiB;IAET;IAEA,iCAAiC;IACjC,MAAMnB;AACR,EAAC"}
@@ -7,5 +7,5 @@ import type { Args } from './types.js';
7
7
  *
8
8
  * adapter function replaces the entire row and does not support partial updates.
9
9
  */
10
- export declare const upsertRow: <T extends Record<string, unknown> | TypeWithID>({ id, adapter, collectionSlug, data, db, fields, globalSlug, ignoreResult, customID, joinQuery: _joinQuery, operation, path, req, select, tableName, upsertTarget, where, }: Args) => Promise<T>;
10
+ export declare const upsertRow: <T extends Record<string, unknown> | TypeWithID>({ id, adapter, collectionSlug, data, db, fields, globalSlug, ignoreResult, customID, joinQuery: _joinQuery, operation, path, req, select, tableName, upsertTarget, where, }: Args) => Promise<null | T>;
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upsertRow/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAKzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAqBtC;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,EAAE,6KAqB7E,IAAI,KAAG,OAAO,CAAC,CAAC,CAgtBlB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upsertRow/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAKzC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAqBtC;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,+KAqB3E,IAAI,KAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CA2uBzB,CAAA"}