@payloadcms/drizzle 3.37.0-internal.f2e6c68 → 3.37.0
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.
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +17 -15
- package/dist/migrate.js.map +1 -1
- package/dist/postgres/countDistinct.d.ts.map +1 -1
- package/dist/postgres/countDistinct.js +2 -2
- package/dist/postgres/countDistinct.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
- package/package.json +4 -4
package/dist/migrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,YAAY,CAAA;AAM3D,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,YAAY,CAAA;AAM3D,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,SAAS,CAsE7C,CAAA"}
|
package/dist/migrate.js
CHANGED
|
@@ -27,23 +27,25 @@ export const migrate = async function migrate(args) {
|
|
|
27
27
|
limit: 0,
|
|
28
28
|
sort: '-name'
|
|
29
29
|
}));
|
|
30
|
-
if (
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
30
|
+
if (migrationsInDB.find((m)=>m.batch === -1)) {
|
|
31
|
+
const { confirm: runMigrations } = await prompts({
|
|
32
|
+
name: 'confirm',
|
|
33
|
+
type: 'confirm',
|
|
34
|
+
initial: false,
|
|
35
|
+
message: "It looks like you've run Payload in dev mode, meaning you've dynamically pushed changes to your database.\n\n" + "If you'd like to run migrations, data loss will occur. Would you like to proceed?"
|
|
36
|
+
}, {
|
|
37
|
+
onCancel: ()=>{
|
|
38
|
+
process.exit(0);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
if (!runMigrations) {
|
|
42
42
|
process.exit(0);
|
|
43
43
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
// ignore the dev migration so that the latest batch number increments correctly
|
|
45
|
+
migrationsInDB = migrationsInDB.filter((m)=>m.batch !== -1);
|
|
46
|
+
}
|
|
47
|
+
if (Number(migrationsInDB?.[0]?.batch) > 0) {
|
|
48
|
+
latestBatch = Number(migrationsInDB[0]?.batch);
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
const newBatch = latestBatch + 1;
|
package/dist/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/migrate.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport {\n commitTransaction,\n createLocalReq,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter, Migration } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\nexport const migrate: DrizzleAdapter['migrate'] = async function migrate(\n this: DrizzleAdapter,\n args,\n): Promise<void> {\n const { payload } = this\n const migrationFiles = args?.migrations || (await readMigrationFiles({ payload }))\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations to run.' })\n return\n }\n\n if ('createExtensions' in this && typeof this.createExtensions === 'function') {\n await this.createExtensions()\n }\n\n let latestBatch = 0\n let migrationsInDB = []\n\n const hasMigrationTable = await migrationTableExists(this)\n\n if (hasMigrationTable) {\n ;({ docs: migrationsInDB } = await payload.find({\n collection: 'payload-migrations',\n limit: 0,\n sort: '-name',\n }))\n
|
|
1
|
+
{"version":3,"sources":["../src/migrate.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport {\n commitTransaction,\n createLocalReq,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter, Migration } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\nexport const migrate: DrizzleAdapter['migrate'] = async function migrate(\n this: DrizzleAdapter,\n args,\n): Promise<void> {\n const { payload } = this\n const migrationFiles = args?.migrations || (await readMigrationFiles({ payload }))\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations to run.' })\n return\n }\n\n if ('createExtensions' in this && typeof this.createExtensions === 'function') {\n await this.createExtensions()\n }\n\n let latestBatch = 0\n let migrationsInDB = []\n\n const hasMigrationTable = await migrationTableExists(this)\n\n if (hasMigrationTable) {\n ;({ docs: migrationsInDB } = await payload.find({\n collection: 'payload-migrations',\n limit: 0,\n sort: '-name',\n }))\n\n if (migrationsInDB.find((m) => m.batch === -1)) {\n const { confirm: runMigrations } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message:\n \"It looks like you've run Payload in dev mode, meaning you've dynamically pushed changes to your database.\\n\\n\" +\n \"If you'd like to run migrations, data loss will occur. Would you like to proceed?\",\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!runMigrations) {\n process.exit(0)\n }\n // ignore the dev migration so that the latest batch number increments correctly\n migrationsInDB = migrationsInDB.filter((m) => m.batch !== -1)\n }\n\n if (Number(migrationsInDB?.[0]?.batch) > 0) {\n latestBatch = Number(migrationsInDB[0]?.batch)\n }\n }\n\n const newBatch = latestBatch + 1\n\n // Execute 'up' function for each migration sequentially\n for (const migration of migrationFiles) {\n const alreadyRan = migrationsInDB.find((existing) => existing.name === migration.name)\n\n // If already ran, skip\n if (alreadyRan) {\n continue\n }\n\n await runMigrationFile(payload, migration, newBatch)\n }\n}\n\nasync function runMigrationFile(payload: Payload, migration: Migration, batch: number) {\n const start = Date.now()\n const req = await createLocalReq({}, payload)\n\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n\n try {\n await initTransaction(req)\n const db = await getTransaction(payload.db as DrizzleAdapter, req)\n await migration.up({ db, payload, req })\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch,\n },\n req,\n })\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}`),\n })\n process.exit(1)\n }\n}\n"],"names":["commitTransaction","createLocalReq","initTransaction","killTransaction","readMigrationFiles","prompts","getTransaction","migrationTableExists","parseError","migrate","args","payload","migrationFiles","migrations","length","logger","info","msg","createExtensions","latestBatch","migrationsInDB","hasMigrationTable","docs","find","collection","limit","sort","m","batch","confirm","runMigrations","name","type","initial","message","onCancel","process","exit","filter","Number","newBatch","migration","alreadyRan","existing","runMigrationFile","start","Date","now","req","db","up","create","data","err","error"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/postgres/countDistinct.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AAEpE,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/postgres/countDistinct.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAuB,aAAa,EAAE,MAAM,YAAY,CAAA;AAEpE,eAAO,MAAM,aAAa,EAAE,aAqC3B,CAAA"}
|
|
@@ -5,7 +5,7 @@ export const countDistinct = async function countDistinct({ db, joins, tableName
|
|
|
5
5
|
const countResult = await db.select({
|
|
6
6
|
count: count()
|
|
7
7
|
}).from(this.tables[tableName]).where(where);
|
|
8
|
-
return Number(countResult[0]
|
|
8
|
+
return Number(countResult?.[0]?.count ?? 0);
|
|
9
9
|
}
|
|
10
10
|
let query = db.select({
|
|
11
11
|
count: sql`COUNT(1) OVER()`
|
|
@@ -18,7 +18,7 @@ export const countDistinct = async function countDistinct({ db, joins, tableName
|
|
|
18
18
|
// SELECT (COUNT DISTINCT id) has a very slow performance on large tables.
|
|
19
19
|
// Instead, COUNT (GROUP BY id) can be used which is still slower than COUNT(*) but acceptable.
|
|
20
20
|
const countResult = await query;
|
|
21
|
-
return Number(countResult[0]
|
|
21
|
+
return Number(countResult?.[0]?.count ?? 0);
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
//# sourceMappingURL=countDistinct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import type { PgTableWithColumns } from 'drizzle-orm/pg-core'\n\nimport { count, sql } from 'drizzle-orm'\n\nimport type { BasePostgresAdapter, CountDistinct } from './types.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BasePostgresAdapter,\n { db, joins, tableName, where },\n) {\n // When we don't have any joins - use a simple COUNT(*) query.\n if (joins.length === 0) {\n const countResult = await db\n .select({\n count: count(),\n })\n .from(this.tables[tableName])\n .where(where)\n return Number(countResult[0]
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/countDistinct.ts"],"sourcesContent":["import type { PgTableWithColumns } from 'drizzle-orm/pg-core'\n\nimport { count, sql } from 'drizzle-orm'\n\nimport type { BasePostgresAdapter, CountDistinct } from './types.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BasePostgresAdapter,\n { db, joins, tableName, where },\n) {\n // When we don't have any joins - use a simple COUNT(*) query.\n if (joins.length === 0) {\n const countResult = await db\n .select({\n count: count(),\n })\n .from(this.tables[tableName])\n .where(where)\n\n return Number(countResult?.[0]?.count ?? 0)\n }\n\n let query = db\n .select({\n count: sql`COUNT(1) OVER()`,\n })\n .from(this.tables[tableName])\n .where(where)\n .groupBy(this.tables[tableName].id)\n .limit(1)\n .$dynamic()\n\n joins.forEach(({ condition, table }) => {\n query = query.leftJoin(table as PgTableWithColumns<any>, condition)\n })\n\n // When we have any joins, we need to count each individual ID only once.\n // COUNT(*) doesn't work for this well in this case, as it also counts joined tables.\n // SELECT (COUNT DISTINCT id) has a very slow performance on large tables.\n // Instead, COUNT (GROUP BY id) can be used which is still slower than COUNT(*) but acceptable.\n const countResult = await query\n\n return Number(countResult?.[0]?.count ?? 0)\n}\n"],"names":["count","sql","countDistinct","db","joins","tableName","where","length","countResult","select","from","tables","Number","query","groupBy","id","limit","$dynamic","forEach","condition","table","leftJoin"],"mappings":"AAEA,SAASA,KAAK,EAAEC,GAAG,QAAQ,cAAa;AAIxC,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAE/B,8DAA8D;IAC9D,IAAIF,MAAMG,MAAM,KAAK,GAAG;QACtB,MAAMC,cAAc,MAAML,GACvBM,MAAM,CAAC;YACNT,OAAOA;QACT,GACCU,IAAI,CAAC,IAAI,CAACC,MAAM,CAACN,UAAU,EAC3BC,KAAK,CAACA;QAET,OAAOM,OAAOJ,aAAa,CAAC,EAAE,EAAER,SAAS;IAC3C;IAEA,IAAIa,QAAQV,GACTM,MAAM,CAAC;QACNT,OAAOC,GAAG,CAAC,eAAe,CAAC;IAC7B,GACCS,IAAI,CAAC,IAAI,CAACC,MAAM,CAACN,UAAU,EAC3BC,KAAK,CAACA,OACNQ,OAAO,CAAC,IAAI,CAACH,MAAM,CAACN,UAAU,CAACU,EAAE,EACjCC,KAAK,CAAC,GACNC,QAAQ;IAEXb,MAAMc,OAAO,CAAC,CAAC,EAAEC,SAAS,EAAEC,KAAK,EAAE;QACjCP,QAAQA,MAAMQ,QAAQ,CAACD,OAAkCD;IAC3D;IAEA,yEAAyE;IACzE,qFAAqF;IACrF,0EAA0E;IAC1E,+FAA+F;IAC/F,MAAMX,cAAc,MAAMK;IAE1B,OAAOD,OAAOJ,aAAa,CAAC,EAAE,EAAER,SAAS;AAC3C,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/postgres/predefinedMigrations/v2-v3/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAetD,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/postgres/predefinedMigrations/v2-v3/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAetD,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,kBA4PxE,CAAA"}
|
|
@@ -21,7 +21,6 @@ import { traverseFields } from './traverseFields.js';
|
|
|
21
21
|
* @param req
|
|
22
22
|
*/ export const migratePostgresV2toV3 = async ({ debug, payload, req })=>{
|
|
23
23
|
const adapter = payload.db;
|
|
24
|
-
const db = await getTransaction(adapter, req);
|
|
25
24
|
const dir = payload.db.migrationDir;
|
|
26
25
|
// get the drizzle migrateUpSQL from drizzle using the last schema
|
|
27
26
|
const { generateDrizzleJson, generateMigration, upSnapshot } = adapter.requireDrizzleKit();
|
|
@@ -50,6 +49,7 @@ import { traverseFields } from './traverseFields.js';
|
|
|
50
49
|
payload.logger.info('CREATING NEW RELATIONSHIP COLUMNS');
|
|
51
50
|
payload.logger.info(addColumnsStatement);
|
|
52
51
|
}
|
|
52
|
+
const db = await getTransaction(adapter, req);
|
|
53
53
|
await db.execute(sql.raw(addColumnsStatement));
|
|
54
54
|
for (const collection of payload.config.collections){
|
|
55
55
|
const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/postgres/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BasePostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { getTransaction } from '../../../utilities/getTransaction.js'\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\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 BasePostgresAdapter\n const db = await getTransaction(adapter, req)\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration, upSnapshot } = adapter.requireDrizzleKit()\n\n const toSnapshot: Record<string, unknown> = {}\n\n for (const key of Object.keys(adapter.schema).filter(\n (key) => !key.startsWith('payload_locked_documents'),\n )) {\n toSnapshot[key] = adapter.schema[key]\n }\n\n const drizzleJsonAfter = generateDrizzleJson(toSnapshot) as DrizzleSnapshotJSON\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 let drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\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","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","getTransaction","groupUpSQLStatements","migrateRelationships","traverseFields","migratePostgresV2toV3","debug","payload","req","adapter","db","dir","migrationDir","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","toSnapshot","key","Object","keys","schema","filter","startsWith","drizzleJsonAfter","previousSnapshot","readdirSync","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","version","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
|
+
{"version":3,"sources":["../../../../src/postgres/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BasePostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { getTransaction } from '../../../utilities/getTransaction.js'\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\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 BasePostgresAdapter\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration, upSnapshot } = adapter.requireDrizzleKit()\n\n const toSnapshot: Record<string, unknown> = {}\n\n for (const key of Object.keys(adapter.schema).filter(\n (key) => !key.startsWith('payload_locked_documents'),\n )) {\n toSnapshot[key] = adapter.schema[key]\n }\n\n const drizzleJsonAfter = generateDrizzleJson(toSnapshot) as DrizzleSnapshotJSON\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 let drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\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 const db = await getTransaction(adapter, req)\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","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","getTransaction","groupUpSQLStatements","migrateRelationships","traverseFields","migratePostgresV2toV3","debug","payload","req","adapter","db","dir","migrationDir","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","toSnapshot","key","Object","keys","schema","filter","startsWith","drizzleJsonAfter","previousSnapshot","readdirSync","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","version","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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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/drizzle",
|
|
3
|
-
"version": "3.37.0
|
|
3
|
+
"version": "3.37.0",
|
|
4
4
|
"description": "A library of shared functions used by different payload database adapters",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -52,11 +52,11 @@
|
|
|
52
52
|
"@libsql/client": "0.14.0",
|
|
53
53
|
"@types/pg": "8.10.2",
|
|
54
54
|
"@types/to-snake-case": "1.0.0",
|
|
55
|
-
"
|
|
56
|
-
"
|
|
55
|
+
"@payloadcms/eslint-config": "3.28.0",
|
|
56
|
+
"payload": "3.37.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"payload": "3.37.0
|
|
59
|
+
"payload": "3.37.0"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"build": "pnpm build:swc && pnpm build:types",
|