@payloadcms/db-postgres 3.4.1-canary.b6681a9 → 3.5.1-canary.15a5791

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 (36) hide show
  1. package/dist/exports/migration-utils.d.ts +1 -1
  2. package/dist/exports/migration-utils.d.ts.map +1 -1
  3. package/dist/exports/migration-utils.js +1 -1
  4. package/dist/exports/migration-utils.js.map +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +9 -11
  7. package/dist/index.js.map +1 -1
  8. package/package.json +4 -4
  9. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts +0 -20
  10. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +0 -1
  11. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js +0 -169
  12. package/dist/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +0 -1
  13. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts +0 -11
  14. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +0 -1
  15. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js +0 -149
  16. package/dist/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +0 -1
  17. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts +0 -3
  18. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +0 -1
  19. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js +0 -56
  20. package/dist/predefinedMigrations/v2-v3/groupUpSQLStatements.js.map +0 -1
  21. package/dist/predefinedMigrations/v2-v3/index.d.ts +0 -23
  22. package/dist/predefinedMigrations/v2-v3/index.d.ts.map +0 -1
  23. package/dist/predefinedMigrations/v2-v3/index.js +0 -211
  24. package/dist/predefinedMigrations/v2-v3/index.js.map +0 -1
  25. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts +0 -20
  26. package/dist/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +0 -1
  27. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js +0 -63
  28. package/dist/predefinedMigrations/v2-v3/migrateRelationships.js.map +0 -1
  29. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts +0 -23
  30. package/dist/predefinedMigrations/v2-v3/traverseFields.d.ts.map +0 -1
  31. package/dist/predefinedMigrations/v2-v3/traverseFields.js +0 -60
  32. package/dist/predefinedMigrations/v2-v3/traverseFields.js.map +0 -1
  33. package/dist/predefinedMigrations/v2-v3/types.d.ts +0 -9
  34. package/dist/predefinedMigrations/v2-v3/types.d.ts.map +0 -1
  35. package/dist/predefinedMigrations/v2-v3/types.js +0 -6
  36. package/dist/predefinedMigrations/v2-v3/types.js.map +0 -1
@@ -1,2 +1,2 @@
1
- export { migratePostgresV2toV3 } from '../predefinedMigrations/v2-v3/index.js';
1
+ export { migratePostgresV2toV3 } from '@payloadcms/drizzle/postgres';
2
2
  //# sourceMappingURL=migration-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-utils.d.ts","sourceRoot":"","sources":["../../src/exports/migration-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA"}
1
+ {"version":3,"file":"migration-utils.d.ts","sourceRoot":"","sources":["../../src/exports/migration-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA"}
@@ -1,3 +1,3 @@
1
- export { migratePostgresV2toV3 } from '../predefinedMigrations/v2-v3/index.js';
1
+ export { migratePostgresV2toV3 } from '@payloadcms/drizzle/postgres';
2
2
 
3
3
  //# sourceMappingURL=migration-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/exports/migration-utils.ts"],"sourcesContent":["export { migratePostgresV2toV3 } from '../predefinedMigrations/v2-v3/index.js'\n"],"names":["migratePostgresV2toV3"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,yCAAwC"}
1
+ {"version":3,"sources":["../../src/exports/migration-utils.ts"],"sourcesContent":["export { migratePostgresV2toV3 } from '@payloadcms/drizzle/postgres'\n"],"names":["migratePostgresV2toV3"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,+BAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,SAAS,CAAA;AAwD1D,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOvD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAAC,eAAe,CAAC,CA0H/E;AAED,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAW,MAAM,SAAS,CAAA;AAsD1D,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAMvD,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,kBAAkB,CAAC,eAAe,CAAC,CA6H/E;AAED,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAClF,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js CHANGED
@@ -1,12 +1,10 @@
1
- import { beginTransaction, commitTransaction, count, countGlobalVersions, countVersions, create, createGlobal, createGlobalVersion, createVersion, deleteMany, deleteOne, deleteVersions, destroy, find, findGlobal, findGlobalVersions, findMigrationDir, findOne, findVersions, migrate, migrateDown, migrateFresh, migrateRefresh, migrateReset, migrateStatus, operatorMap, queryDrafts, rollbackTransaction, updateGlobal, updateGlobalVersion, updateOne, updateVersion } from '@payloadcms/drizzle';
2
- import { countDistinct, createDatabase, createExtensions, createJSONQuery, createMigration, defaultDrizzleSnapshot, deleteWhere, dropDatabase, execute, getMigrationTemplate, init, insert, requireDrizzleKit } from '@payloadcms/drizzle/postgres';
1
+ import { beginTransaction, buildCreateMigration, commitTransaction, count, countGlobalVersions, countVersions, create, createGlobal, createGlobalVersion, createVersion, deleteMany, deleteOne, deleteVersions, destroy, find, findGlobal, findGlobalVersions, findMigrationDir, findOne, findVersions, migrate, migrateDown, migrateFresh, migrateRefresh, migrateReset, migrateStatus, operatorMap, queryDrafts, rollbackTransaction, updateGlobal, updateGlobalVersion, updateOne, updateVersion } from '@payloadcms/drizzle';
2
+ import { countDistinct, createDatabase, createExtensions, createJSONQuery, defaultDrizzleSnapshot, deleteWhere, dropDatabase, execute, init, insert, requireDrizzleKit } from '@payloadcms/drizzle/postgres';
3
3
  import { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core';
4
- import path from 'path';
5
4
  import { createDatabaseAdapter, defaultBeginTransaction } from 'payload';
6
5
  import { fileURLToPath } from 'url';
7
6
  import { connect } from './connect.js';
8
7
  const filename = fileURLToPath(import.meta.url);
9
- const dirname = path.dirname(filename);
10
8
  export function postgresAdapter(args) {
11
9
  const postgresIDType = args.idType || 'serial';
12
10
  const payloadIDType = postgresIDType === 'serial' ? 'number' : 'text';
@@ -37,12 +35,13 @@ export function postgresAdapter(args) {
37
35
  beforeSchemaInit: args.beforeSchemaInit ?? [],
38
36
  createDatabase,
39
37
  createExtensions,
40
- createMigration (args) {
41
- return createMigration.bind(this)({
42
- ...args,
43
- dirname
44
- });
45
- },
38
+ createMigration: buildCreateMigration({
39
+ executeMethod: 'execute',
40
+ filename,
41
+ sanitizeStatements ({ sqlExecute, statements }) {
42
+ return `${sqlExecute}\n ${statements.join('\n')}\`)`;
43
+ }
44
+ }),
46
45
  defaultDrizzleSnapshot,
47
46
  disableCreateDatabase: args.disableCreateDatabase ?? false,
48
47
  drizzle: undefined,
@@ -52,7 +51,6 @@ export function postgresAdapter(args) {
52
51
  json: true
53
52
  },
54
53
  fieldConstraints: {},
55
- getMigrationTemplate,
56
54
  idType: postgresIDType,
57
55
  initializing,
58
56
  localesSuffix: args.localesSuffix || '_locales',
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { DatabaseAdapterObj, Payload } from 'payload'\n\nimport {\n beginTransaction,\n commitTransaction,\n count,\n countGlobalVersions,\n countVersions,\n create,\n createGlobal,\n createGlobalVersion,\n createVersion,\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n find,\n findGlobal,\n findGlobalVersions,\n findMigrationDir,\n findOne,\n findVersions,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n operatorMap,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n} from '@payloadcms/drizzle'\nimport {\n countDistinct,\n createDatabase,\n createExtensions,\n createJSONQuery,\n createMigration,\n defaultDrizzleSnapshot,\n deleteWhere,\n dropDatabase,\n execute,\n getMigrationTemplate,\n init,\n insert,\n requireDrizzleKit,\n} from '@payloadcms/drizzle/postgres'\nimport { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core'\nimport path from 'path'\nimport { createDatabaseAdapter, defaultBeginTransaction } from 'payload'\nimport { fileURLToPath } from 'url'\n\nimport type { Args, PostgresAdapter } from './types.js'\n\nimport { connect } from './connect.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter> {\n const postgresIDType = args.idType || 'serial'\n const payloadIDType = postgresIDType === 'serial' ? 'number' : 'text'\n\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n let resolveInitializing\n let rejectInitializing\n let adapterSchema: PostgresAdapter['pgSchema']\n\n const initializing = new Promise<void>((res, rej) => {\n resolveInitializing = res\n rejectInitializing = rej\n })\n\n if (args.schemaName) {\n adapterSchema = pgSchema(args.schemaName)\n } else {\n adapterSchema = { enum: pgEnum, table: pgTable }\n }\n\n const extensions = (args.extensions ?? []).reduce((acc, name) => {\n acc[name] = true\n return acc\n }, {})\n\n return createDatabaseAdapter<PostgresAdapter>({\n name: 'postgres',\n afterSchemaInit: args.afterSchemaInit ?? [],\n beforeSchemaInit: args.beforeSchemaInit ?? [],\n createDatabase,\n createExtensions,\n createMigration(args) {\n return createMigration.bind(this)({ ...args, dirname })\n },\n defaultDrizzleSnapshot,\n disableCreateDatabase: args.disableCreateDatabase ?? false,\n drizzle: undefined,\n enums: {},\n extensions,\n features: {\n json: true,\n },\n fieldConstraints: {},\n getMigrationTemplate,\n idType: postgresIDType,\n initializing,\n localesSuffix: args.localesSuffix || '_locales',\n logger: args.logger,\n operators: operatorMap,\n pgSchema: adapterSchema,\n pool: undefined,\n poolOptions: args.pool,\n prodMigrations: args.prodMigrations,\n push: args.push,\n relations: {},\n relationshipsSuffix: args.relationshipsSuffix || '_rels',\n schema: {},\n schemaName: args.schemaName,\n sessions: {},\n tableNameMap: new Map<string, string>(),\n tables: {},\n tablesFilter: args.tablesFilter,\n transactionOptions: args.transactionOptions || undefined,\n versionsSuffix: args.versionsSuffix || '_v',\n\n // DatabaseAdapter\n beginTransaction:\n args.transactionOptions === false ? defaultBeginTransaction() : beginTransaction,\n commitTransaction,\n connect,\n count,\n countDistinct,\n countGlobalVersions,\n countVersions,\n create,\n createGlobal,\n createGlobalVersion,\n createJSONQuery,\n createVersion,\n defaultIDType: payloadIDType,\n deleteMany,\n deleteOne,\n deleteVersions,\n deleteWhere,\n destroy,\n dropDatabase,\n execute,\n find,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n indexes: new Set<string>(),\n init,\n insert,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n migrationDir,\n packageName: '@payloadcms/db-postgres',\n payload,\n queryDrafts,\n rejectInitializing,\n requireDrizzleKit,\n resolveInitializing,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n upsert: updateOne,\n })\n }\n\n return {\n defaultIDType: payloadIDType,\n init: adapter,\n }\n}\n\nexport type { MigrateDownArgs, MigrateUpArgs } from '@payloadcms/drizzle/postgres'\nexport { sql } from 'drizzle-orm'\n"],"names":["beginTransaction","commitTransaction","count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","findGlobal","findGlobalVersions","findMigrationDir","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","operatorMap","queryDrafts","rollbackTransaction","updateGlobal","updateGlobalVersion","updateOne","updateVersion","countDistinct","createDatabase","createExtensions","createJSONQuery","createMigration","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","getMigrationTemplate","init","insert","requireDrizzleKit","pgEnum","pgSchema","pgTable","path","createDatabaseAdapter","defaultBeginTransaction","fileURLToPath","connect","filename","url","dirname","postgresAdapter","args","postgresIDType","idType","payloadIDType","adapter","payload","migrationDir","resolveInitializing","rejectInitializing","adapterSchema","initializing","Promise","res","rej","schemaName","enum","table","extensions","reduce","acc","name","afterSchemaInit","beforeSchemaInit","bind","disableCreateDatabase","drizzle","undefined","enums","features","json","fieldConstraints","localesSuffix","logger","operators","pool","poolOptions","prodMigrations","push","relations","relationshipsSuffix","schema","sessions","tableNameMap","Map","tables","tablesFilter","transactionOptions","versionsSuffix","defaultIDType","indexes","Set","packageName","upsert","sql"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type { DatabaseAdapterObj, Payload } from 'payload'\n\nimport {\n beginTransaction,\n buildCreateMigration,\n commitTransaction,\n count,\n countGlobalVersions,\n countVersions,\n create,\n createGlobal,\n createGlobalVersion,\n createVersion,\n deleteMany,\n deleteOne,\n deleteVersions,\n destroy,\n find,\n findGlobal,\n findGlobalVersions,\n findMigrationDir,\n findOne,\n findVersions,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n operatorMap,\n queryDrafts,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n} from '@payloadcms/drizzle'\nimport {\n countDistinct,\n createDatabase,\n createExtensions,\n createJSONQuery,\n defaultDrizzleSnapshot,\n deleteWhere,\n dropDatabase,\n execute,\n init,\n insert,\n requireDrizzleKit,\n} from '@payloadcms/drizzle/postgres'\nimport { pgEnum, pgSchema, pgTable } from 'drizzle-orm/pg-core'\nimport { createDatabaseAdapter, defaultBeginTransaction } from 'payload'\nimport { fileURLToPath } from 'url'\n\nimport type { Args, PostgresAdapter } from './types.js'\n\nimport { connect } from './connect.js'\n\nconst filename = fileURLToPath(import.meta.url)\n\nexport function postgresAdapter(args: Args): DatabaseAdapterObj<PostgresAdapter> {\n const postgresIDType = args.idType || 'serial'\n const payloadIDType = postgresIDType === 'serial' ? 'number' : 'text'\n\n function adapter({ payload }: { payload: Payload }) {\n const migrationDir = findMigrationDir(args.migrationDir)\n let resolveInitializing\n let rejectInitializing\n let adapterSchema: PostgresAdapter['pgSchema']\n\n const initializing = new Promise<void>((res, rej) => {\n resolveInitializing = res\n rejectInitializing = rej\n })\n\n if (args.schemaName) {\n adapterSchema = pgSchema(args.schemaName)\n } else {\n adapterSchema = { enum: pgEnum, table: pgTable }\n }\n\n const extensions = (args.extensions ?? []).reduce((acc, name) => {\n acc[name] = true\n return acc\n }, {})\n\n return createDatabaseAdapter<PostgresAdapter>({\n name: 'postgres',\n afterSchemaInit: args.afterSchemaInit ?? [],\n beforeSchemaInit: args.beforeSchemaInit ?? [],\n createDatabase,\n createExtensions,\n createMigration: buildCreateMigration({\n executeMethod: 'execute',\n filename,\n sanitizeStatements({ sqlExecute, statements }) {\n return `${sqlExecute}\\n ${statements.join('\\n')}\\`)`\n },\n }),\n defaultDrizzleSnapshot,\n disableCreateDatabase: args.disableCreateDatabase ?? false,\n drizzle: undefined,\n enums: {},\n extensions,\n features: {\n json: true,\n },\n fieldConstraints: {},\n idType: postgresIDType,\n initializing,\n localesSuffix: args.localesSuffix || '_locales',\n logger: args.logger,\n operators: operatorMap,\n pgSchema: adapterSchema,\n pool: undefined,\n poolOptions: args.pool,\n prodMigrations: args.prodMigrations,\n push: args.push,\n relations: {},\n relationshipsSuffix: args.relationshipsSuffix || '_rels',\n schema: {},\n schemaName: args.schemaName,\n sessions: {},\n tableNameMap: new Map<string, string>(),\n tables: {},\n tablesFilter: args.tablesFilter,\n transactionOptions: args.transactionOptions || undefined,\n versionsSuffix: args.versionsSuffix || '_v',\n\n // DatabaseAdapter\n beginTransaction:\n args.transactionOptions === false ? defaultBeginTransaction() : beginTransaction,\n commitTransaction,\n connect,\n count,\n countDistinct,\n countGlobalVersions,\n countVersions,\n create,\n createGlobal,\n createGlobalVersion,\n createJSONQuery,\n createVersion,\n defaultIDType: payloadIDType,\n deleteMany,\n deleteOne,\n deleteVersions,\n deleteWhere,\n destroy,\n dropDatabase,\n execute,\n find,\n findGlobal,\n findGlobalVersions,\n findOne,\n findVersions,\n indexes: new Set<string>(),\n init,\n insert,\n migrate,\n migrateDown,\n migrateFresh,\n migrateRefresh,\n migrateReset,\n migrateStatus,\n migrationDir,\n packageName: '@payloadcms/db-postgres',\n payload,\n queryDrafts,\n rejectInitializing,\n requireDrizzleKit,\n resolveInitializing,\n rollbackTransaction,\n updateGlobal,\n updateGlobalVersion,\n updateOne,\n updateVersion,\n upsert: updateOne,\n })\n }\n\n return {\n defaultIDType: payloadIDType,\n init: adapter,\n }\n}\n\nexport type { MigrateDownArgs, MigrateUpArgs } from '@payloadcms/drizzle/postgres'\nexport { sql } from 'drizzle-orm'\n"],"names":["beginTransaction","buildCreateMigration","commitTransaction","count","countGlobalVersions","countVersions","create","createGlobal","createGlobalVersion","createVersion","deleteMany","deleteOne","deleteVersions","destroy","find","findGlobal","findGlobalVersions","findMigrationDir","findOne","findVersions","migrate","migrateDown","migrateFresh","migrateRefresh","migrateReset","migrateStatus","operatorMap","queryDrafts","rollbackTransaction","updateGlobal","updateGlobalVersion","updateOne","updateVersion","countDistinct","createDatabase","createExtensions","createJSONQuery","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","init","insert","requireDrizzleKit","pgEnum","pgSchema","pgTable","createDatabaseAdapter","defaultBeginTransaction","fileURLToPath","connect","filename","url","postgresAdapter","args","postgresIDType","idType","payloadIDType","adapter","payload","migrationDir","resolveInitializing","rejectInitializing","adapterSchema","initializing","Promise","res","rej","schemaName","enum","table","extensions","reduce","acc","name","afterSchemaInit","beforeSchemaInit","createMigration","executeMethod","sanitizeStatements","sqlExecute","statements","join","disableCreateDatabase","drizzle","undefined","enums","features","json","fieldConstraints","localesSuffix","logger","operators","pool","poolOptions","prodMigrations","push","relations","relationshipsSuffix","schema","sessions","tableNameMap","Map","tables","tablesFilter","transactionOptions","versionsSuffix","defaultIDType","indexes","Set","packageName","upsert","sql"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/db-postgres",
3
- "version": "3.4.1-canary.b6681a9",
3
+ "version": "3.5.1-canary.15a5791",
4
4
  "description": "The officially supported Postgres database adapter for Payload",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -50,17 +50,17 @@
50
50
  "prompts": "2.4.2",
51
51
  "to-snake-case": "1.0.0",
52
52
  "uuid": "10.0.0",
53
- "@payloadcms/drizzle": "3.4.1-canary.b6681a9"
53
+ "@payloadcms/drizzle": "3.5.1-canary.15a5791"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@hyrious/esbuild-plugin-commonjs": "^0.2.4",
57
57
  "@types/to-snake-case": "1.0.0",
58
58
  "esbuild": "0.24.0",
59
59
  "@payloadcms/eslint-config": "3.0.0",
60
- "payload": "3.4.1-canary.b6681a9"
60
+ "payload": "3.5.1-canary.15a5791"
61
61
  },
62
62
  "peerDependencies": {
63
- "payload": "3.4.1-canary.b6681a9"
63
+ "payload": "3.5.1-canary.15a5791"
64
64
  },
65
65
  "scripts": {
66
66
  "build": "rimraf .dist && rimraf tsconfig.tsbuildinfo && pnpm build:types && pnpm build:swc && pnpm build:esbuild && pnpm renamePredefinedMigrations",
@@ -1,20 +0,0 @@
1
- import type { TransactionPg } from '@payloadcms/drizzle/types';
2
- import type { FlattenedField, Payload, PayloadRequest } from 'payload';
3
- import type { PostgresAdapter } from '../../../types.js';
4
- import type { DocsToResave } from '../types.js';
5
- type Args = {
6
- adapter: PostgresAdapter;
7
- collectionSlug?: string;
8
- db: TransactionPg;
9
- debug: boolean;
10
- docsToResave: DocsToResave;
11
- fields: FlattenedField[];
12
- globalSlug?: string;
13
- isVersions: boolean;
14
- payload: Payload;
15
- req: PayloadRequest;
16
- tableName: string;
17
- };
18
- export declare const fetchAndResave: ({ adapter, collectionSlug, db, debug, docsToResave, fields, globalSlug, isVersions, payload, req, tableName, }: Args) => Promise<void>;
19
- export {};
20
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/predefinedMigrations/v2-v3/fetchAndResave/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAItE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAI/C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,aAAa,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,EAAE,cAAc,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,cAAc,mHAYxB,IAAI,kBAwMN,CAAA"}
@@ -1,169 +0,0 @@
1
- import { upsertRow } from '@payloadcms/drizzle';
2
- import { traverseFields } from './traverseFields.js';
3
- export const fetchAndResave = async ({ adapter, collectionSlug, db, debug, docsToResave, fields, globalSlug, isVersions, payload, req, tableName })=>{
4
- for (const [id, rows] of Object.entries(docsToResave)){
5
- if (collectionSlug) {
6
- const collectionConfig = payload.collections[collectionSlug].config;
7
- if (collectionConfig) {
8
- if (isVersions) {
9
- const doc = await payload.findVersionByID({
10
- id,
11
- collection: collectionSlug,
12
- depth: 0,
13
- fallbackLocale: null,
14
- locale: 'all',
15
- req,
16
- showHiddenFields: true
17
- });
18
- if (debug) {
19
- payload.logger.info(`The collection "${collectionConfig.slug}" version with ID ${id} will be migrated`);
20
- }
21
- traverseFields({
22
- doc,
23
- fields,
24
- path: '',
25
- rows
26
- });
27
- try {
28
- await upsertRow({
29
- id: doc.id,
30
- adapter,
31
- data: doc,
32
- db,
33
- fields,
34
- ignoreResult: true,
35
- operation: 'update',
36
- req,
37
- tableName
38
- });
39
- } catch (err) {
40
- payload.logger.error(`"${collectionConfig.slug}" version with ID ${doc.id} FAILED TO MIGRATE`);
41
- throw err;
42
- }
43
- if (debug) {
44
- payload.logger.info(`"${collectionConfig.slug}" version with ID ${doc.id} migrated successfully!`);
45
- }
46
- } else {
47
- const doc = await payload.findByID({
48
- id,
49
- collection: collectionSlug,
50
- depth: 0,
51
- fallbackLocale: null,
52
- locale: 'all',
53
- req,
54
- showHiddenFields: true
55
- });
56
- if (debug) {
57
- payload.logger.info(`The collection "${collectionConfig.slug}" with ID ${doc.id} will be migrated`);
58
- }
59
- traverseFields({
60
- doc,
61
- fields,
62
- path: '',
63
- rows
64
- });
65
- try {
66
- await upsertRow({
67
- id: doc.id,
68
- adapter,
69
- data: doc,
70
- db,
71
- fields,
72
- ignoreResult: true,
73
- operation: 'update',
74
- req,
75
- tableName
76
- });
77
- } catch (err) {
78
- payload.logger.error(`The collection "${collectionConfig.slug}" with ID ${doc.id} has FAILED TO MIGRATE`);
79
- throw err;
80
- }
81
- if (debug) {
82
- payload.logger.info(`The collection "${collectionConfig.slug}" with ID ${doc.id} has migrated successfully!`);
83
- }
84
- }
85
- }
86
- }
87
- if (globalSlug) {
88
- const globalConfig = payload.config.globals?.find((global)=>global.slug === globalSlug);
89
- if (globalConfig) {
90
- if (isVersions) {
91
- const { docs } = await payload.findGlobalVersions({
92
- slug: globalSlug,
93
- depth: 0,
94
- fallbackLocale: null,
95
- limit: 0,
96
- locale: 'all',
97
- req,
98
- showHiddenFields: true
99
- });
100
- if (debug) {
101
- payload.logger.info(`${docs.length} global "${globalSlug}" versions will be migrated`);
102
- }
103
- for (const doc of docs){
104
- traverseFields({
105
- doc,
106
- fields,
107
- path: '',
108
- rows
109
- });
110
- try {
111
- await upsertRow({
112
- id: doc.id,
113
- adapter,
114
- data: doc,
115
- db,
116
- fields,
117
- ignoreResult: true,
118
- operation: 'update',
119
- req,
120
- tableName
121
- });
122
- } catch (err) {
123
- payload.logger.error(`"${globalSlug}" version with ID ${doc.id} FAILED TO MIGRATE`);
124
- throw err;
125
- }
126
- if (debug) {
127
- payload.logger.info(`"${globalSlug}" version with ID ${doc.id} migrated successfully!`);
128
- }
129
- }
130
- } else {
131
- const doc = await payload.findGlobal({
132
- slug: globalSlug,
133
- depth: 0,
134
- fallbackLocale: null,
135
- locale: 'all',
136
- req,
137
- showHiddenFields: true
138
- });
139
- traverseFields({
140
- doc,
141
- fields,
142
- path: '',
143
- rows
144
- });
145
- try {
146
- await upsertRow({
147
- adapter,
148
- data: doc,
149
- db,
150
- fields,
151
- ignoreResult: true,
152
- operation: 'update',
153
- req,
154
- tableName
155
- });
156
- } catch (err) {
157
- payload.logger.error(`The global "${globalSlug}" has FAILED TO MIGRATE`);
158
- throw err;
159
- }
160
- if (debug) {
161
- payload.logger.info(`The global "${globalSlug}" has migrated successfully!`);
162
- }
163
- }
164
- }
165
- }
166
- }
167
- };
168
-
169
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/predefinedMigrations/v2-v3/fetchAndResave/index.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { FlattenedField, Payload, PayloadRequest } from 'payload'\n\nimport { upsertRow } from '@payloadcms/drizzle'\n\nimport type { PostgresAdapter } from '../../../types.js'\nimport type { DocsToResave } from '../types.js'\n\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n db: TransactionPg\n debug: boolean\n docsToResave: DocsToResave\n fields: FlattenedField[]\n globalSlug?: string\n isVersions: boolean\n payload: Payload\n req: PayloadRequest\n tableName: string\n}\n\nexport const fetchAndResave = async ({\n adapter,\n collectionSlug,\n db,\n debug,\n docsToResave,\n fields,\n globalSlug,\n isVersions,\n payload,\n req,\n tableName,\n}: Args) => {\n for (const [id, rows] of Object.entries(docsToResave)) {\n if (collectionSlug) {\n const collectionConfig = payload.collections[collectionSlug].config\n\n if (collectionConfig) {\n if (isVersions) {\n const doc = await payload.findVersionByID({\n id,\n collection: collectionSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" version with ID ${id} will be migrated`,\n )\n }\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(\n `\"${collectionConfig.slug}\" version with ID ${doc.id} FAILED TO MIGRATE`,\n )\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `\"${collectionConfig.slug}\" version with ID ${doc.id} migrated successfully!`,\n )\n }\n } else {\n const doc = await payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} will be migrated`,\n )\n }\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} has FAILED TO MIGRATE`,\n )\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `The collection \"${collectionConfig.slug}\" with ID ${doc.id} has migrated successfully!`,\n )\n }\n }\n }\n }\n\n if (globalSlug) {\n const globalConfig = payload.config.globals?.find((global) => global.slug === globalSlug)\n\n if (globalConfig) {\n if (isVersions) {\n const { docs } = await payload.findGlobalVersions({\n slug: globalSlug,\n depth: 0,\n fallbackLocale: null,\n limit: 0,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n if (debug) {\n payload.logger.info(`${docs.length} global \"${globalSlug}\" versions will be migrated`)\n }\n\n for (const doc of docs) {\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n id: doc.id,\n adapter,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(`\"${globalSlug}\" version with ID ${doc.id} FAILED TO MIGRATE`)\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(\n `\"${globalSlug}\" version with ID ${doc.id} migrated successfully!`,\n )\n }\n }\n } else {\n const doc = await payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n fallbackLocale: null,\n locale: 'all',\n req,\n showHiddenFields: true,\n })\n\n traverseFields({\n doc,\n fields,\n path: '',\n rows,\n })\n\n try {\n await upsertRow({\n adapter,\n data: doc,\n db,\n fields,\n ignoreResult: true,\n operation: 'update',\n req,\n tableName,\n })\n } catch (err) {\n payload.logger.error(`The global \"${globalSlug}\" has FAILED TO MIGRATE`)\n\n throw err\n }\n\n if (debug) {\n payload.logger.info(`The global \"${globalSlug}\" has migrated successfully!`)\n }\n }\n }\n }\n }\n}\n"],"names":["upsertRow","traverseFields","fetchAndResave","adapter","collectionSlug","db","debug","docsToResave","fields","globalSlug","isVersions","payload","req","tableName","id","rows","Object","entries","collectionConfig","collections","config","doc","findVersionByID","collection","depth","fallbackLocale","locale","showHiddenFields","logger","info","slug","path","data","ignoreResult","operation","err","error","findByID","globalConfig","globals","find","global","docs","findGlobalVersions","limit","length","findGlobal"],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import type { FlattenedField } from 'payload';
2
- type Args = {
3
- doc: Record<string, unknown>;
4
- fields: FlattenedField[];
5
- locale?: string;
6
- path: string;
7
- rows: Record<string, unknown>[];
8
- };
9
- export declare const traverseFields: ({ doc, fields, locale, path, rows }: Args) => void;
10
- export {};
11
- //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,cAAc,wCAAyC,IAAI,SAgKvE,CAAA"}
@@ -1,149 +0,0 @@
1
- export const traverseFields = ({ doc, fields, locale, path, rows })=>{
2
- fields.forEach((field)=>{
3
- switch(field.type){
4
- case 'array':
5
- {
6
- const rowData = doc?.[field.name];
7
- if (field.localized && typeof rowData === 'object' && rowData !== null) {
8
- Object.entries(rowData).forEach(([locale, localeRows])=>{
9
- if (Array.isArray(localeRows)) {
10
- localeRows.forEach((row, i)=>{
11
- return traverseFields({
12
- doc: row,
13
- fields: field.flattenedFields,
14
- locale,
15
- path: `${path ? `${path}.` : ''}${field.name}.${i}`,
16
- rows
17
- });
18
- });
19
- }
20
- });
21
- }
22
- if (Array.isArray(rowData)) {
23
- rowData.forEach((row, i)=>{
24
- return traverseFields({
25
- doc: row,
26
- fields: field.flattenedFields,
27
- path: `${path ? `${path}.` : ''}${field.name}.${i}`,
28
- rows
29
- });
30
- });
31
- }
32
- break;
33
- }
34
- case 'blocks':
35
- {
36
- const rowData = doc?.[field.name];
37
- if (field.localized && typeof rowData === 'object' && rowData !== null) {
38
- Object.entries(rowData).forEach(([locale, localeRows])=>{
39
- if (Array.isArray(localeRows)) {
40
- localeRows.forEach((row, i)=>{
41
- const matchedBlock = field.blocks.find((block)=>block.slug === row.blockType);
42
- if (matchedBlock) {
43
- return traverseFields({
44
- doc: row,
45
- fields: matchedBlock.flattenedFields,
46
- locale,
47
- path: `${path ? `${path}.` : ''}${field.name}.${i}`,
48
- rows
49
- });
50
- }
51
- });
52
- }
53
- });
54
- }
55
- if (Array.isArray(rowData)) {
56
- rowData.forEach((row, i)=>{
57
- const matchedBlock = field.blocks.find((block)=>block.slug === row.blockType);
58
- if (matchedBlock) {
59
- return traverseFields({
60
- doc: row,
61
- fields: matchedBlock.flattenedFields,
62
- path: `${path ? `${path}.` : ''}${field.name}.${i}`,
63
- rows
64
- });
65
- }
66
- });
67
- }
68
- break;
69
- }
70
- case 'group':
71
- case 'tab':
72
- {
73
- const newPath = `${path ? `${path}.` : ''}${field.name}`;
74
- const newDoc = doc?.[field.name];
75
- if (typeof newDoc === 'object' && newDoc !== null) {
76
- if (field.localized) {
77
- Object.entries(newDoc).forEach(([locale, localeDoc])=>{
78
- return traverseFields({
79
- doc: localeDoc,
80
- fields: field.flattenedFields,
81
- locale,
82
- path: newPath,
83
- rows
84
- });
85
- });
86
- } else {
87
- return traverseFields({
88
- doc: newDoc,
89
- fields: field.flattenedFields,
90
- path: newPath,
91
- rows
92
- });
93
- }
94
- }
95
- break;
96
- }
97
- case 'relationship':
98
- // falls through
99
- case 'upload':
100
- {
101
- if (typeof field.relationTo === 'string') {
102
- if (field.type === 'upload' || !field.hasMany) {
103
- const relationshipPath = `${path ? `${path}.` : ''}${field.name}`;
104
- if (field.localized) {
105
- const matchedRelationshipsWithLocales = rows.filter((row)=>row.path === relationshipPath);
106
- if (matchedRelationshipsWithLocales.length && !doc[field.name]) {
107
- doc[field.name] = {};
108
- }
109
- const newDoc = doc[field.name];
110
- matchedRelationshipsWithLocales.forEach((localeRow)=>{
111
- if (typeof localeRow.locale === 'string') {
112
- const [, id] = Object.entries(localeRow).find(([key, val])=>val !== null && ![
113
- 'id',
114
- 'locale',
115
- 'order',
116
- 'parent_id',
117
- 'path'
118
- ].includes(key));
119
- newDoc[localeRow.locale] = id;
120
- }
121
- });
122
- } else {
123
- const matchedRelationship = rows.find((row)=>{
124
- const matchesPath = row.path === relationshipPath;
125
- if (locale) {
126
- return matchesPath && locale === row.locale;
127
- }
128
- return row.path === relationshipPath;
129
- });
130
- if (matchedRelationship) {
131
- const [, id] = Object.entries(matchedRelationship).find(([key, val])=>val !== null && ![
132
- 'id',
133
- 'locale',
134
- 'order',
135
- 'parent_id',
136
- 'path'
137
- ].includes(key));
138
- doc[field.name] = id;
139
- }
140
- }
141
- }
142
- }
143
- break;
144
- }
145
- }
146
- });
147
- };
148
-
149
- //# sourceMappingURL=traverseFields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.ts"],"sourcesContent":["import type { FlattenedField } from 'payload'\n\ntype Args = {\n doc: Record<string, unknown>\n fields: FlattenedField[]\n locale?: string\n path: string\n rows: Record<string, unknown>[]\n}\n\nexport const traverseFields = ({ doc, fields, locale, path, rows }: Args) => {\n fields.forEach((field) => {\n switch (field.type) {\n case 'array': {\n const rowData = doc?.[field.name]\n\n if (field.localized && typeof rowData === 'object' && rowData !== null) {\n Object.entries(rowData).forEach(([locale, localeRows]) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: field.flattenedFields,\n locale,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n })\n }\n })\n }\n\n if (Array.isArray(rowData)) {\n rowData.forEach((row, i) => {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: field.flattenedFields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n })\n }\n\n break\n }\n\n case 'blocks': {\n const rowData = doc?.[field.name]\n\n if (field.localized && typeof rowData === 'object' && rowData !== null) {\n Object.entries(rowData).forEach(([locale, localeRows]) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const matchedBlock = field.blocks.find((block) => block.slug === row.blockType)\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.flattenedFields,\n locale,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n })\n }\n\n if (Array.isArray(rowData)) {\n rowData.forEach((row, i) => {\n const matchedBlock = field.blocks.find((block) => block.slug === row.blockType)\n\n if (matchedBlock) {\n return traverseFields({\n doc: row as Record<string, unknown>,\n fields: matchedBlock.flattenedFields,\n path: `${path ? `${path}.` : ''}${field.name}.${i}`,\n rows,\n })\n }\n })\n }\n\n break\n }\n\n case 'group':\n case 'tab': {\n const newPath = `${path ? `${path}.` : ''}${field.name}`\n const newDoc = doc?.[field.name]\n\n if (typeof newDoc === 'object' && newDoc !== null) {\n if (field.localized) {\n Object.entries(newDoc).forEach(([locale, localeDoc]) => {\n return traverseFields({\n doc: localeDoc,\n fields: field.flattenedFields,\n locale,\n path: newPath,\n rows,\n })\n })\n } else {\n return traverseFields({\n doc: newDoc as Record<string, unknown>,\n fields: field.flattenedFields,\n path: newPath,\n rows,\n })\n }\n }\n\n break\n }\n\n case 'relationship':\n // falls through\n case 'upload': {\n if (typeof field.relationTo === 'string') {\n if (field.type === 'upload' || !field.hasMany) {\n const relationshipPath = `${path ? `${path}.` : ''}${field.name}`\n\n if (field.localized) {\n const matchedRelationshipsWithLocales = rows.filter(\n (row) => row.path === relationshipPath,\n )\n\n if (matchedRelationshipsWithLocales.length && !doc[field.name]) {\n doc[field.name] = {}\n }\n\n const newDoc = doc[field.name] as Record<string, unknown>\n\n matchedRelationshipsWithLocales.forEach((localeRow) => {\n if (typeof localeRow.locale === 'string') {\n const [, id] = Object.entries(localeRow).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent_id', 'path'].includes(key),\n )\n\n newDoc[localeRow.locale] = id\n }\n })\n } else {\n const matchedRelationship = rows.find((row) => {\n const matchesPath = row.path === relationshipPath\n\n if (locale) {\n return matchesPath && locale === row.locale\n }\n\n return row.path === relationshipPath\n })\n\n if (matchedRelationship) {\n const [, id] = Object.entries(matchedRelationship).find(\n ([key, val]) =>\n val !== null && !['id', 'locale', 'order', 'parent_id', 'path'].includes(key),\n )\n\n doc[field.name] = id\n }\n }\n }\n }\n break\n }\n }\n })\n}\n"],"names":["traverseFields","doc","fields","locale","path","rows","forEach","field","type","rowData","name","localized","Object","entries","localeRows","Array","isArray","row","i","flattenedFields","matchedBlock","blocks","find","block","slug","blockType","newPath","newDoc","localeDoc","relationTo","hasMany","relationshipPath","matchedRelationshipsWithLocales","filter","length","localeRow","id","key","val","includes","matchedRelationship","matchesPath"],"mappings":"AAUA,OAAO,MAAMA,iBAAiB,CAAC,EAAEC,GAAG,EAAEC,MAAM,EAAEC,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAQ;IACtEH,OAAOI,OAAO,CAAC,CAACC;QACd,OAAQA,MAAMC,IAAI;YAChB,KAAK;gBAAS;oBACZ,MAAMC,UAAUR,KAAK,CAACM,MAAMG,IAAI,CAAC;oBAEjC,IAAIH,MAAMI,SAAS,IAAI,OAAOF,YAAY,YAAYA,YAAY,MAAM;wBACtEG,OAAOC,OAAO,CAACJ,SAASH,OAAO,CAAC,CAAC,CAACH,QAAQW,WAAW;4BACnD,IAAIC,MAAMC,OAAO,CAACF,aAAa;gCAC7BA,WAAWR,OAAO,CAAC,CAACW,KAAKC;oCACvB,OAAOlB,eAAe;wCACpBC,KAAKgB;wCACLf,QAAQK,MAAMY,eAAe;wCAC7BhB;wCACAC,MAAM,GAAGA,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKG,MAAMG,IAAI,CAAC,CAAC,EAAEQ,GAAG;wCACnDb;oCACF;gCACF;4BACF;wBACF;oBACF;oBAEA,IAAIU,MAAMC,OAAO,CAACP,UAAU;wBAC1BA,QAAQH,OAAO,CAAC,CAACW,KAAKC;4BACpB,OAAOlB,eAAe;gCACpBC,KAAKgB;gCACLf,QAAQK,MAAMY,eAAe;gCAC7Bf,MAAM,GAAGA,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKG,MAAMG,IAAI,CAAC,CAAC,EAAEQ,GAAG;gCACnDb;4BACF;wBACF;oBACF;oBAEA;gBACF;YAEA,KAAK;gBAAU;oBACb,MAAMI,UAAUR,KAAK,CAACM,MAAMG,IAAI,CAAC;oBAEjC,IAAIH,MAAMI,SAAS,IAAI,OAAOF,YAAY,YAAYA,YAAY,MAAM;wBACtEG,OAAOC,OAAO,CAACJ,SAASH,OAAO,CAAC,CAAC,CAACH,QAAQW,WAAW;4BACnD,IAAIC,MAAMC,OAAO,CAACF,aAAa;gCAC7BA,WAAWR,OAAO,CAAC,CAACW,KAAKC;oCACvB,MAAME,eAAeb,MAAMc,MAAM,CAACC,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKP,IAAIQ,SAAS;oCAE9E,IAAIL,cAAc;wCAChB,OAAOpB,eAAe;4CACpBC,KAAKgB;4CACLf,QAAQkB,aAAaD,eAAe;4CACpChB;4CACAC,MAAM,GAAGA,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKG,MAAMG,IAAI,CAAC,CAAC,EAAEQ,GAAG;4CACnDb;wCACF;oCACF;gCACF;4BACF;wBACF;oBACF;oBAEA,IAAIU,MAAMC,OAAO,CAACP,UAAU;wBAC1BA,QAAQH,OAAO,CAAC,CAACW,KAAKC;4BACpB,MAAME,eAAeb,MAAMc,MAAM,CAACC,IAAI,CAAC,CAACC,QAAUA,MAAMC,IAAI,KAAKP,IAAIQ,SAAS;4BAE9E,IAAIL,cAAc;gCAChB,OAAOpB,eAAe;oCACpBC,KAAKgB;oCACLf,QAAQkB,aAAaD,eAAe;oCACpCf,MAAM,GAAGA,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKG,MAAMG,IAAI,CAAC,CAAC,EAAEQ,GAAG;oCACnDb;gCACF;4BACF;wBACF;oBACF;oBAEA;gBACF;YAEA,KAAK;YACL,KAAK;gBAAO;oBACV,MAAMqB,UAAU,GAAGtB,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKG,MAAMG,IAAI,EAAE;oBACxD,MAAMiB,SAAS1B,KAAK,CAACM,MAAMG,IAAI,CAAC;oBAEhC,IAAI,OAAOiB,WAAW,YAAYA,WAAW,MAAM;wBACjD,IAAIpB,MAAMI,SAAS,EAAE;4BACnBC,OAAOC,OAAO,CAACc,QAAQrB,OAAO,CAAC,CAAC,CAACH,QAAQyB,UAAU;gCACjD,OAAO5B,eAAe;oCACpBC,KAAK2B;oCACL1B,QAAQK,MAAMY,eAAe;oCAC7BhB;oCACAC,MAAMsB;oCACNrB;gCACF;4BACF;wBACF,OAAO;4BACL,OAAOL,eAAe;gCACpBC,KAAK0B;gCACLzB,QAAQK,MAAMY,eAAe;gCAC7Bf,MAAMsB;gCACNrB;4BACF;wBACF;oBACF;oBAEA;gBACF;YAEA,KAAK;YACL,gBAAgB;YAChB,KAAK;gBAAU;oBACb,IAAI,OAAOE,MAAMsB,UAAU,KAAK,UAAU;wBACxC,IAAItB,MAAMC,IAAI,KAAK,YAAY,CAACD,MAAMuB,OAAO,EAAE;4BAC7C,MAAMC,mBAAmB,GAAG3B,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKG,MAAMG,IAAI,EAAE;4BAEjE,IAAIH,MAAMI,SAAS,EAAE;gCACnB,MAAMqB,kCAAkC3B,KAAK4B,MAAM,CACjD,CAAChB,MAAQA,IAAIb,IAAI,KAAK2B;gCAGxB,IAAIC,gCAAgCE,MAAM,IAAI,CAACjC,GAAG,CAACM,MAAMG,IAAI,CAAC,EAAE;oCAC9DT,GAAG,CAACM,MAAMG,IAAI,CAAC,GAAG,CAAC;gCACrB;gCAEA,MAAMiB,SAAS1B,GAAG,CAACM,MAAMG,IAAI,CAAC;gCAE9BsB,gCAAgC1B,OAAO,CAAC,CAAC6B;oCACvC,IAAI,OAAOA,UAAUhC,MAAM,KAAK,UAAU;wCACxC,MAAM,GAAGiC,GAAG,GAAGxB,OAAOC,OAAO,CAACsB,WAAWb,IAAI,CAC3C,CAAC,CAACe,KAAKC,IAAI,GACTA,QAAQ,QAAQ,CAAC;gDAAC;gDAAM;gDAAU;gDAAS;gDAAa;6CAAO,CAACC,QAAQ,CAACF;wCAG7EV,MAAM,CAACQ,UAAUhC,MAAM,CAAC,GAAGiC;oCAC7B;gCACF;4BACF,OAAO;gCACL,MAAMI,sBAAsBnC,KAAKiB,IAAI,CAAC,CAACL;oCACrC,MAAMwB,cAAcxB,IAAIb,IAAI,KAAK2B;oCAEjC,IAAI5B,QAAQ;wCACV,OAAOsC,eAAetC,WAAWc,IAAId,MAAM;oCAC7C;oCAEA,OAAOc,IAAIb,IAAI,KAAK2B;gCACtB;gCAEA,IAAIS,qBAAqB;oCACvB,MAAM,GAAGJ,GAAG,GAAGxB,OAAOC,OAAO,CAAC2B,qBAAqBlB,IAAI,CACrD,CAAC,CAACe,KAAKC,IAAI,GACTA,QAAQ,QAAQ,CAAC;4CAAC;4CAAM;4CAAU;4CAAS;4CAAa;yCAAO,CAACC,QAAQ,CAACF;oCAG7EpC,GAAG,CAACM,MAAMG,IAAI,CAAC,GAAG0B;gCACpB;4BACF;wBACF;oBACF;oBACA;gBACF;QACF;IACF;AACF,EAAC"}
@@ -1,3 +0,0 @@
1
- export type Groups = 'addColumn' | 'addConstraint' | 'dropColumn' | 'dropConstraint' | 'dropTable' | 'notNull';
2
- export declare const groupUpSQLStatements: (list: string[]) => Record<Groups, string[]>;
3
- //# sourceMappingURL=groupUpSQLStatements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"groupUpSQLStatements.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/groupUpSQLStatements.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GACd,WAAW,GACX,eAAe,GACf,YAAY,GACZ,gBAAgB,GAChB,WAAW,GACX,SAAS,CAAA;AAgBb,eAAO,MAAM,oBAAoB,SAAU,MAAM,EAAE,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAmD5E,CAAA"}
@@ -1,56 +0,0 @@
1
- /**
2
- * Convert an "ADD COLUMN" statement to an "ALTER COLUMN" statement
3
- * example: ALTER TABLE "pages_blocks_my_block" ADD COLUMN "person_id" integer NOT NULL;
4
- * to: ALTER TABLE "pages_blocks_my_block" ALTER COLUMN "person_id" SET NOT NULL;
5
- * @param sql
6
- */ function convertAddColumnToAlterColumn(sql) {
7
- // Regular expression to match the ADD COLUMN statement with its constraints
8
- const regex = /ALTER TABLE ("[^"]+") ADD COLUMN ("[^"]+") [\w\s]+ NOT NULL;/;
9
- // Replace the matched part with "ALTER COLUMN ... SET NOT NULL;"
10
- return sql.replace(regex, 'ALTER TABLE $1 ALTER COLUMN $2 SET NOT NULL;');
11
- }
12
- export const groupUpSQLStatements = (list)=>{
13
- const groups = {
14
- addColumn: 'ADD COLUMN',
15
- // example: ALTER TABLE "posts" ADD COLUMN "category_id" integer
16
- addConstraint: 'ADD CONSTRAINT',
17
- //example:
18
- // DO $$ BEGIN
19
- // ALTER TABLE "pages_blocks_my_block" ADD CONSTRAINT "pages_blocks_my_block_person_id_users_id_fk" FOREIGN KEY ("person_id") REFERENCES "users"("id") ON DELETE cascade ON UPDATE no action;
20
- // EXCEPTION
21
- // WHEN duplicate_object THEN null;
22
- // END $$;
23
- dropColumn: 'DROP COLUMN',
24
- // example: ALTER TABLE "_posts_v_rels" DROP COLUMN IF EXISTS "posts_id";
25
- dropConstraint: 'DROP CONSTRAINT',
26
- // example: ALTER TABLE "_posts_v_rels" DROP CONSTRAINT "_posts_v_rels_posts_fk";
27
- dropTable: 'DROP TABLE',
28
- // example: DROP TABLE "pages_rels";
29
- notNull: 'NOT NULL'
30
- };
31
- const result = Object.keys(groups).reduce((result, group)=>{
32
- result[group] = [];
33
- return result;
34
- }, {});
35
- for (const line of list){
36
- Object.entries(groups).some(([key, value])=>{
37
- if (line.endsWith('NOT NULL;')) {
38
- // split up the ADD COLUMN and ALTER COLUMN NOT NULL statements
39
- // example: ALTER TABLE "pages_blocks_my_block" ADD COLUMN "person_id" integer NOT NULL;
40
- // becomes two separate statements:
41
- // 1. ALTER TABLE "pages_blocks_my_block" ADD COLUMN "person_id" integer;
42
- // 2. ALTER TABLE "pages_blocks_my_block" ALTER COLUMN "person_id" SET NOT NULL;
43
- result.addColumn.push(line.replace(' NOT NULL;', ';'));
44
- result.notNull.push(convertAddColumnToAlterColumn(line));
45
- return true;
46
- }
47
- if (line.includes(value)) {
48
- result[key].push(line);
49
- return true;
50
- }
51
- });
52
- }
53
- return result;
54
- };
55
-
56
- //# sourceMappingURL=groupUpSQLStatements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/groupUpSQLStatements.ts"],"sourcesContent":["export type Groups =\n | 'addColumn'\n | 'addConstraint'\n | 'dropColumn'\n | 'dropConstraint'\n | 'dropTable'\n | 'notNull'\n\n/**\n * Convert an \"ADD COLUMN\" statement to an \"ALTER COLUMN\" statement\n * example: ALTER TABLE \"pages_blocks_my_block\" ADD COLUMN \"person_id\" integer NOT NULL;\n * to: ALTER TABLE \"pages_blocks_my_block\" ALTER COLUMN \"person_id\" SET NOT NULL;\n * @param sql\n */\nfunction convertAddColumnToAlterColumn(sql) {\n // Regular expression to match the ADD COLUMN statement with its constraints\n const regex = /ALTER TABLE (\"[^\"]+\") ADD COLUMN (\"[^\"]+\") [\\w\\s]+ NOT NULL;/\n\n // Replace the matched part with \"ALTER COLUMN ... SET NOT NULL;\"\n return sql.replace(regex, 'ALTER TABLE $1 ALTER COLUMN $2 SET NOT NULL;')\n}\n\nexport const groupUpSQLStatements = (list: string[]): Record<Groups, string[]> => {\n const groups = {\n addColumn: 'ADD COLUMN',\n // example: ALTER TABLE \"posts\" ADD COLUMN \"category_id\" integer\n\n addConstraint: 'ADD CONSTRAINT',\n //example:\n // DO $$ BEGIN\n // ALTER TABLE \"pages_blocks_my_block\" ADD CONSTRAINT \"pages_blocks_my_block_person_id_users_id_fk\" FOREIGN KEY (\"person_id\") REFERENCES \"users\"(\"id\") ON DELETE cascade ON UPDATE no action;\n // EXCEPTION\n // WHEN duplicate_object THEN null;\n // END $$;\n\n dropColumn: 'DROP COLUMN',\n // example: ALTER TABLE \"_posts_v_rels\" DROP COLUMN IF EXISTS \"posts_id\";\n\n dropConstraint: 'DROP CONSTRAINT',\n // example: ALTER TABLE \"_posts_v_rels\" DROP CONSTRAINT \"_posts_v_rels_posts_fk\";\n\n dropTable: 'DROP TABLE',\n // example: DROP TABLE \"pages_rels\";\n\n notNull: 'NOT NULL',\n // example: ALTER TABLE \"pages_blocks_my_block\" ALTER COLUMN \"person_id\" SET NOT NULL;\n }\n\n const result = Object.keys(groups).reduce((result, group: Groups) => {\n result[group] = []\n return result\n }, {}) as Record<Groups, string[]>\n\n for (const line of list) {\n Object.entries(groups).some(([key, value]) => {\n if (line.endsWith('NOT NULL;')) {\n // split up the ADD COLUMN and ALTER COLUMN NOT NULL statements\n // example: ALTER TABLE \"pages_blocks_my_block\" ADD COLUMN \"person_id\" integer NOT NULL;\n // becomes two separate statements:\n // 1. ALTER TABLE \"pages_blocks_my_block\" ADD COLUMN \"person_id\" integer;\n // 2. ALTER TABLE \"pages_blocks_my_block\" ALTER COLUMN \"person_id\" SET NOT NULL;\n result.addColumn.push(line.replace(' NOT NULL;', ';'))\n result.notNull.push(convertAddColumnToAlterColumn(line))\n return true\n }\n if (line.includes(value)) {\n result[key].push(line)\n return true\n }\n })\n }\n\n return result\n}\n"],"names":["convertAddColumnToAlterColumn","sql","regex","replace","groupUpSQLStatements","list","groups","addColumn","addConstraint","dropColumn","dropConstraint","dropTable","notNull","result","Object","keys","reduce","group","line","entries","some","key","value","endsWith","push","includes"],"mappings":"AAQA;;;;;CAKC,GACD,SAASA,8BAA8BC,GAAG;IACxC,4EAA4E;IAC5E,MAAMC,QAAQ;IAEd,iEAAiE;IACjE,OAAOD,IAAIE,OAAO,CAACD,OAAO;AAC5B;AAEA,OAAO,MAAME,uBAAuB,CAACC;IACnC,MAAMC,SAAS;QACbC,WAAW;QACX,gEAAgE;QAEhEC,eAAe;QACf,UAAU;QACV,cAAc;QACd,8LAA8L;QAC9L,YAAY;QACZ,oCAAoC;QACpC,UAAU;QAEVC,YAAY;QACZ,yEAAyE;QAEzEC,gBAAgB;QAChB,iFAAiF;QAEjFC,WAAW;QACX,oCAAoC;QAEpCC,SAAS;IAEX;IAEA,MAAMC,SAASC,OAAOC,IAAI,CAACT,QAAQU,MAAM,CAAC,CAACH,QAAQI;QACjDJ,MAAM,CAACI,MAAM,GAAG,EAAE;QAClB,OAAOJ;IACT,GAAG,CAAC;IAEJ,KAAK,MAAMK,QAAQb,KAAM;QACvBS,OAAOK,OAAO,CAACb,QAAQc,IAAI,CAAC,CAAC,CAACC,KAAKC,MAAM;YACvC,IAAIJ,KAAKK,QAAQ,CAAC,cAAc;gBAC9B,+DAA+D;gBAC/D,wFAAwF;gBACxF,mCAAmC;gBACnC,0EAA0E;gBAC1E,kFAAkF;gBAClFV,OAAON,SAAS,CAACiB,IAAI,CAACN,KAAKf,OAAO,CAAC,cAAc;gBACjDU,OAAOD,OAAO,CAACY,IAAI,CAACxB,8BAA8BkB;gBAClD,OAAO;YACT;YACA,IAAIA,KAAKO,QAAQ,CAACH,QAAQ;gBACxBT,MAAM,CAACQ,IAAI,CAACG,IAAI,CAACN;gBACjB,OAAO;YACT;QACF;IACF;IAEA,OAAOL;AACT,EAAC"}
@@ -1,23 +0,0 @@
1
- import type { Payload, PayloadRequest } from 'payload';
2
- type Args = {
3
- debug?: boolean;
4
- payload: Payload;
5
- req?: Partial<PayloadRequest>;
6
- };
7
- /**
8
- * Moves upload and relationship columns from the join table and into the tables while moving data
9
- * This is done in the following order:
10
- * ADD COLUMNs
11
- * -- manipulate data to move relationships to new columns
12
- * ADD CONSTRAINTs
13
- * NOT NULLs
14
- * DROP TABLEs
15
- * DROP CONSTRAINTs
16
- * DROP COLUMNs
17
- * @param debug
18
- * @param payload
19
- * @param req
20
- */
21
- export declare const migratePostgresV2toV3: ({ debug, payload, req }: Args) => Promise<void>;
22
- export {};
23
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiBtD,KAAK,IAAI,GAAG;IACV,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,4BAAmC,IAAI,kBA8OxE,CAAA"}
@@ -1,211 +0,0 @@
1
- import { sql } from 'drizzle-orm';
2
- import fs from 'fs';
3
- import { createRequire } from 'module';
4
- import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload';
5
- import toSnakeCase from 'to-snake-case';
6
- import { groupUpSQLStatements } from './groupUpSQLStatements.js';
7
- import { migrateRelationships } from './migrateRelationships.js';
8
- import { traverseFields } from './traverseFields.js';
9
- const require = createRequire(import.meta.url);
10
- /**
11
- * Moves upload and relationship columns from the join table and into the tables while moving data
12
- * This is done in the following order:
13
- * ADD COLUMNs
14
- * -- manipulate data to move relationships to new columns
15
- * ADD CONSTRAINTs
16
- * NOT NULLs
17
- * DROP TABLEs
18
- * DROP CONSTRAINTs
19
- * DROP COLUMNs
20
- * @param debug
21
- * @param payload
22
- * @param req
23
- */ export const migratePostgresV2toV3 = async ({ debug, payload, req })=>{
24
- const adapter = payload.db;
25
- const db = adapter.sessions[await req.transactionID].db;
26
- const dir = payload.db.migrationDir;
27
- // get the drizzle migrateUpSQL from drizzle using the last schema
28
- const { generateDrizzleJson, generateMigration } = require('drizzle-kit/api');
29
- const drizzleJsonAfter = generateDrizzleJson(adapter.schema);
30
- // Get the previous migration snapshot
31
- const previousSnapshot = fs.readdirSync(dir).filter((file)=>file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json')).sort().reverse()?.[0];
32
- if (!previousSnapshot) {
33
- throw new Error(`No previous migration schema file found! A prior migration from v2 is required to migrate to v3.`);
34
- }
35
- const drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'));
36
- const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter);
37
- if (!generatedSQL.length) {
38
- payload.logger.info(`No schema changes needed.`);
39
- process.exit(0);
40
- }
41
- const sqlUpStatements = groupUpSQLStatements(generatedSQL);
42
- const addColumnsStatement = sqlUpStatements.addColumn.join('\n');
43
- if (debug) {
44
- payload.logger.info('CREATING NEW RELATIONSHIP COLUMNS');
45
- payload.logger.info(addColumnsStatement);
46
- }
47
- await db.execute(sql.raw(addColumnsStatement));
48
- for (const collection of payload.config.collections){
49
- const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug));
50
- const pathsToQuery = new Set();
51
- traverseFields({
52
- adapter,
53
- collectionSlug: collection.slug,
54
- columnPrefix: '',
55
- db,
56
- disableNotNull: false,
57
- fields: collection.flattenedFields,
58
- isVersions: false,
59
- newTableName: tableName,
60
- parentTableName: tableName,
61
- path: '',
62
- pathsToQuery,
63
- payload,
64
- rootTableName: tableName
65
- });
66
- await migrateRelationships({
67
- adapter,
68
- collectionSlug: collection.slug,
69
- db,
70
- debug,
71
- fields: collection.flattenedFields,
72
- isVersions: false,
73
- pathsToQuery,
74
- payload,
75
- req,
76
- tableName
77
- });
78
- if (collection.versions) {
79
- const versionsTableName = adapter.tableNameMap.get(`_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`);
80
- const versionFields = buildVersionCollectionFields(payload.config, collection, true);
81
- const versionPathsToQuery = new Set();
82
- traverseFields({
83
- adapter,
84
- collectionSlug: collection.slug,
85
- columnPrefix: '',
86
- db,
87
- disableNotNull: true,
88
- fields: versionFields,
89
- isVersions: true,
90
- newTableName: versionsTableName,
91
- parentTableName: versionsTableName,
92
- path: '',
93
- pathsToQuery: versionPathsToQuery,
94
- payload,
95
- rootTableName: versionsTableName
96
- });
97
- await migrateRelationships({
98
- adapter,
99
- collectionSlug: collection.slug,
100
- db,
101
- debug,
102
- fields: versionFields,
103
- isVersions: true,
104
- pathsToQuery: versionPathsToQuery,
105
- payload,
106
- req,
107
- tableName: versionsTableName
108
- });
109
- }
110
- }
111
- for (const global of payload.config.globals){
112
- const tableName = adapter.tableNameMap.get(toSnakeCase(global.slug));
113
- const pathsToQuery = new Set();
114
- traverseFields({
115
- adapter,
116
- columnPrefix: '',
117
- db,
118
- disableNotNull: false,
119
- fields: global.flattenedFields,
120
- globalSlug: global.slug,
121
- isVersions: false,
122
- newTableName: tableName,
123
- parentTableName: tableName,
124
- path: '',
125
- pathsToQuery,
126
- payload,
127
- rootTableName: tableName
128
- });
129
- await migrateRelationships({
130
- adapter,
131
- db,
132
- debug,
133
- fields: global.flattenedFields,
134
- globalSlug: global.slug,
135
- isVersions: false,
136
- pathsToQuery,
137
- payload,
138
- req,
139
- tableName
140
- });
141
- if (global.versions) {
142
- const versionsTableName = adapter.tableNameMap.get(`_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`);
143
- const versionFields = buildVersionGlobalFields(payload.config, global, true);
144
- const versionPathsToQuery = new Set();
145
- traverseFields({
146
- adapter,
147
- columnPrefix: '',
148
- db,
149
- disableNotNull: true,
150
- fields: versionFields,
151
- globalSlug: global.slug,
152
- isVersions: true,
153
- newTableName: versionsTableName,
154
- parentTableName: versionsTableName,
155
- path: '',
156
- pathsToQuery: versionPathsToQuery,
157
- payload,
158
- rootTableName: versionsTableName
159
- });
160
- await migrateRelationships({
161
- adapter,
162
- db,
163
- debug,
164
- fields: versionFields,
165
- globalSlug: global.slug,
166
- isVersions: true,
167
- pathsToQuery: versionPathsToQuery,
168
- payload,
169
- req,
170
- tableName: versionsTableName
171
- });
172
- }
173
- }
174
- // ADD CONSTRAINT
175
- const addConstraintsStatement = sqlUpStatements.addConstraint.join('\n');
176
- if (debug) {
177
- payload.logger.info('ADDING CONSTRAINTS');
178
- payload.logger.info(addConstraintsStatement);
179
- }
180
- await db.execute(sql.raw(addConstraintsStatement));
181
- // NOT NULL
182
- const notNullStatements = sqlUpStatements.notNull.join('\n');
183
- if (debug) {
184
- payload.logger.info('NOT NULL CONSTRAINTS');
185
- payload.logger.info(notNullStatements);
186
- }
187
- await db.execute(sql.raw(notNullStatements));
188
- // DROP TABLE
189
- const dropTablesStatement = sqlUpStatements.dropTable.join('\n');
190
- if (debug) {
191
- payload.logger.info('DROPPING TABLES');
192
- payload.logger.info(dropTablesStatement);
193
- }
194
- await db.execute(sql.raw(dropTablesStatement));
195
- // DROP CONSTRAINT
196
- const dropConstraintsStatement = sqlUpStatements.dropConstraint.join('\n');
197
- if (debug) {
198
- payload.logger.info('DROPPING CONSTRAINTS');
199
- payload.logger.info(dropConstraintsStatement);
200
- }
201
- await db.execute(sql.raw(dropConstraintsStatement));
202
- // DROP COLUMN
203
- const dropColumnsStatement = sqlUpStatements.dropColumn.join('\n');
204
- if (debug) {
205
- payload.logger.info('DROPPING COLUMNS');
206
- payload.logger.info(dropColumnsStatement);
207
- }
208
- await db.execute(sql.raw(dropColumnsStatement));
209
- };
210
-
211
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { createRequire } from 'module'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\n\nconst require = createRequire(import.meta.url)\n\ntype Args = {\n debug?: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n}\n\n/**\n * Moves upload and relationship columns from the join table and into the tables while moving data\n * This is done in the following order:\n * ADD COLUMNs\n * -- manipulate data to move relationships to new columns\n * ADD CONSTRAINTs\n * NOT NULLs\n * DROP TABLEs\n * DROP CONSTRAINTs\n * DROP COLUMNs\n * @param debug\n * @param payload\n * @param req\n */\nexport const migratePostgresV2toV3 = async ({ debug, payload, req }: Args) => {\n const adapter = payload.db as unknown as PostgresAdapter\n const db = adapter.sessions[await req.transactionID].db as TransactionPg\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration } = require('drizzle-kit/api')\n const drizzleJsonAfter = generateDrizzleJson(adapter.schema)\n\n // Get the previous migration snapshot\n const previousSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json'))\n .sort()\n .reverse()?.[0]\n\n if (!previousSnapshot) {\n throw new Error(\n `No previous migration schema file found! A prior migration from v2 is required to migrate to v3.`,\n )\n }\n\n const drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n if (!generatedSQL.length) {\n payload.logger.info(`No schema changes needed.`)\n process.exit(0)\n }\n\n const sqlUpStatements = groupUpSQLStatements(generatedSQL)\n\n const addColumnsStatement = sqlUpStatements.addColumn.join('\\n')\n\n if (debug) {\n payload.logger.info('CREATING NEW RELATIONSHIP COLUMNS')\n payload.logger.info(addColumnsStatement)\n }\n\n await db.execute(sql.raw(addColumnsStatement))\n\n for (const collection of payload.config.collections) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: collection.flattenedFields,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: collection.flattenedFields,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(payload.config, collection, true)\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: versionFields,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n for (const global of payload.config.globals) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(global.slug))\n\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: global.flattenedFields,\n globalSlug: global.slug,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: global.flattenedFields,\n globalSlug: global.slug,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (global.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`,\n )\n\n const versionFields = buildVersionGlobalFields(payload.config, global, true)\n\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n // ADD CONSTRAINT\n const addConstraintsStatement = sqlUpStatements.addConstraint.join('\\n')\n\n if (debug) {\n payload.logger.info('ADDING CONSTRAINTS')\n payload.logger.info(addConstraintsStatement)\n }\n\n await db.execute(sql.raw(addConstraintsStatement))\n\n // NOT NULL\n const notNullStatements = sqlUpStatements.notNull.join('\\n')\n\n if (debug) {\n payload.logger.info('NOT NULL CONSTRAINTS')\n payload.logger.info(notNullStatements)\n }\n\n await db.execute(sql.raw(notNullStatements))\n\n // DROP TABLE\n const dropTablesStatement = sqlUpStatements.dropTable.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING TABLES')\n payload.logger.info(dropTablesStatement)\n }\n\n await db.execute(sql.raw(dropTablesStatement))\n\n // DROP CONSTRAINT\n const dropConstraintsStatement = sqlUpStatements.dropConstraint.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING CONSTRAINTS')\n payload.logger.info(dropConstraintsStatement)\n }\n\n await db.execute(sql.raw(dropConstraintsStatement))\n\n // DROP COLUMN\n const dropColumnsStatement = sqlUpStatements.dropColumn.join('\\n')\n\n if (debug) {\n payload.logger.info('DROPPING COLUMNS')\n payload.logger.info(dropColumnsStatement)\n }\n\n await db.execute(sql.raw(dropColumnsStatement))\n}\n"],"names":["sql","fs","createRequire","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","groupUpSQLStatements","migrateRelationships","traverseFields","require","url","migratePostgresV2toV3","debug","payload","req","adapter","db","sessions","transactionID","dir","migrationDir","generateDrizzleJson","generateMigration","drizzleJsonAfter","schema","previousSnapshot","readdirSync","filter","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","generatedSQL","length","logger","info","process","exit","sqlUpStatements","addColumnsStatement","addColumn","join","execute","raw","collection","config","collections","tableName","tableNameMap","get","slug","pathsToQuery","Set","collectionSlug","columnPrefix","disableNotNull","fields","flattenedFields","isVersions","newTableName","parentTableName","path","rootTableName","versions","versionsTableName","versionsSuffix","versionFields","versionPathsToQuery","global","globals","globalSlug","addConstraintsStatement","addConstraint","notNullStatements","notNull","dropTablesStatement","dropTable","dropConstraintsStatement","dropConstraint","dropColumnsStatement","dropColumn"],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import type { TransactionPg } from '@payloadcms/drizzle/types';
2
- import type { FlattenedField, Payload, PayloadRequest } from 'payload';
3
- import type { PostgresAdapter } from '../../types.js';
4
- import type { PathsToQuery } from './types.js';
5
- type Args = {
6
- adapter: PostgresAdapter;
7
- collectionSlug?: string;
8
- db: TransactionPg;
9
- debug: boolean;
10
- fields: FlattenedField[];
11
- globalSlug?: string;
12
- isVersions: boolean;
13
- pathsToQuery: PathsToQuery;
14
- payload: Payload;
15
- req?: Partial<PayloadRequest>;
16
- tableName: string;
17
- };
18
- export declare const migrateRelationships: ({ adapter, collectionSlug, db, debug, fields, globalSlug, isVersions, pathsToQuery, payload, req, tableName, }: Args) => Promise<void>;
19
- export {};
20
- //# sourceMappingURL=migrateRelationships.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrateRelationships.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/migrateRelationships.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAItE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAgB,YAAY,EAAE,MAAM,YAAY,CAAA;AAI5D,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,aAAa,CAAA;IACjB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,eAAO,MAAM,oBAAoB,mHAY9B,IAAI,kBAwEN,CAAA"}
@@ -1,63 +0,0 @@
1
- import { sql } from 'drizzle-orm';
2
- import { fetchAndResave } from './fetchAndResave/index.js';
3
- export const migrateRelationships = async ({ adapter, collectionSlug, db, debug, fields, globalSlug, isVersions, pathsToQuery, payload, req, tableName })=>{
4
- if (pathsToQuery.size === 0) {
5
- return;
6
- }
7
- let offset = 0;
8
- let paginationResult;
9
- const where = Array.from(pathsToQuery).reduce((statement, path, i)=>{
10
- return statement += `
11
- "${tableName}${adapter.relationshipsSuffix}"."path" LIKE '${path}'${pathsToQuery.size !== i + 1 ? ' OR' : ''}
12
- `;
13
- }, '');
14
- while(typeof paginationResult === 'undefined' || paginationResult.rows.length > 0){
15
- const paginationStatement = `SELECT DISTINCT parent_id FROM ${tableName}${adapter.relationshipsSuffix} WHERE
16
- ${where} ORDER BY parent_id LIMIT 500 OFFSET ${offset * 500};
17
- `;
18
- paginationResult = await adapter.drizzle.execute(sql.raw(`${paginationStatement}`));
19
- if (paginationResult.rows.length === 0) {
20
- return;
21
- }
22
- offset += 1;
23
- const statement = `SELECT * FROM ${tableName}${adapter.relationshipsSuffix} WHERE
24
- (${where}) AND parent_id IN (${paginationResult.rows.map((row)=>row.parent_id).join(', ')});
25
- `;
26
- if (debug) {
27
- payload.logger.info('FINDING ROWS TO MIGRATE');
28
- payload.logger.info(statement);
29
- }
30
- const result = await adapter.drizzle.execute(sql.raw(`${statement}`));
31
- const docsToResave = {};
32
- result.rows.forEach((row)=>{
33
- const parentID = row.parent_id;
34
- if (typeof parentID === 'string' || typeof parentID === 'number') {
35
- if (!docsToResave[parentID]) {
36
- docsToResave[parentID] = [];
37
- }
38
- docsToResave[parentID].push(row);
39
- }
40
- });
41
- await fetchAndResave({
42
- adapter,
43
- collectionSlug,
44
- db,
45
- debug,
46
- docsToResave,
47
- fields,
48
- globalSlug,
49
- isVersions,
50
- payload,
51
- req: req,
52
- tableName
53
- });
54
- }
55
- const deleteStatement = `DELETE FROM ${tableName}${adapter.relationshipsSuffix} WHERE ${where}`;
56
- if (debug) {
57
- payload.logger.info('DELETING ROWS');
58
- payload.logger.info(deleteStatement);
59
- }
60
- await db.execute(sql.raw(`${deleteStatement}`));
61
- };
62
-
63
- //# sourceMappingURL=migrateRelationships.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/migrateRelationships.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { FlattenedField, Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { DocsToResave, PathsToQuery } from './types.js'\n\nimport { fetchAndResave } from './fetchAndResave/index.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n db: TransactionPg\n debug: boolean\n fields: FlattenedField[]\n globalSlug?: string\n isVersions: boolean\n pathsToQuery: PathsToQuery\n payload: Payload\n req?: Partial<PayloadRequest>\n tableName: string\n}\n\nexport const migrateRelationships = async ({\n adapter,\n collectionSlug,\n db,\n debug,\n fields,\n globalSlug,\n isVersions,\n pathsToQuery,\n payload,\n req,\n tableName,\n}: Args) => {\n if (pathsToQuery.size === 0) {\n return\n }\n\n let offset = 0\n\n let paginationResult\n\n const where = Array.from(pathsToQuery).reduce((statement, path, i) => {\n return (statement += `\n\"${tableName}${adapter.relationshipsSuffix}\".\"path\" LIKE '${path}'${pathsToQuery.size !== i + 1 ? ' OR' : ''}\n`)\n }, '')\n\n while (typeof paginationResult === 'undefined' || paginationResult.rows.length > 0) {\n const paginationStatement = `SELECT DISTINCT parent_id FROM ${tableName}${adapter.relationshipsSuffix} WHERE\n ${where} ORDER BY parent_id LIMIT 500 OFFSET ${offset * 500};\n `\n\n paginationResult = await adapter.drizzle.execute(sql.raw(`${paginationStatement}`))\n\n if (paginationResult.rows.length === 0) {\n return\n }\n\n offset += 1\n\n const statement = `SELECT * FROM ${tableName}${adapter.relationshipsSuffix} WHERE\n (${where}) AND parent_id IN (${paginationResult.rows.map((row) => row.parent_id).join(', ')});\n`\n if (debug) {\n payload.logger.info('FINDING ROWS TO MIGRATE')\n payload.logger.info(statement)\n }\n\n const result = await adapter.drizzle.execute(sql.raw(`${statement}`))\n\n const docsToResave: DocsToResave = {}\n\n result.rows.forEach((row) => {\n const parentID = row.parent_id\n\n if (typeof parentID === 'string' || typeof parentID === 'number') {\n if (!docsToResave[parentID]) {\n docsToResave[parentID] = []\n }\n docsToResave[parentID].push(row)\n }\n })\n\n await fetchAndResave({\n adapter,\n collectionSlug,\n db,\n debug,\n docsToResave,\n fields,\n globalSlug,\n isVersions,\n payload,\n req: req as unknown as PayloadRequest,\n tableName,\n })\n }\n\n const deleteStatement = `DELETE FROM ${tableName}${adapter.relationshipsSuffix} WHERE ${where}`\n if (debug) {\n payload.logger.info('DELETING ROWS')\n payload.logger.info(deleteStatement)\n }\n await db.execute(sql.raw(`${deleteStatement}`))\n}\n"],"names":["sql","fetchAndResave","migrateRelationships","adapter","collectionSlug","db","debug","fields","globalSlug","isVersions","pathsToQuery","payload","req","tableName","size","offset","paginationResult","where","Array","from","reduce","statement","path","i","relationshipsSuffix","rows","length","paginationStatement","drizzle","execute","raw","map","row","parent_id","join","logger","info","result","docsToResave","forEach","parentID","push","deleteStatement"],"mappings":"AAGA,SAASA,GAAG,QAAQ,cAAa;AAKjC,SAASC,cAAc,QAAQ,4BAA2B;AAgB1D,OAAO,MAAMC,uBAAuB,OAAO,EACzCC,OAAO,EACPC,cAAc,EACdC,EAAE,EACFC,KAAK,EACLC,MAAM,EACNC,UAAU,EACVC,UAAU,EACVC,YAAY,EACZC,OAAO,EACPC,GAAG,EACHC,SAAS,EACJ;IACL,IAAIH,aAAaI,IAAI,KAAK,GAAG;QAC3B;IACF;IAEA,IAAIC,SAAS;IAEb,IAAIC;IAEJ,MAAMC,QAAQC,MAAMC,IAAI,CAACT,cAAcU,MAAM,CAAC,CAACC,WAAWC,MAAMC;QAC9D,OAAQF,aAAa,CAAC;CACzB,EAAER,YAAYV,QAAQqB,mBAAmB,CAAC,eAAe,EAAEF,KAAK,CAAC,EAAEZ,aAAaI,IAAI,KAAKS,IAAI,IAAI,QAAQ,GAAG;AAC7G,CAAC;IACC,GAAG;IAEH,MAAO,OAAOP,qBAAqB,eAAeA,iBAAiBS,IAAI,CAACC,MAAM,GAAG,EAAG;QAClF,MAAMC,sBAAsB,CAAC,+BAA+B,EAAEd,YAAYV,QAAQqB,mBAAmB,CAAC;IACtG,EAAEP,MAAM,qCAAqC,EAAEF,SAAS,IAAI;EAC9D,CAAC;QAECC,mBAAmB,MAAMb,QAAQyB,OAAO,CAACC,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,GAAGH,qBAAqB;QAEjF,IAAIX,iBAAiBS,IAAI,CAACC,MAAM,KAAK,GAAG;YACtC;QACF;QAEAX,UAAU;QAEV,MAAMM,YAAY,CAAC,cAAc,EAAER,YAAYV,QAAQqB,mBAAmB,CAAC;KAC1E,EAAEP,MAAM,oBAAoB,EAAED,iBAAiBS,IAAI,CAACM,GAAG,CAAC,CAACC,MAAQA,IAAIC,SAAS,EAAEC,IAAI,CAAC,MAAM;AAChG,CAAC;QACG,IAAI5B,OAAO;YACTK,QAAQwB,MAAM,CAACC,IAAI,CAAC;YACpBzB,QAAQwB,MAAM,CAACC,IAAI,CAACf;QACtB;QAEA,MAAMgB,SAAS,MAAMlC,QAAQyB,OAAO,CAACC,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,GAAGT,WAAW;QAEnE,MAAMiB,eAA6B,CAAC;QAEpCD,OAAOZ,IAAI,CAACc,OAAO,CAAC,CAACP;YACnB,MAAMQ,WAAWR,IAAIC,SAAS;YAE9B,IAAI,OAAOO,aAAa,YAAY,OAAOA,aAAa,UAAU;gBAChE,IAAI,CAACF,YAAY,CAACE,SAAS,EAAE;oBAC3BF,YAAY,CAACE,SAAS,GAAG,EAAE;gBAC7B;gBACAF,YAAY,CAACE,SAAS,CAACC,IAAI,CAACT;YAC9B;QACF;QAEA,MAAM/B,eAAe;YACnBE;YACAC;YACAC;YACAC;YACAgC;YACA/B;YACAC;YACAC;YACAE;YACAC,KAAKA;YACLC;QACF;IACF;IAEA,MAAM6B,kBAAkB,CAAC,YAAY,EAAE7B,YAAYV,QAAQqB,mBAAmB,CAAC,OAAO,EAAEP,OAAO;IAC/F,IAAIX,OAAO;QACTK,QAAQwB,MAAM,CAACC,IAAI,CAAC;QACpBzB,QAAQwB,MAAM,CAACC,IAAI,CAACM;IACtB;IACA,MAAMrC,GAAGwB,OAAO,CAAC7B,IAAI8B,GAAG,CAAC,GAAGY,iBAAiB;AAC/C,EAAC"}
@@ -1,23 +0,0 @@
1
- import type { TransactionPg } from '@payloadcms/drizzle/types';
2
- import type { FlattenedField, Payload } from 'payload';
3
- import type { PostgresAdapter } from '../../types.js';
4
- import type { PathsToQuery } from './types.js';
5
- type Args = {
6
- adapter: PostgresAdapter;
7
- collectionSlug?: string;
8
- columnPrefix: string;
9
- db: TransactionPg;
10
- disableNotNull: boolean;
11
- fields: FlattenedField[];
12
- globalSlug?: string;
13
- isVersions: boolean;
14
- newTableName: string;
15
- parentTableName: string;
16
- path: string;
17
- pathsToQuery: PathsToQuery;
18
- payload: Payload;
19
- rootTableName: string;
20
- };
21
- export declare const traverseFields: (args: Args) => void;
22
- export {};
23
- //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAItD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,KAAK,IAAI,GAAG;IACV,OAAO,EAAE,eAAe,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,aAAa,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,cAAc,SAAU,IAAI,SAgExC,CAAA"}
@@ -1,60 +0,0 @@
1
- import toSnakeCase from 'to-snake-case';
2
- export const traverseFields = (args)=>{
3
- args.fields.forEach((field)=>{
4
- switch(field.type){
5
- case 'array':
6
- {
7
- const newTableName = args.adapter.tableNameMap.get(`${args.newTableName}_${toSnakeCase(field.name)}`);
8
- return traverseFields({
9
- ...args,
10
- columnPrefix: '',
11
- fields: field.flattenedFields,
12
- newTableName,
13
- parentTableName: newTableName,
14
- path: `${args.path ? `${args.path}.` : ''}${field.name}.%`
15
- });
16
- }
17
- case 'blocks':
18
- {
19
- return field.blocks.forEach((block)=>{
20
- const newTableName = args.adapter.tableNameMap.get(`${args.rootTableName}_blocks_${toSnakeCase(block.slug)}`);
21
- traverseFields({
22
- ...args,
23
- columnPrefix: '',
24
- fields: block.flattenedFields,
25
- newTableName,
26
- parentTableName: newTableName,
27
- path: `${args.path ? `${args.path}.` : ''}${field.name}.%`
28
- });
29
- });
30
- }
31
- case 'group':
32
- case 'tab':
33
- {
34
- let newTableName = `${args.newTableName}_${toSnakeCase(field.name)}`;
35
- if (field.localized && args.payload.config.localization) {
36
- newTableName += args.adapter.localesSuffix;
37
- }
38
- return traverseFields({
39
- ...args,
40
- columnPrefix: `${args.columnPrefix}${toSnakeCase(field.name)}_`,
41
- fields: field.flattenedFields,
42
- newTableName,
43
- path: `${args.path ? `${args.path}.` : ''}${field.name}`
44
- });
45
- }
46
- case 'relationship':
47
- case 'upload':
48
- {
49
- if (typeof field.relationTo === 'string') {
50
- if (field.type === 'upload' || !field.hasMany) {
51
- args.pathsToQuery.add(`${args.path ? `${args.path}.` : ''}${field.name}`);
52
- }
53
- }
54
- return null;
55
- }
56
- }
57
- });
58
- };
59
-
60
- //# sourceMappingURL=traverseFields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/traverseFields.ts"],"sourcesContent":["import type { TransactionPg } from '@payloadcms/drizzle/types'\nimport type { FlattenedField, Payload } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { PostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\ntype Args = {\n adapter: PostgresAdapter\n collectionSlug?: string\n columnPrefix: string\n db: TransactionPg\n disableNotNull: boolean\n fields: FlattenedField[]\n globalSlug?: string\n isVersions: boolean\n newTableName: string\n parentTableName: string\n path: string\n pathsToQuery: PathsToQuery\n payload: Payload\n rootTableName: string\n}\n\nexport const traverseFields = (args: Args) => {\n args.fields.forEach((field) => {\n switch (field.type) {\n case 'array': {\n const newTableName = args.adapter.tableNameMap.get(\n `${args.newTableName}_${toSnakeCase(field.name)}`,\n )\n\n return traverseFields({\n ...args,\n columnPrefix: '',\n fields: field.flattenedFields,\n newTableName,\n parentTableName: newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}.%`,\n })\n }\n\n case 'blocks': {\n return field.blocks.forEach((block) => {\n const newTableName = args.adapter.tableNameMap.get(\n `${args.rootTableName}_blocks_${toSnakeCase(block.slug)}`,\n )\n\n traverseFields({\n ...args,\n columnPrefix: '',\n fields: block.flattenedFields,\n newTableName,\n parentTableName: newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}.%`,\n })\n })\n }\n\n case 'group':\n case 'tab': {\n let newTableName = `${args.newTableName}_${toSnakeCase(field.name)}`\n\n if (field.localized && args.payload.config.localization) {\n newTableName += args.adapter.localesSuffix\n }\n\n return traverseFields({\n ...args,\n columnPrefix: `${args.columnPrefix}${toSnakeCase(field.name)}_`,\n fields: field.flattenedFields,\n newTableName,\n path: `${args.path ? `${args.path}.` : ''}${field.name}`,\n })\n }\n\n case 'relationship':\n case 'upload': {\n if (typeof field.relationTo === 'string') {\n if (field.type === 'upload' || !field.hasMany) {\n args.pathsToQuery.add(`${args.path ? `${args.path}.` : ''}${field.name}`)\n }\n }\n\n return null\n }\n }\n })\n}\n"],"names":["toSnakeCase","traverseFields","args","fields","forEach","field","type","newTableName","adapter","tableNameMap","get","name","columnPrefix","flattenedFields","parentTableName","path","blocks","block","rootTableName","slug","localized","payload","config","localization","localesSuffix","relationTo","hasMany","pathsToQuery","add"],"mappings":"AAGA,OAAOA,iBAAiB,gBAAe;AAsBvC,OAAO,MAAMC,iBAAiB,CAACC;IAC7BA,KAAKC,MAAM,CAACC,OAAO,CAAC,CAACC;QACnB,OAAQA,MAAMC,IAAI;YAChB,KAAK;gBAAS;oBACZ,MAAMC,eAAeL,KAAKM,OAAO,CAACC,YAAY,CAACC,GAAG,CAChD,GAAGR,KAAKK,YAAY,CAAC,CAAC,EAAEP,YAAYK,MAAMM,IAAI,GAAG;oBAGnD,OAAOV,eAAe;wBACpB,GAAGC,IAAI;wBACPU,cAAc;wBACdT,QAAQE,MAAMQ,eAAe;wBAC7BN;wBACAO,iBAAiBP;wBACjBQ,MAAM,GAAGb,KAAKa,IAAI,GAAG,GAAGb,KAAKa,IAAI,CAAC,CAAC,CAAC,GAAG,KAAKV,MAAMM,IAAI,CAAC,EAAE,CAAC;oBAC5D;gBACF;YAEA,KAAK;gBAAU;oBACb,OAAON,MAAMW,MAAM,CAACZ,OAAO,CAAC,CAACa;wBAC3B,MAAMV,eAAeL,KAAKM,OAAO,CAACC,YAAY,CAACC,GAAG,CAChD,GAAGR,KAAKgB,aAAa,CAAC,QAAQ,EAAElB,YAAYiB,MAAME,IAAI,GAAG;wBAG3DlB,eAAe;4BACb,GAAGC,IAAI;4BACPU,cAAc;4BACdT,QAAQc,MAAMJ,eAAe;4BAC7BN;4BACAO,iBAAiBP;4BACjBQ,MAAM,GAAGb,KAAKa,IAAI,GAAG,GAAGb,KAAKa,IAAI,CAAC,CAAC,CAAC,GAAG,KAAKV,MAAMM,IAAI,CAAC,EAAE,CAAC;wBAC5D;oBACF;gBACF;YAEA,KAAK;YACL,KAAK;gBAAO;oBACV,IAAIJ,eAAe,GAAGL,KAAKK,YAAY,CAAC,CAAC,EAAEP,YAAYK,MAAMM,IAAI,GAAG;oBAEpE,IAAIN,MAAMe,SAAS,IAAIlB,KAAKmB,OAAO,CAACC,MAAM,CAACC,YAAY,EAAE;wBACvDhB,gBAAgBL,KAAKM,OAAO,CAACgB,aAAa;oBAC5C;oBAEA,OAAOvB,eAAe;wBACpB,GAAGC,IAAI;wBACPU,cAAc,GAAGV,KAAKU,YAAY,GAAGZ,YAAYK,MAAMM,IAAI,EAAE,CAAC,CAAC;wBAC/DR,QAAQE,MAAMQ,eAAe;wBAC7BN;wBACAQ,MAAM,GAAGb,KAAKa,IAAI,GAAG,GAAGb,KAAKa,IAAI,CAAC,CAAC,CAAC,GAAG,KAAKV,MAAMM,IAAI,EAAE;oBAC1D;gBACF;YAEA,KAAK;YACL,KAAK;gBAAU;oBACb,IAAI,OAAON,MAAMoB,UAAU,KAAK,UAAU;wBACxC,IAAIpB,MAAMC,IAAI,KAAK,YAAY,CAACD,MAAMqB,OAAO,EAAE;4BAC7CxB,KAAKyB,YAAY,CAACC,GAAG,CAAC,GAAG1B,KAAKa,IAAI,GAAG,GAAGb,KAAKa,IAAI,CAAC,CAAC,CAAC,GAAG,KAAKV,MAAMM,IAAI,EAAE;wBAC1E;oBACF;oBAEA,OAAO;gBACT;QACF;IACF;AACF,EAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Set of all paths which should be moved
3
- * This will be built up into one WHERE query
4
- */
5
- export type PathsToQuery = Set<string>;
6
- export type DocsToResave = {
7
- [id: number | string]: Record<string, unknown>[];
8
- };
9
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/predefinedMigrations/v2-v3/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;CACjD,CAAA"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Set of all paths which should be moved
3
- * This will be built up into one WHERE query
4
- */ export { };
5
-
6
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/predefinedMigrations/v2-v3/types.ts"],"sourcesContent":["/**\n * Set of all paths which should be moved\n * This will be built up into one WHERE query\n */\nexport type PathsToQuery = Set<string>\n\nexport type DocsToResave = {\n [id: number | string]: Record<string, unknown>[]\n}\n"],"names":[],"mappings":"AAAA;;;CAGC,GAGD,WAEC"}