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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. package/dist/connect.d.ts.map +1 -1
  2. package/dist/connect.js +12 -7
  3. package/dist/connect.js.map +1 -1
  4. package/dist/count.d.ts.map +1 -1
  5. package/dist/count.js +1 -10
  6. package/dist/count.js.map +1 -1
  7. package/dist/createMigration.d.ts.map +1 -1
  8. package/dist/createMigration.js +56 -35
  9. package/dist/createMigration.js.map +1 -1
  10. package/dist/createVersion.d.ts.map +1 -1
  11. package/dist/createVersion.js +2 -6
  12. package/dist/createVersion.js.map +1 -1
  13. package/dist/deleteOne.js +2 -2
  14. package/dist/deleteOne.js.map +1 -1
  15. package/dist/destroy.d.ts.map +1 -1
  16. package/dist/destroy.js +4 -0
  17. package/dist/destroy.js.map +1 -1
  18. package/dist/exports/migration-utils.d.ts +2 -0
  19. package/dist/exports/migration-utils.d.ts.map +1 -0
  20. package/dist/exports/migration-utils.js +3 -0
  21. package/dist/exports/migration-utils.js.map +1 -0
  22. package/dist/find/buildFindManyArgs.d.ts +5 -1
  23. package/dist/find/buildFindManyArgs.d.ts.map +1 -1
  24. package/dist/find/buildFindManyArgs.js +2 -1
  25. package/dist/find/buildFindManyArgs.js.map +1 -1
  26. package/dist/find/findMany.d.ts.map +1 -1
  27. package/dist/find/findMany.js +4 -15
  28. package/dist/find/findMany.js.map +1 -1
  29. package/dist/find/traverseFields.d.ts +3 -2
  30. package/dist/find/traverseFields.d.ts.map +1 -1
  31. package/dist/find/traverseFields.js +22 -4
  32. package/dist/find/traverseFields.js.map +1 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +9 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/init.d.ts.map +1 -1
  37. package/dist/init.js +14 -19
  38. package/dist/init.js.map +1 -1
  39. package/dist/predefinedMigrations/relationships-v2-v3.d.ts +4 -0
  40. package/dist/predefinedMigrations/relationships-v2-v3.d.ts.map +1 -0
  41. package/dist/predefinedMigrations/relationships-v2-v3.js.map +1 -0
  42. package/dist/predefinedMigrations/relationships-v2-v3.mjs +11 -0
  43. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts +20 -0
  44. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -0
  45. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js +170 -0
  46. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -0
  47. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts +11 -0
  48. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -0
  49. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js +191 -0
  50. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -0
  51. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts +3 -0
  52. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -0
  53. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js +56 -0
  54. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js.map +1 -0
  55. package/dist/predefinedMigrations/v2-v3/index.d.ts +24 -0
  56. package/dist/predefinedMigrations/v2-v3/index.d.ts.map +1 -0
  57. package/dist/predefinedMigrations/v2-v3/index.js +211 -0
  58. package/dist/predefinedMigrations/v2-v3/index.js.map +1 -0
  59. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts +19 -0
  60. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -0
  61. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js +57 -0
  62. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js.map +1 -0
  63. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts +23 -0
  64. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -0
  65. package/dist/predefinedMigrations/v2-v3/traverseFields.js +85 -0
  66. package/dist/predefinedMigrations/v2-v3/traverseFields.js.map +1 -0
  67. package/dist/predefinedMigrations/v2-v3/types.d.ts +9 -0
  68. package/dist/predefinedMigrations/v2-v3/types.d.ts.map +1 -0
  69. package/dist/predefinedMigrations/v2-v3/types.js +6 -0
  70. package/dist/predefinedMigrations/v2-v3/types.js.map +1 -0
  71. package/dist/queries/buildAndOrConditions.d.ts +3 -4
  72. package/dist/queries/buildAndOrConditions.d.ts.map +1 -1
  73. package/dist/queries/buildAndOrConditions.js +1 -2
  74. package/dist/queries/buildAndOrConditions.js.map +1 -1
  75. package/dist/queries/buildQuery.d.ts +1 -2
  76. package/dist/queries/buildQuery.d.ts.map +1 -1
  77. package/dist/queries/buildQuery.js +1 -5
  78. package/dist/queries/buildQuery.js.map +1 -1
  79. package/dist/queries/getTableColumnFromPath.d.ts +3 -4
  80. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  81. package/dist/queries/getTableColumnFromPath.js +168 -96
  82. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  83. package/dist/queries/parseParams.d.ts +3 -4
  84. package/dist/queries/parseParams.d.ts.map +1 -1
  85. package/dist/queries/parseParams.js +7 -6
  86. package/dist/queries/parseParams.js.map +1 -1
  87. package/dist/queries/selectDistinct.d.ts +3 -4
  88. package/dist/queries/selectDistinct.d.ts.map +1 -1
  89. package/dist/queries/selectDistinct.js +3 -14
  90. package/dist/queries/selectDistinct.js.map +1 -1
  91. package/dist/schema/build.d.ts +8 -4
  92. package/dist/schema/build.d.ts.map +1 -1
  93. package/dist/schema/build.js +161 -112
  94. package/dist/schema/build.js.map +1 -1
  95. package/dist/schema/traverseFields.d.ts +4 -6
  96. package/dist/schema/traverseFields.d.ts.map +1 -1
  97. package/dist/schema/traverseFields.js +103 -40
  98. package/dist/schema/traverseFields.js.map +1 -1
  99. package/dist/transactions/beginTransaction.d.ts.map +1 -1
  100. package/dist/transactions/beginTransaction.js +4 -0
  101. package/dist/transactions/beginTransaction.js.map +1 -1
  102. package/dist/transform/read/index.d.ts +3 -1
  103. package/dist/transform/read/index.d.ts.map +1 -1
  104. package/dist/transform/read/index.js +2 -1
  105. package/dist/transform/read/index.js.map +1 -1
  106. package/dist/transform/read/relationship.d.ts.map +1 -1
  107. package/dist/transform/read/relationship.js +0 -4
  108. package/dist/transform/read/relationship.js.map +1 -1
  109. package/dist/transform/read/traverseFields.d.ts +6 -1
  110. package/dist/transform/read/traverseFields.d.ts.map +1 -1
  111. package/dist/transform/read/traverseFields.js +69 -55
  112. package/dist/transform/read/traverseFields.js.map +1 -1
  113. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  114. package/dist/transform/write/traverseFields.js +20 -3
  115. package/dist/transform/write/traverseFields.js.map +1 -1
  116. package/dist/types.d.ts +3 -0
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/types.js.map +1 -1
  119. package/dist/update.d.ts.map +1 -1
  120. package/dist/update.js +1 -2
  121. package/dist/update.js.map +1 -1
  122. package/dist/upsertRow/index.d.ts +1 -1
  123. package/dist/upsertRow/index.d.ts.map +1 -1
  124. package/dist/upsertRow/index.js +3 -1
  125. package/dist/upsertRow/index.js.map +1 -1
  126. package/dist/upsertRow/types.d.ts +5 -0
  127. package/dist/upsertRow/types.d.ts.map +1 -1
  128. package/dist/upsertRow/types.js.map +1 -1
  129. package/dist/utilities/pushDevSchema.d.ts.map +1 -1
  130. package/dist/utilities/pushDevSchema.js +1 -1
  131. package/dist/utilities/pushDevSchema.js.map +1 -1
  132. package/package.json +12 -6
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n} from 'drizzle-orm'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgEnum,\n PgSchema,\n PgTableWithColumns,\n PgTransaction,\n} from 'drizzle-orm/pg-core'\nimport type { PgTableFn } from 'drizzle-orm/pg-core/table'\nimport type { Payload } from 'payload'\nimport type { BaseDatabaseAdapter } from 'payload/database'\nimport type { PayloadRequestWithData } from 'payload/types'\nimport type { Pool, PoolConfig } from 'pg'\n\nexport type DrizzleDB = NodePgDatabase<Record<string, unknown>>\n\nexport type Args = {\n idType?: 'serial' | 'uuid'\n localesSuffix?: string\n logger?: DrizzleConfig['logger']\n migrationDir?: string\n pool: PoolConfig\n push?: boolean\n relationshipsSuffix?: string\n schemaName?: string\n versionsSuffix?: string\n}\n\nexport type GenericColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns = {\n [x: string]: GenericColumn\n}\n\nexport type GenericTable = PgTableWithColumns<{\n columns: GenericColumns\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericEnum = PgEnum<[string, ...string[]]>\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type DrizzleTransaction = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type PostgresAdapter = BaseDatabaseAdapter & {\n drizzle: DrizzleDB\n enums: Record<string, GenericEnum>\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 idType: Args['idType']\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n pgSchema?: { table: PgTableFn } | PgSchema\n pool: Pool\n poolOptions: Args['pool']\n push: boolean\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n schema: Record<string, GenericEnum | GenericRelation | GenericTable>\n schemaName?: Args['schemaName']\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, GenericTable | PgTableWithColumns<any>>\n versionsSuffix?: string\n}\n\nexport type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar'\n\nexport type PostgresAdapterResult = (args: { payload: Payload }) => PostgresAdapter\n\nexport type MigrateUpArgs = { payload: Payload; req?: Partial<PayloadRequestWithData> }\nexport type MigrateDownArgs = { payload: Payload; req?: Partial<PayloadRequestWithData> }\n\ndeclare module 'payload' {\n export interface DatabaseAdapter\n extends Omit<Args, 'migrationDir' | 'pool'>,\n BaseDatabaseAdapter {\n drizzle: DrizzleDB\n enums: Record<string, GenericEnum>\n fieldConstraints: Record<string, Record<string, string>>\n localeSuffix?: string\n pool: Pool\n push: boolean\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n schema: Record<string, GenericEnum | GenericRelation | GenericTable>\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tables: Record<string, GenericTable>\n versionsSuffix?: string\n }\n}\n"],"names":[],"rangeMappings":"","mappings":"AAkGA,WAAyF"}
1
+ {"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n} from 'drizzle-orm'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgEnum,\n PgSchema,\n PgTableWithColumns,\n PgTransaction,\n} from 'drizzle-orm/pg-core'\nimport type { PgTableFn } from 'drizzle-orm/pg-core/table'\nimport type { Payload } from 'payload'\nimport type { BaseDatabaseAdapter } from 'payload/database'\nimport type { PayloadRequestWithData } from 'payload/types'\nimport type { Pool, PoolConfig } from 'pg'\n\nexport type DrizzleDB = NodePgDatabase<Record<string, unknown>>\n\nexport type Args = {\n idType?: 'serial' | 'uuid'\n localesSuffix?: string\n logger?: DrizzleConfig['logger']\n migrationDir?: string\n pool: PoolConfig\n push?: boolean\n relationshipsSuffix?: string\n schemaName?: string\n versionsSuffix?: string\n}\n\nexport type GenericColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns = {\n [x: string]: GenericColumn\n}\n\nexport type GenericTable = PgTableWithColumns<{\n columns: GenericColumns\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericEnum = PgEnum<[string, ...string[]]>\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type DrizzleTransaction = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type PostgresAdapter = BaseDatabaseAdapter & {\n drizzle: DrizzleDB\n enums: Record<string, GenericEnum>\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 idType: Args['idType']\n initializing: Promise<void>\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n pgSchema?: { table: PgTableFn } | PgSchema\n pool: Pool\n poolOptions: Args['pool']\n push: boolean\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n resolveInitializing: () => void\n schema: Record<string, GenericEnum | GenericRelation | GenericTable>\n schemaName?: Args['schemaName']\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, GenericTable | PgTableWithColumns<any>>\n versionsSuffix?: string\n}\n\nexport type IDType = 'integer' | 'numeric' | 'uuid' | 'varchar'\n\nexport type PostgresAdapterResult = (args: { payload: Payload }) => PostgresAdapter\n\nexport type MigrateUpArgs = { payload: Payload; req?: Partial<PayloadRequestWithData> }\nexport type MigrateDownArgs = { payload: Payload; req?: Partial<PayloadRequestWithData> }\n\ndeclare module 'payload' {\n export interface DatabaseAdapter\n extends Omit<Args, 'migrationDir' | 'pool'>,\n BaseDatabaseAdapter {\n drizzle: DrizzleDB\n enums: Record<string, GenericEnum>\n fieldConstraints: Record<string, Record<string, string>>\n localeSuffix?: string\n pool: Pool\n push: boolean\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n schema: Record<string, GenericEnum | GenericRelation | GenericTable>\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tables: Record<string, GenericTable>\n versionsSuffix?: string\n }\n}\n"],"names":[],"rangeMappings":"","mappings":"AAqGA,WAAyF"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAUjD,eAAO,MAAM,SAAS,EAAE,SA6CvB,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAUjD,eAAO,MAAM,SAAS,EAAE,SA4CvB,CAAA"}
package/dist/update.js CHANGED
@@ -12,7 +12,7 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
12
12
  }
13
13
  };
14
14
  let idToUpdate = id;
15
- const { joinAliases, joins, selectFields, where } = await buildQuery({
15
+ const { joins, selectFields, where } = await buildQuery({
16
16
  adapter: this,
17
17
  fields: collection.fields,
18
18
  locale,
@@ -30,7 +30,6 @@ export const updateOne = async function updateOne({ id, collection: collectionSl
30
30
  }
31
31
  ],
32
32
  db,
33
- joinAliases,
34
33
  joins,
35
34
  selectFields,
36
35
  tableName,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/update.ts"],"sourcesContent":["import type { UpdateOne } from 'payload/database'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { upsertRow } from './upsertRow/index.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: PostgresAdapter,\n { id, collection: collectionSlug, data, draft, locale, req, where: whereArg },\n) {\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const whereToUse = whereArg || { id: { equals: id } }\n let idToUpdate = id\n\n const { joinAliases, joins, selectFields, where } = await buildQuery({\n adapter: this,\n fields: collection.fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joinAliases,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n data,\n db,\n fields: collection.fields,\n operation: 'update',\n req,\n tableName,\n })\n\n return result\n}\n"],"names":["toSnakeCase","buildQuery","selectDistinct","upsertRow","updateOne","id","collection","collectionSlug","data","draft","locale","req","where","whereArg","db","sessions","transactionID","drizzle","payload","collections","config","tableName","tableNameMap","get","slug","whereToUse","equals","idToUpdate","joinAliases","joins","selectFields","adapter","fields","selectDistinctResult","chainedMethods","args","method","result","operation"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,EAAE,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAE7E,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAACJ,IAAIK,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMX,aAAa,IAAI,CAACY,OAAO,CAACC,WAAW,CAACZ,eAAe,CAACa,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACvB,YAAYM,WAAWkB,IAAI;IACnE,MAAMC,aAAaZ,YAAY;QAAER,IAAI;YAAEqB,QAAQrB;QAAG;IAAE;IACpD,IAAIsB,aAAatB;IAEjB,MAAM,EAAEuB,WAAW,EAAEC,KAAK,EAAEC,YAAY,EAAElB,KAAK,EAAE,GAAG,MAAMX,WAAW;QACnE8B,SAAS,IAAI;QACbC,QAAQ1B,WAAW0B,MAAM;QACzBtB;QACAW;QACAT,OAAOa;IACT;IAEA,MAAMQ,uBAAuB,MAAM/B,eAAe;QAChD6B,SAAS,IAAI;QACbG,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDtB;QACAc;QACAC;QACAC;QACAT;QACAT;IACF;IAEA,IAAIqB,sBAAsB,CAAC,EAAE,EAAE5B,IAAI;QACjCsB,aAAaM,sBAAsB,CAAC,EAAE,EAAE5B;IAC1C;IAEA,MAAMgC,SAAS,MAAMlC,UAAU;QAC7BE,IAAIsB;QACJI,SAAS,IAAI;QACbvB;QACAM;QACAkB,QAAQ1B,WAAW0B,MAAM;QACzBM,WAAW;QACX3B;QACAU;IACF;IAEA,OAAOgB;AACT,EAAC"}
1
+ {"version":3,"sources":["../src/update.ts"],"sourcesContent":["import type { UpdateOne } from 'payload/database'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from './types.js'\n\nimport buildQuery from './queries/buildQuery.js'\nimport { selectDistinct } from './queries/selectDistinct.js'\nimport { upsertRow } from './upsertRow/index.js'\n\nexport const updateOne: UpdateOne = async function updateOne(\n this: PostgresAdapter,\n { id, collection: collectionSlug, data, draft, locale, req, where: whereArg },\n) {\n const db = this.sessions[req.transactionID]?.db || this.drizzle\n const collection = this.payload.collections[collectionSlug].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const whereToUse = whereArg || { id: { equals: id } }\n let idToUpdate = id\n\n const { joins, selectFields, where } = await buildQuery({\n adapter: this,\n fields: collection.fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const selectDistinctResult = await selectDistinct({\n adapter: this,\n chainedMethods: [{ args: [1], method: 'limit' }],\n db,\n joins,\n selectFields,\n tableName,\n where,\n })\n\n if (selectDistinctResult?.[0]?.id) {\n idToUpdate = selectDistinctResult?.[0]?.id\n }\n\n const result = await upsertRow({\n id: idToUpdate,\n adapter: this,\n data,\n db,\n fields: collection.fields,\n operation: 'update',\n req,\n tableName,\n })\n\n return result\n}\n"],"names":["toSnakeCase","buildQuery","selectDistinct","upsertRow","updateOne","id","collection","collectionSlug","data","draft","locale","req","where","whereArg","db","sessions","transactionID","drizzle","payload","collections","config","tableName","tableNameMap","get","slug","whereToUse","equals","idToUpdate","joins","selectFields","adapter","fields","selectDistinctResult","chainedMethods","args","method","result","operation"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,OAAOC,gBAAgB,0BAAyB;AAChD,SAASC,cAAc,QAAQ,8BAA6B;AAC5D,SAASC,SAAS,QAAQ,uBAAsB;AAEhD,OAAO,MAAMC,YAAuB,eAAeA,UAEjD,EAAEC,EAAE,EAAEC,YAAYC,cAAc,EAAEC,IAAI,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,OAAOC,QAAQ,EAAE;IAE7E,MAAMC,KAAK,IAAI,CAACC,QAAQ,CAACJ,IAAIK,aAAa,CAAC,EAAEF,MAAM,IAAI,CAACG,OAAO;IAC/D,MAAMX,aAAa,IAAI,CAACY,OAAO,CAACC,WAAW,CAACZ,eAAe,CAACa,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAACvB,YAAYM,WAAWkB,IAAI;IACnE,MAAMC,aAAaZ,YAAY;QAAER,IAAI;YAAEqB,QAAQrB;QAAG;IAAE;IACpD,IAAIsB,aAAatB;IAEjB,MAAM,EAAEuB,KAAK,EAAEC,YAAY,EAAEjB,KAAK,EAAE,GAAG,MAAMX,WAAW;QACtD6B,SAAS,IAAI;QACbC,QAAQzB,WAAWyB,MAAM;QACzBrB;QACAW;QACAT,OAAOa;IACT;IAEA,MAAMO,uBAAuB,MAAM9B,eAAe;QAChD4B,SAAS,IAAI;QACbG,gBAAgB;YAAC;gBAAEC,MAAM;oBAAC;iBAAE;gBAAEC,QAAQ;YAAQ;SAAE;QAChDrB;QACAc;QACAC;QACAR;QACAT;IACF;IAEA,IAAIoB,sBAAsB,CAAC,EAAE,EAAE3B,IAAI;QACjCsB,aAAaK,sBAAsB,CAAC,EAAE,EAAE3B;IAC1C;IAEA,MAAM+B,SAAS,MAAMjC,UAAU;QAC7BE,IAAIsB;QACJG,SAAS,IAAI;QACbtB;QACAM;QACAiB,QAAQzB,WAAWyB,MAAM;QACzBM,WAAW;QACX1B;QACAU;IACF;IAEA,OAAOe;AACT,EAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { TypeWithID } from 'payload/types';
2
2
  import type { Args } from './types.js';
3
- export declare const upsertRow: <T extends TypeWithID>({ id, adapter, data, db, fields, operation, path, req, tableName, upsertTarget, where, }: Args) => Promise<T>;
3
+ export declare const upsertRow: <T extends TypeWithID>({ id, adapter, data, db, fields, ignoreResult, operation, path, req, tableName, upsertTarget, where, }: Args) => Promise<T>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upsertRow/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAM/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAStC,eAAO,MAAM,SAAS,mHAYnB,IAAI,KAAG,QAAQ,CAAC,CAmUlB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/upsertRow/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAM/C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAStC,eAAO,MAAM,SAAS,iIAanB,IAAI,KAAG,QAAQ,CAAC,CAsUlB,CAAA"}
@@ -6,7 +6,7 @@ import { transformForWrite } from '../transform/write/index.js';
6
6
  import { deleteExistingArrayRows } from './deleteExistingArrayRows.js';
7
7
  import { deleteExistingRowsByPath } from './deleteExistingRowsByPath.js';
8
8
  import { insertArrays } from './insertArrays.js';
9
- export const upsertRow = async ({ id, adapter, data, db, fields, operation, path = '', req, tableName, upsertTarget, where })=>{
9
+ export const upsertRow = async ({ id, adapter, data, db, fields, ignoreResult, operation, path = '', req, tableName, upsertTarget, where })=>{
10
10
  // Split out the incoming data into the corresponding:
11
11
  // base row, locales, relationships, blocks, and arrays
12
12
  const rowToInsert = transformForWrite({
@@ -252,6 +252,7 @@ export const upsertRow = async ({ id, adapter, data, db, fields, operation, path
252
252
  }
253
253
  ], req.t) : error;
254
254
  }
255
+ if (ignoreResult) return data;
255
256
  // //////////////////////////////////
256
257
  // RETRIEVE NEWLY UPDATED ROW
257
258
  // //////////////////////////////////
@@ -267,6 +268,7 @@ export const upsertRow = async ({ id, adapter, data, db, fields, operation, path
267
268
  // TRANSFORM DATA
268
269
  // //////////////////////////////////
269
270
  const result = transform({
271
+ adapter,
270
272
  config: adapter.payload.config,
271
273
  data: doc,
272
274
  fields
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/upsertRow/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { TypeWithID } from 'payload/types'\n\nimport { eq } from 'drizzle-orm'\nimport { ValidationError } from 'payload/errors'\n\nimport type { BlockRowToInsert } from '../transform/write/types.js'\nimport type { Args } from './types.js'\n\nimport { buildFindManyArgs } from '../find/buildFindManyArgs.js'\nimport { transform } from '../transform/read/index.js'\nimport { transformForWrite } from '../transform/write/index.js'\nimport { deleteExistingArrayRows } from './deleteExistingArrayRows.js'\nimport { deleteExistingRowsByPath } from './deleteExistingRowsByPath.js'\nimport { insertArrays } from './insertArrays.js'\n\nexport const upsertRow = async <T extends TypeWithID>({\n id,\n adapter,\n data,\n db,\n fields,\n operation,\n path = '',\n req,\n tableName,\n upsertTarget,\n where,\n}: Args): Promise<T> => {\n // Split out the incoming data into the corresponding:\n // base row, locales, relationships, blocks, and arrays\n const rowToInsert = transformForWrite({\n adapter,\n data,\n fields,\n path,\n tableName,\n })\n\n // First, we insert the main row\n let insertedRow: Record<string, unknown>\n\n try {\n if (operation === 'update') {\n const target = upsertTarget || adapter.tables[tableName].id\n\n if (id) {\n rowToInsert.row.id = id\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .onConflictDoUpdate({ set: rowToInsert.row, target })\n .returning()\n } else {\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .onConflictDoUpdate({ set: rowToInsert.row, target, where })\n .returning()\n }\n } else {\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .returning()\n }\n\n const localesToInsert: Record<string, unknown>[] = []\n const relationsToInsert: Record<string, unknown>[] = []\n const textsToInsert: Record<string, unknown>[] = []\n const numbersToInsert: Record<string, unknown>[] = []\n const blocksToInsert: { [blockType: string]: BlockRowToInsert[] } = {}\n const selectsToInsert: { [selectTableName: string]: Record<string, unknown>[] } = {}\n\n // If there are locale rows with data, add the parent and locale to each\n if (Object.keys(rowToInsert.locales).length > 0) {\n Object.entries(rowToInsert.locales).forEach(([locale, localeRow]) => {\n localeRow._parentID = insertedRow.id\n localeRow._locale = locale\n localesToInsert.push(localeRow)\n })\n }\n\n // If there are relationships, add parent to each\n if (rowToInsert.relationships.length > 0) {\n rowToInsert.relationships.forEach((relation) => {\n relation.parent = insertedRow.id\n relationsToInsert.push(relation)\n })\n }\n\n // If there are texts, add parent to each\n if (rowToInsert.texts.length > 0) {\n rowToInsert.texts.forEach((textRow) => {\n textRow.parent = insertedRow.id\n textsToInsert.push(textRow)\n })\n }\n\n // If there are numbers, add parent to each\n if (rowToInsert.numbers.length > 0) {\n rowToInsert.numbers.forEach((numberRow) => {\n numberRow.parent = insertedRow.id\n numbersToInsert.push(numberRow)\n })\n }\n\n // If there are selects, add parent to each, and then\n // store by table name and rows\n if (Object.keys(rowToInsert.selects).length > 0) {\n Object.entries(rowToInsert.selects).forEach(([selectTableName, selectRows]) => {\n selectRows.forEach((row) => {\n if (typeof row.parent === 'undefined') {\n row.parent = insertedRow.id\n }\n if (!selectsToInsert[selectTableName]) selectsToInsert[selectTableName] = []\n selectsToInsert[selectTableName].push(row)\n })\n })\n }\n\n // If there are blocks, add parent to each, and then\n // store by table name and rows\n Object.keys(rowToInsert.blocks).forEach((blockName) => {\n rowToInsert.blocks[blockName].forEach((blockRow) => {\n blockRow.row._parentID = insertedRow.id\n if (!blocksToInsert[blockName]) blocksToInsert[blockName] = []\n if (blockRow.row.uuid) {\n delete blockRow.row.uuid\n }\n blocksToInsert[blockName].push(blockRow)\n })\n })\n\n // //////////////////////////////////\n // INSERT LOCALES\n // //////////////////////////////////\n\n if (localesToInsert.length > 0) {\n const localeTable = adapter.tables[`${tableName}${adapter.localesSuffix}`]\n\n if (operation === 'update') {\n await db.delete(localeTable).where(eq(localeTable._parentID, insertedRow.id))\n }\n\n await db.insert(localeTable).values(localesToInsert)\n }\n\n // //////////////////////////////////\n // INSERT RELATIONSHIPS\n // //////////////////////////////////\n\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: [...relationsToInsert, ...rowToInsert.relationshipsToDelete],\n tableName: relationshipsTableName,\n })\n }\n\n if (relationsToInsert.length > 0) {\n await db.insert(adapter.tables[relationshipsTableName]).values(relationsToInsert)\n }\n\n // //////////////////////////////////\n // INSERT hasMany TEXTS\n // //////////////////////////////////\n\n const textsTableName = `${tableName}_texts`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: textsToInsert,\n tableName: textsTableName,\n })\n }\n\n if (textsToInsert.length > 0) {\n await db.insert(adapter.tables[textsTableName]).values(textsToInsert).returning()\n }\n\n // //////////////////////////////////\n // INSERT hasMany NUMBERS\n // //////////////////////////////////\n\n const numbersTableName = `${tableName}_numbers`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: numbersToInsert,\n tableName: numbersTableName,\n })\n }\n\n if (numbersToInsert.length > 0) {\n await db.insert(adapter.tables[numbersTableName]).values(numbersToInsert).returning()\n }\n\n // //////////////////////////////////\n // INSERT BLOCKS\n // //////////////////////////////////\n\n const insertedBlockRows: Record<string, Record<string, unknown>[]> = {}\n\n if (operation === 'update') {\n for (const blockName of rowToInsert.blocksToDelete) {\n const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`)\n const blockTable = adapter.tables[blockTableName]\n await db.delete(blockTable).where(eq(blockTable._parentID, insertedRow.id))\n }\n }\n\n for (const [blockName, blockRows] of Object.entries(blocksToInsert)) {\n const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`)\n insertedBlockRows[blockName] = await db\n .insert(adapter.tables[blockTableName])\n .values(blockRows.map(({ row }) => row))\n .returning()\n\n insertedBlockRows[blockName].forEach((row, i) => {\n blockRows[i].row = row\n })\n\n const blockLocaleIndexMap: number[] = []\n\n const blockLocaleRowsToInsert = blockRows.reduce((acc, blockRow, i) => {\n if (Object.entries(blockRow.locales).length > 0) {\n Object.entries(blockRow.locales).forEach(([blockLocale, blockLocaleData]) => {\n if (Object.keys(blockLocaleData).length > 0) {\n blockLocaleData._parentID = blockRow.row.id\n blockLocaleData._locale = blockLocale\n acc.push(blockLocaleData)\n blockLocaleIndexMap.push(i)\n }\n })\n }\n\n return acc\n }, [])\n\n if (blockLocaleRowsToInsert.length > 0) {\n await db\n .insert(adapter.tables[`${blockTableName}${adapter.localesSuffix}`])\n .values(blockLocaleRowsToInsert)\n .returning()\n }\n\n await insertArrays({\n adapter,\n arrays: blockRows.map(({ arrays }) => arrays),\n db,\n parentRows: insertedBlockRows[blockName],\n })\n }\n\n // //////////////////////////////////\n // INSERT ARRAYS RECURSIVELY\n // //////////////////////////////////\n\n if (operation === 'update') {\n for (const arrayTableName of Object.keys(rowToInsert.arrays)) {\n await deleteExistingArrayRows({\n adapter,\n db,\n parentID: insertedRow.id,\n tableName: arrayTableName,\n })\n }\n }\n\n await insertArrays({\n adapter,\n arrays: [rowToInsert.arrays],\n db,\n parentRows: [insertedRow],\n })\n\n // //////////////////////////////////\n // INSERT hasMany SELECTS\n // //////////////////////////////////\n\n for (const [selectTableName, tableRows] of Object.entries(selectsToInsert)) {\n const selectTable = adapter.tables[selectTableName]\n if (operation === 'update') {\n await db.delete(selectTable).where(eq(selectTable.parent, insertedRow.id))\n }\n await db.insert(selectTable).values(tableRows).returning()\n }\n\n // //////////////////////////////////\n // Error Handling\n // //////////////////////////////////\n } catch (error) {\n throw error.code === '23505'\n ? new ValidationError(\n [\n {\n field: adapter.fieldConstraints[tableName][error.constraint],\n message: req.t('error:valueMustBeUnique'),\n },\n ],\n req.t,\n )\n : error\n }\n\n // //////////////////////////////////\n // RETRIEVE NEWLY UPDATED ROW\n // //////////////////////////////////\n\n const findManyArgs = buildFindManyArgs({\n adapter,\n depth: 0,\n fields,\n tableName,\n })\n\n findManyArgs.where = eq(adapter.tables[tableName].id, insertedRow.id)\n\n const doc = await db.query[tableName].findFirst(findManyArgs)\n\n // //////////////////////////////////\n // TRANSFORM DATA\n // //////////////////////////////////\n\n const result = transform<T>({\n config: adapter.payload.config,\n data: doc,\n fields,\n })\n\n return result\n}\n"],"names":["eq","ValidationError","buildFindManyArgs","transform","transformForWrite","deleteExistingArrayRows","deleteExistingRowsByPath","insertArrays","upsertRow","id","adapter","data","db","fields","operation","path","req","tableName","upsertTarget","where","rowToInsert","insertedRow","target","tables","row","insert","values","onConflictDoUpdate","set","returning","localesToInsert","relationsToInsert","textsToInsert","numbersToInsert","blocksToInsert","selectsToInsert","Object","keys","locales","length","entries","forEach","locale","localeRow","_parentID","_locale","push","relationships","relation","parent","texts","textRow","numbers","numberRow","selects","selectTableName","selectRows","blocks","blockName","blockRow","uuid","localeTable","localesSuffix","delete","relationshipsTableName","relationshipsSuffix","localeColumnName","parentColumnName","parentID","pathColumnName","rows","relationshipsToDelete","textsTableName","numbersTableName","insertedBlockRows","blocksToDelete","blockTableName","tableNameMap","get","blockTable","blockRows","map","i","blockLocaleIndexMap","blockLocaleRowsToInsert","reduce","acc","blockLocale","blockLocaleData","arrays","parentRows","arrayTableName","tableRows","selectTable","error","code","field","fieldConstraints","constraint","message","t","findManyArgs","depth","doc","query","findFirst","result","config","payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/upsertRow/index.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport type { TypeWithID } from 'payload/types'\n\nimport { eq } from 'drizzle-orm'\nimport { ValidationError } from 'payload/errors'\n\nimport type { BlockRowToInsert } from '../transform/write/types.js'\nimport type { Args } from './types.js'\n\nimport { buildFindManyArgs } from '../find/buildFindManyArgs.js'\nimport { transform } from '../transform/read/index.js'\nimport { transformForWrite } from '../transform/write/index.js'\nimport { deleteExistingArrayRows } from './deleteExistingArrayRows.js'\nimport { deleteExistingRowsByPath } from './deleteExistingRowsByPath.js'\nimport { insertArrays } from './insertArrays.js'\n\nexport const upsertRow = async <T extends TypeWithID>({\n id,\n adapter,\n data,\n db,\n fields,\n ignoreResult,\n operation,\n path = '',\n req,\n tableName,\n upsertTarget,\n where,\n}: Args): Promise<T> => {\n // Split out the incoming data into the corresponding:\n // base row, locales, relationships, blocks, and arrays\n const rowToInsert = transformForWrite({\n adapter,\n data,\n fields,\n path,\n tableName,\n })\n\n // First, we insert the main row\n let insertedRow: Record<string, unknown>\n\n try {\n if (operation === 'update') {\n const target = upsertTarget || adapter.tables[tableName].id\n\n if (id) {\n rowToInsert.row.id = id\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .onConflictDoUpdate({ set: rowToInsert.row, target })\n .returning()\n } else {\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .onConflictDoUpdate({ set: rowToInsert.row, target, where })\n .returning()\n }\n } else {\n ;[insertedRow] = await db\n .insert(adapter.tables[tableName])\n .values(rowToInsert.row)\n .returning()\n }\n\n const localesToInsert: Record<string, unknown>[] = []\n const relationsToInsert: Record<string, unknown>[] = []\n const textsToInsert: Record<string, unknown>[] = []\n const numbersToInsert: Record<string, unknown>[] = []\n const blocksToInsert: { [blockType: string]: BlockRowToInsert[] } = {}\n const selectsToInsert: { [selectTableName: string]: Record<string, unknown>[] } = {}\n\n // If there are locale rows with data, add the parent and locale to each\n if (Object.keys(rowToInsert.locales).length > 0) {\n Object.entries(rowToInsert.locales).forEach(([locale, localeRow]) => {\n localeRow._parentID = insertedRow.id\n localeRow._locale = locale\n localesToInsert.push(localeRow)\n })\n }\n\n // If there are relationships, add parent to each\n if (rowToInsert.relationships.length > 0) {\n rowToInsert.relationships.forEach((relation) => {\n relation.parent = insertedRow.id\n relationsToInsert.push(relation)\n })\n }\n\n // If there are texts, add parent to each\n if (rowToInsert.texts.length > 0) {\n rowToInsert.texts.forEach((textRow) => {\n textRow.parent = insertedRow.id\n textsToInsert.push(textRow)\n })\n }\n\n // If there are numbers, add parent to each\n if (rowToInsert.numbers.length > 0) {\n rowToInsert.numbers.forEach((numberRow) => {\n numberRow.parent = insertedRow.id\n numbersToInsert.push(numberRow)\n })\n }\n\n // If there are selects, add parent to each, and then\n // store by table name and rows\n if (Object.keys(rowToInsert.selects).length > 0) {\n Object.entries(rowToInsert.selects).forEach(([selectTableName, selectRows]) => {\n selectRows.forEach((row) => {\n if (typeof row.parent === 'undefined') {\n row.parent = insertedRow.id\n }\n if (!selectsToInsert[selectTableName]) selectsToInsert[selectTableName] = []\n selectsToInsert[selectTableName].push(row)\n })\n })\n }\n\n // If there are blocks, add parent to each, and then\n // store by table name and rows\n Object.keys(rowToInsert.blocks).forEach((blockName) => {\n rowToInsert.blocks[blockName].forEach((blockRow) => {\n blockRow.row._parentID = insertedRow.id\n if (!blocksToInsert[blockName]) blocksToInsert[blockName] = []\n if (blockRow.row.uuid) {\n delete blockRow.row.uuid\n }\n blocksToInsert[blockName].push(blockRow)\n })\n })\n\n // //////////////////////////////////\n // INSERT LOCALES\n // //////////////////////////////////\n\n if (localesToInsert.length > 0) {\n const localeTable = adapter.tables[`${tableName}${adapter.localesSuffix}`]\n\n if (operation === 'update') {\n await db.delete(localeTable).where(eq(localeTable._parentID, insertedRow.id))\n }\n\n await db.insert(localeTable).values(localesToInsert)\n }\n\n // //////////////////////////////////\n // INSERT RELATIONSHIPS\n // //////////////////////////////////\n\n const relationshipsTableName = `${tableName}${adapter.relationshipsSuffix}`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: [...relationsToInsert, ...rowToInsert.relationshipsToDelete],\n tableName: relationshipsTableName,\n })\n }\n\n if (relationsToInsert.length > 0) {\n await db.insert(adapter.tables[relationshipsTableName]).values(relationsToInsert)\n }\n\n // //////////////////////////////////\n // INSERT hasMany TEXTS\n // //////////////////////////////////\n\n const textsTableName = `${tableName}_texts`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: textsToInsert,\n tableName: textsTableName,\n })\n }\n\n if (textsToInsert.length > 0) {\n await db.insert(adapter.tables[textsTableName]).values(textsToInsert).returning()\n }\n\n // //////////////////////////////////\n // INSERT hasMany NUMBERS\n // //////////////////////////////////\n\n const numbersTableName = `${tableName}_numbers`\n\n if (operation === 'update') {\n await deleteExistingRowsByPath({\n adapter,\n db,\n localeColumnName: 'locale',\n parentColumnName: 'parent',\n parentID: insertedRow.id,\n pathColumnName: 'path',\n rows: numbersToInsert,\n tableName: numbersTableName,\n })\n }\n\n if (numbersToInsert.length > 0) {\n await db.insert(adapter.tables[numbersTableName]).values(numbersToInsert).returning()\n }\n\n // //////////////////////////////////\n // INSERT BLOCKS\n // //////////////////////////////////\n\n const insertedBlockRows: Record<string, Record<string, unknown>[]> = {}\n\n if (operation === 'update') {\n for (const blockName of rowToInsert.blocksToDelete) {\n const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`)\n const blockTable = adapter.tables[blockTableName]\n await db.delete(blockTable).where(eq(blockTable._parentID, insertedRow.id))\n }\n }\n\n for (const [blockName, blockRows] of Object.entries(blocksToInsert)) {\n const blockTableName = adapter.tableNameMap.get(`${tableName}_blocks_${blockName}`)\n insertedBlockRows[blockName] = await db\n .insert(adapter.tables[blockTableName])\n .values(blockRows.map(({ row }) => row))\n .returning()\n\n insertedBlockRows[blockName].forEach((row, i) => {\n blockRows[i].row = row\n })\n\n const blockLocaleIndexMap: number[] = []\n\n const blockLocaleRowsToInsert = blockRows.reduce((acc, blockRow, i) => {\n if (Object.entries(blockRow.locales).length > 0) {\n Object.entries(blockRow.locales).forEach(([blockLocale, blockLocaleData]) => {\n if (Object.keys(blockLocaleData).length > 0) {\n blockLocaleData._parentID = blockRow.row.id\n blockLocaleData._locale = blockLocale\n acc.push(blockLocaleData)\n blockLocaleIndexMap.push(i)\n }\n })\n }\n\n return acc\n }, [])\n\n if (blockLocaleRowsToInsert.length > 0) {\n await db\n .insert(adapter.tables[`${blockTableName}${adapter.localesSuffix}`])\n .values(blockLocaleRowsToInsert)\n .returning()\n }\n\n await insertArrays({\n adapter,\n arrays: blockRows.map(({ arrays }) => arrays),\n db,\n parentRows: insertedBlockRows[blockName],\n })\n }\n\n // //////////////////////////////////\n // INSERT ARRAYS RECURSIVELY\n // //////////////////////////////////\n\n if (operation === 'update') {\n for (const arrayTableName of Object.keys(rowToInsert.arrays)) {\n await deleteExistingArrayRows({\n adapter,\n db,\n parentID: insertedRow.id,\n tableName: arrayTableName,\n })\n }\n }\n\n await insertArrays({\n adapter,\n arrays: [rowToInsert.arrays],\n db,\n parentRows: [insertedRow],\n })\n\n // //////////////////////////////////\n // INSERT hasMany SELECTS\n // //////////////////////////////////\n\n for (const [selectTableName, tableRows] of Object.entries(selectsToInsert)) {\n const selectTable = adapter.tables[selectTableName]\n if (operation === 'update') {\n await db.delete(selectTable).where(eq(selectTable.parent, insertedRow.id))\n }\n await db.insert(selectTable).values(tableRows).returning()\n }\n\n // //////////////////////////////////\n // Error Handling\n // //////////////////////////////////\n } catch (error) {\n throw error.code === '23505'\n ? new ValidationError(\n [\n {\n field: adapter.fieldConstraints[tableName][error.constraint],\n message: req.t('error:valueMustBeUnique'),\n },\n ],\n req.t,\n )\n : error\n }\n\n if (ignoreResult) return data as T\n\n // //////////////////////////////////\n // RETRIEVE NEWLY UPDATED ROW\n // //////////////////////////////////\n\n const findManyArgs = buildFindManyArgs({\n adapter,\n depth: 0,\n fields,\n tableName,\n })\n\n findManyArgs.where = eq(adapter.tables[tableName].id, insertedRow.id)\n\n const doc = await db.query[tableName].findFirst(findManyArgs)\n\n // //////////////////////////////////\n // TRANSFORM DATA\n // //////////////////////////////////\n\n const result = transform<T>({\n adapter,\n config: adapter.payload.config,\n data: doc,\n fields,\n })\n\n return result\n}\n"],"names":["eq","ValidationError","buildFindManyArgs","transform","transformForWrite","deleteExistingArrayRows","deleteExistingRowsByPath","insertArrays","upsertRow","id","adapter","data","db","fields","ignoreResult","operation","path","req","tableName","upsertTarget","where","rowToInsert","insertedRow","target","tables","row","insert","values","onConflictDoUpdate","set","returning","localesToInsert","relationsToInsert","textsToInsert","numbersToInsert","blocksToInsert","selectsToInsert","Object","keys","locales","length","entries","forEach","locale","localeRow","_parentID","_locale","push","relationships","relation","parent","texts","textRow","numbers","numberRow","selects","selectTableName","selectRows","blocks","blockName","blockRow","uuid","localeTable","localesSuffix","delete","relationshipsTableName","relationshipsSuffix","localeColumnName","parentColumnName","parentID","pathColumnName","rows","relationshipsToDelete","textsTableName","numbersTableName","insertedBlockRows","blocksToDelete","blockTableName","tableNameMap","get","blockTable","blockRows","map","i","blockLocaleIndexMap","blockLocaleRowsToInsert","reduce","acc","blockLocale","blockLocaleData","arrays","parentRows","arrayTableName","tableRows","selectTable","error","code","field","fieldConstraints","constraint","message","t","findManyArgs","depth","doc","query","findFirst","result","config","payload"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -6,6 +6,11 @@ type BaseArgs = {
6
6
  data: Record<string, unknown>;
7
7
  db: DrizzleDB;
8
8
  fields: Field[];
9
+ /**
10
+ * When true, skips reading the data back from the database and returns the input data
11
+ * @default false
12
+ */
13
+ ignoreResult?: boolean;
9
14
  path?: string;
10
15
  req: PayloadRequestWithData;
11
16
  tableName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upsertRow/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE5E,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,eAAe,CAAA;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,EAAE,EAAE,SAAS,CAAA;IACb,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,sBAAsB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,UAAU,GAAG,QAAQ,GAAG;IAC3B,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,KAAK,UAAU,GAAG,QAAQ,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/upsertRow/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAE5E,KAAK,QAAQ,GAAG;IACd,OAAO,EAAE,eAAe,CAAA;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,EAAE,EAAE,SAAS,CAAA;IACb,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,sBAAsB,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,KAAK,UAAU,GAAG,QAAQ,GAAG;IAC3B,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,KAAK,UAAU,GAAG,QAAQ,GAAG;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,KAAK,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,IAAI,GAAG,UAAU,GAAG,UAAU,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/upsertRow/types.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, PayloadRequestWithData } from 'payload/types'\n\nimport type { DrizzleDB, GenericColumn, PostgresAdapter } from '../types.js'\n\ntype BaseArgs = {\n adapter: PostgresAdapter\n data: Record<string, unknown>\n db: DrizzleDB\n fields: Field[]\n path?: string\n req: PayloadRequestWithData\n tableName: string\n}\n\ntype CreateArgs = BaseArgs & {\n id?: never\n operation: 'create'\n upsertTarget?: never\n where?: never\n}\n\ntype UpdateArgs = BaseArgs & {\n id?: number | string\n operation: 'update'\n upsertTarget?: GenericColumn\n where?: SQL<unknown>\n}\n\nexport type Args = CreateArgs | UpdateArgs\n"],"names":[],"rangeMappings":"","mappings":"AA6BA,WAA0C"}
1
+ {"version":3,"sources":["../../src/upsertRow/types.ts"],"sourcesContent":["import type { SQL } from 'drizzle-orm'\nimport type { Field, PayloadRequestWithData } from 'payload/types'\n\nimport type { DrizzleDB, GenericColumn, PostgresAdapter } from '../types.js'\n\ntype BaseArgs = {\n adapter: PostgresAdapter\n data: Record<string, unknown>\n db: DrizzleDB\n fields: Field[]\n /**\n * When true, skips reading the data back from the database and returns the input data\n * @default false\n */\n ignoreResult?: boolean\n path?: string\n req: PayloadRequestWithData\n tableName: string\n}\n\ntype CreateArgs = BaseArgs & {\n id?: never\n operation: 'create'\n upsertTarget?: never\n where?: never\n}\n\ntype UpdateArgs = BaseArgs & {\n id?: number | string\n operation: 'update'\n upsertTarget?: GenericColumn\n where?: SQL<unknown>\n}\n\nexport type Args = CreateArgs | UpdateArgs\n"],"names":[],"rangeMappings":"","mappings":"AAkCA,WAA0C"}
@@ -1 +1 @@
1
- {"version":3,"file":"pushDevSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/pushDevSchema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,OAAc,eAAe,kBAmEtD,CAAA"}
1
+ {"version":3,"file":"pushDevSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/pushDevSchema.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,OAAc,eAAe,kBAgEtD,CAAA"}
@@ -11,7 +11,7 @@ const require = createRequire(import.meta.url);
11
11
  */ export const pushDevSchema = async (db)=>{
12
12
  const { pushSchema } = require('drizzle-kit/payload');
13
13
  // This will prompt if clarifications are needed for Drizzle to push new schema
14
- const { apply, hasDataLoss, statementsToExecute, warnings } = await pushSchema(db.schema, db.drizzle);
14
+ const { apply, hasDataLoss, warnings } = await pushSchema(db.schema, db.drizzle);
15
15
  if (warnings.length) {
16
16
  let message = `Warnings detected during schema push: \n\n${warnings.join('\n')}\n\n`;
17
17
  if (hasDataLoss) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import { eq } from 'drizzle-orm'\nimport { numeric, timestamp, varchar } from 'drizzle-orm/pg-core'\nimport { createRequire } from 'module'\nimport prompts from 'prompts'\n\nimport type { PostgresAdapter } from '../types.js'\n\nconst require = createRequire(import.meta.url)\n\n/**\n * Pushes the development schema to the database using Drizzle.\n *\n * @param {PostgresAdapter} db - The PostgresAdapter instance connected to the database.\n * @returns {Promise<void>} - A promise that resolves once the schema push is complete.\n */\nexport const pushDevSchema = async (db: PostgresAdapter) => {\n const { pushSchema } = require('drizzle-kit/payload')\n\n // This will prompt if clarifications are needed for Drizzle to push new schema\n const { apply, hasDataLoss, statementsToExecute, warnings } = await pushSchema(\n db.schema,\n db.drizzle,\n )\n\n if (warnings.length) {\n let message = `Warnings detected during schema push: \\n\\n${warnings.join('\\n')}\\n\\n`\n\n if (hasDataLoss) {\n message += `DATA LOSS WARNING: Possible data loss detected if schema is pushed.\\n\\n`\n }\n\n message += `Accept warnings and push schema to database?`\n\n const { confirm: acceptWarnings } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n // Exit if user does not accept warnings.\n // Q: Is this the right type of exit for this interaction?\n if (!acceptWarnings) {\n process.exit(0)\n }\n }\n\n await apply()\n\n // Migration table def in order to use query using drizzle\n const migrationsSchema = db.pgSchema.table('payload_migrations', {\n name: varchar('name'),\n batch: numeric('batch'),\n created_at: timestamp('created_at'),\n updated_at: timestamp('updated_at'),\n })\n\n const devPush = await db.drizzle\n .select()\n .from(migrationsSchema)\n .where(eq(migrationsSchema.batch, '-1'))\n\n if (!devPush.length) {\n await db.drizzle.insert(migrationsSchema).values({\n name: 'dev',\n batch: '-1',\n })\n } else {\n await db.drizzle\n .update(migrationsSchema)\n .set({\n updated_at: new Date(),\n })\n .where(eq(migrationsSchema.batch, '-1'))\n }\n}\n"],"names":["eq","numeric","timestamp","varchar","createRequire","prompts","require","url","pushDevSchema","db","pushSchema","apply","hasDataLoss","statementsToExecute","warnings","schema","drizzle","length","message","join","confirm","acceptWarnings","name","type","initial","onCancel","process","exit","migrationsSchema","pgSchema","table","batch","created_at","updated_at","devPush","select","from","where","insert","values","update","set","Date"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,EAAE,QAAQ,cAAa;AAChC,SAASC,OAAO,EAAEC,SAAS,EAAEC,OAAO,QAAQ,sBAAqB;AACjE,SAASC,aAAa,QAAQ,SAAQ;AACtC,OAAOC,aAAa,UAAS;AAI7B,MAAMC,UAAUF,cAAc,YAAYG,GAAG;AAE7C;;;;;CAKC,GACD,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,MAAM,EAAEC,UAAU,EAAE,GAAGJ,QAAQ;IAE/B,+EAA+E;IAC/E,MAAM,EAAEK,KAAK,EAAEC,WAAW,EAAEC,mBAAmB,EAAEC,QAAQ,EAAE,GAAG,MAAMJ,WAClED,GAAGM,MAAM,EACTN,GAAGO,OAAO;IAGZ,IAAIF,SAASG,MAAM,EAAE;QACnB,IAAIC,UAAU,CAAC,0CAA0C,EAAEJ,SAASK,IAAI,CAAC,MAAM,IAAI,CAAC;QAEpF,IAAIP,aAAa;YACfM,WAAW,CAAC,uEAAuE,CAAC;QACtF;QAEAA,WAAW,CAAC,4CAA4C,CAAC;QAEzD,MAAM,EAAEE,SAASC,cAAc,EAAE,GAAG,MAAMhB,QACxC;YACEiB,MAAM;YACNC,MAAM;YACNC,SAAS;YACTN;QACF,GACA;YACEO,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,yCAAyC;QACzC,0DAA0D;QAC1D,IAAI,CAACN,gBAAgB;YACnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,MAAMhB;IAEN,0DAA0D;IAC1D,MAAMiB,mBAAmBnB,GAAGoB,QAAQ,CAACC,KAAK,CAAC,sBAAsB;QAC/DR,MAAMnB,QAAQ;QACd4B,OAAO9B,QAAQ;QACf+B,YAAY9B,UAAU;QACtB+B,YAAY/B,UAAU;IACxB;IAEA,MAAMgC,UAAU,MAAMzB,GAAGO,OAAO,CAC7BmB,MAAM,GACNC,IAAI,CAACR,kBACLS,KAAK,CAACrC,GAAG4B,iBAAiBG,KAAK,EAAE;IAEpC,IAAI,CAACG,QAAQjB,MAAM,EAAE;QACnB,MAAMR,GAAGO,OAAO,CAACsB,MAAM,CAACV,kBAAkBW,MAAM,CAAC;YAC/CjB,MAAM;YACNS,OAAO;QACT;IACF,OAAO;QACL,MAAMtB,GAAGO,OAAO,CACbwB,MAAM,CAACZ,kBACPa,GAAG,CAAC;YACHR,YAAY,IAAIS;QAClB,GACCL,KAAK,CAACrC,GAAG4B,iBAAiBG,KAAK,EAAE;IACtC;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import { eq } from 'drizzle-orm'\nimport { numeric, timestamp, varchar } from 'drizzle-orm/pg-core'\nimport { createRequire } from 'module'\nimport prompts from 'prompts'\n\nimport type { PostgresAdapter } from '../types.js'\n\nconst require = createRequire(import.meta.url)\n\n/**\n * Pushes the development schema to the database using Drizzle.\n *\n * @param {PostgresAdapter} db - The PostgresAdapter instance connected to the database.\n * @returns {Promise<void>} - A promise that resolves once the schema push is complete.\n */\nexport const pushDevSchema = async (db: PostgresAdapter) => {\n const { pushSchema } = require('drizzle-kit/payload')\n\n // This will prompt if clarifications are needed for Drizzle to push new schema\n const { apply, hasDataLoss, warnings } = await pushSchema(db.schema, db.drizzle)\n\n if (warnings.length) {\n let message = `Warnings detected during schema push: \\n\\n${warnings.join('\\n')}\\n\\n`\n\n if (hasDataLoss) {\n message += `DATA LOSS WARNING: Possible data loss detected if schema is pushed.\\n\\n`\n }\n\n message += `Accept warnings and push schema to database?`\n\n const { confirm: acceptWarnings } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n // Exit if user does not accept warnings.\n // Q: Is this the right type of exit for this interaction?\n if (!acceptWarnings) {\n process.exit(0)\n }\n }\n\n await apply()\n\n // Migration table def in order to use query using drizzle\n const migrationsSchema = db.pgSchema.table('payload_migrations', {\n name: varchar('name'),\n batch: numeric('batch'),\n created_at: timestamp('created_at'),\n updated_at: timestamp('updated_at'),\n })\n\n const devPush = await db.drizzle\n .select()\n .from(migrationsSchema)\n .where(eq(migrationsSchema.batch, '-1'))\n\n if (!devPush.length) {\n await db.drizzle.insert(migrationsSchema).values({\n name: 'dev',\n batch: '-1',\n })\n } else {\n await db.drizzle\n .update(migrationsSchema)\n .set({\n updated_at: new Date(),\n })\n .where(eq(migrationsSchema.batch, '-1'))\n }\n}\n"],"names":["eq","numeric","timestamp","varchar","createRequire","prompts","require","url","pushDevSchema","db","pushSchema","apply","hasDataLoss","warnings","schema","drizzle","length","message","join","confirm","acceptWarnings","name","type","initial","onCancel","process","exit","migrationsSchema","pgSchema","table","batch","created_at","updated_at","devPush","select","from","where","insert","values","update","set","Date"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,EAAE,QAAQ,cAAa;AAChC,SAASC,OAAO,EAAEC,SAAS,EAAEC,OAAO,QAAQ,sBAAqB;AACjE,SAASC,aAAa,QAAQ,SAAQ;AACtC,OAAOC,aAAa,UAAS;AAI7B,MAAMC,UAAUF,cAAc,YAAYG,GAAG;AAE7C;;;;;CAKC,GACD,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,MAAM,EAAEC,UAAU,EAAE,GAAGJ,QAAQ;IAE/B,+EAA+E;IAC/E,MAAM,EAAEK,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAG,MAAMH,WAAWD,GAAGK,MAAM,EAAEL,GAAGM,OAAO;IAE/E,IAAIF,SAASG,MAAM,EAAE;QACnB,IAAIC,UAAU,CAAC,0CAA0C,EAAEJ,SAASK,IAAI,CAAC,MAAM,IAAI,CAAC;QAEpF,IAAIN,aAAa;YACfK,WAAW,CAAC,uEAAuE,CAAC;QACtF;QAEAA,WAAW,CAAC,4CAA4C,CAAC;QAEzD,MAAM,EAAEE,SAASC,cAAc,EAAE,GAAG,MAAMf,QACxC;YACEgB,MAAM;YACNC,MAAM;YACNC,SAAS;YACTN;QACF,GACA;YACEO,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,yCAAyC;QACzC,0DAA0D;QAC1D,IAAI,CAACN,gBAAgB;YACnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,MAAMf;IAEN,0DAA0D;IAC1D,MAAMgB,mBAAmBlB,GAAGmB,QAAQ,CAACC,KAAK,CAAC,sBAAsB;QAC/DR,MAAMlB,QAAQ;QACd2B,OAAO7B,QAAQ;QACf8B,YAAY7B,UAAU;QACtB8B,YAAY9B,UAAU;IACxB;IAEA,MAAM+B,UAAU,MAAMxB,GAAGM,OAAO,CAC7BmB,MAAM,GACNC,IAAI,CAACR,kBACLS,KAAK,CAACpC,GAAG2B,iBAAiBG,KAAK,EAAE;IAEpC,IAAI,CAACG,QAAQjB,MAAM,EAAE;QACnB,MAAMP,GAAGM,OAAO,CAACsB,MAAM,CAACV,kBAAkBW,MAAM,CAAC;YAC/CjB,MAAM;YACNS,OAAO;QACT;IACF,OAAO;QACL,MAAMrB,GAAGM,OAAO,CACbwB,MAAM,CAACZ,kBACPa,GAAG,CAAC;YACHR,YAAY,IAAIS;QAClB,GACCL,KAAK,CAACpC,GAAG2B,iBAAiBG,KAAK,EAAE;IACtC;AACF,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-postgres",
3
- "version": "3.0.0-canary.6041f49",
3
+ "version": "3.0.0-canary.6d9b462",
4
4
  "description": "The officially supported Postgres database adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -21,6 +21,11 @@
21
21
  "import": "./dist/types.js",
22
22
  "require": "./dist/types.js",
23
23
  "types": "./dist/types.d.ts"
24
+ },
25
+ "./migration-utils": {
26
+ "import": "./dist/exports/migration-utils.js",
27
+ "require": "./dist/exports/migration-utils.js",
28
+ "types": "./dist/exports/migration-utils.d.ts"
24
29
  }
25
30
  },
26
31
  "main": "./dist/index.js",
@@ -37,21 +42,22 @@
37
42
  "pg": "8.11.3",
38
43
  "prompts": "2.4.2",
39
44
  "to-snake-case": "1.0.0",
40
- "uuid": "9.0.0"
45
+ "uuid": "^9.0.1"
41
46
  },
42
47
  "devDependencies": {
43
48
  "@types/pg": "8.10.2",
44
49
  "@types/to-snake-case": "1.0.0",
45
50
  "@payloadcms/eslint-config": "1.1.1",
46
- "payload": "3.0.0-canary.6041f49"
51
+ "payload": "3.0.0-canary.6d9b462"
47
52
  },
48
53
  "peerDependencies": {
49
- "payload": "3.0.0-canary.6041f49"
54
+ "payload": "3.0.0-canary.6d9b462"
50
55
  },
51
56
  "scripts": {
52
- "build": "pnpm build:swc && pnpm build:types",
57
+ "build": "pnpm build:swc && pnpm build:types && pnpm renamePredefinedMigrations",
53
58
  "build:swc": "swc ./src -d ./dist --config-file .swcrc",
54
59
  "build:types": "tsc --emitDeclarationOnly --outDir dist",
55
- "clean": "rimraf {dist,*.tsbuildinfo}"
60
+ "clean": "rimraf {dist,*.tsbuildinfo}",
61
+ "renamePredefinedMigrations": "tsx ./scripts/renamePredefinedMigrations.ts"
56
62
  }
57
63
  }