@payloadcms/drizzle 4.0.0-internal.af6aad0 → 4.0.0-internal.b8e7c89

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 (46) hide show
  1. package/dist/migrate.d.ts.map +1 -1
  2. package/dist/migrate.js +35 -13
  3. package/dist/migrate.js.map +1 -1
  4. package/dist/migrateDown.d.ts +2 -1
  5. package/dist/migrateDown.d.ts.map +1 -1
  6. package/dist/migrateDown.js +12 -2
  7. package/dist/migrateDown.js.map +1 -1
  8. package/dist/migrateFresh.d.ts +4 -2
  9. package/dist/migrateFresh.d.ts.map +1 -1
  10. package/dist/migrateFresh.js +21 -7
  11. package/dist/migrateFresh.js.map +1 -1
  12. package/dist/migrateRefresh.d.ts +2 -1
  13. package/dist/migrateRefresh.d.ts.map +1 -1
  14. package/dist/migrateRefresh.js +14 -3
  15. package/dist/migrateRefresh.js.map +1 -1
  16. package/dist/migrateReset.d.ts +2 -1
  17. package/dist/migrateReset.d.ts.map +1 -1
  18. package/dist/migrateReset.js +12 -2
  19. package/dist/migrateReset.js.map +1 -1
  20. package/dist/migrateStatus.d.ts +2 -1
  21. package/dist/migrateStatus.d.ts.map +1 -1
  22. package/dist/migrateStatus.js +11 -6
  23. package/dist/migrateStatus.js.map +1 -1
  24. package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
  25. package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
  26. package/dist/queries/getTableColumnFromPath.d.ts +12 -3
  27. package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
  28. package/dist/queries/getTableColumnFromPath.js +50 -27
  29. package/dist/queries/getTableColumnFromPath.js.map +1 -1
  30. package/dist/queries/parseParams.d.ts.map +1 -1
  31. package/dist/queries/parseParams.js +151 -3
  32. package/dist/queries/parseParams.js.map +1 -1
  33. package/dist/queries/resolveRelationshipPath.d.ts +36 -0
  34. package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
  35. package/dist/queries/resolveRelationshipPath.js +66 -0
  36. package/dist/queries/resolveRelationshipPath.js.map +1 -0
  37. package/dist/transform/write/traverseFields.d.ts.map +1 -1
  38. package/dist/transform/write/traverseFields.js +3 -0
  39. package/dist/transform/write/traverseFields.js.map +1 -1
  40. package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
  41. package/dist/utilities/buildCreateMigration.js +12 -8
  42. package/dist/utilities/buildCreateMigration.js.map +1 -1
  43. package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
  44. package/dist/utilities/createSchemaGenerator.js +3 -0
  45. package/dist/utilities/createSchemaGenerator.js.map +1 -1
  46. package/package.json +3 -3
@@ -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,CAsE7C,CAAA"}
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,CA8E7C,CAAA"}
package/dist/migrate.js CHANGED
@@ -5,6 +5,7 @@ import { migrationTableExists } from './utilities/migrationTableExists.js';
5
5
  import { parseError } from './utilities/parseError.js';
6
6
  export const migrate = async function migrate(args) {
7
7
  const { payload } = this;
8
+ const { forceAcceptWarning = false, shouldPrompt = true } = args ?? {};
8
9
  const migrationFiles = args?.migrations || await readMigrationFiles({
9
10
  payload
10
11
  });
@@ -12,7 +13,10 @@ export const migrate = async function migrate(args) {
12
13
  payload.logger.info({
13
14
  msg: 'No migrations to run.'
14
15
  });
15
- return;
16
+ return {
17
+ migrated: [],
18
+ rolledBack: []
19
+ };
16
20
  }
17
21
  if ('createExtensions' in this && typeof this.createExtensions === 'function') {
18
22
  await this.createExtensions();
@@ -28,18 +32,27 @@ export const migrate = async function migrate(args) {
28
32
  sort: '-name'
29
33
  }));
30
34
  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);
35
+ if (!forceAcceptWarning) {
36
+ if (!shouldPrompt) {
37
+ return {
38
+ cancelled: true,
39
+ migrated: [],
40
+ rolledBack: []
41
+ };
42
+ }
43
+ const { confirm: runMigrations } = await prompts({
44
+ name: 'confirm',
45
+ type: 'confirm',
46
+ initial: false,
47
+ 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?"
48
+ });
49
+ if (!runMigrations) {
50
+ return {
51
+ cancelled: true,
52
+ migrated: [],
53
+ rolledBack: []
54
+ };
39
55
  }
40
- });
41
- if (!runMigrations) {
42
- process.exit(0);
43
56
  }
44
57
  // ignore the dev migration so that the latest batch number increments correctly
45
58
  migrationsInDB = migrationsInDB.filter((m)=>m.batch !== -1);
@@ -49,6 +62,7 @@ export const migrate = async function migrate(args) {
49
62
  }
50
63
  }
51
64
  const newBatch = latestBatch + 1;
65
+ const migrated = [];
52
66
  // Execute 'up' function for each migration sequentially
53
67
  for (const migration of migrationFiles){
54
68
  const alreadyRan = migrationsInDB.find((existing)=>existing.name === migration.name);
@@ -57,7 +71,15 @@ export const migrate = async function migrate(args) {
57
71
  continue;
58
72
  }
59
73
  await runMigrationFile(payload, migration, newBatch);
74
+ migrated.push(migration.name);
60
75
  }
76
+ return {
77
+ ...migrated.length ? {
78
+ batch: newBatch
79
+ } : {},
80
+ migrated,
81
+ rolledBack: []
82
+ };
61
83
  };
62
84
  async function runMigrationFile(payload, migration, batch) {
63
85
  const start = Date.now();
@@ -91,7 +113,7 @@ async function runMigrationFile(payload, migration, batch) {
91
113
  err,
92
114
  msg: parseError(err, `Error running migration ${migration.name}`)
93
115
  });
94
- process.exit(1);
116
+ throw err;
95
117
  }
96
118
  }
97
119
 
@@ -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\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
+ {"version":3,"sources":["../src/migrate.ts"],"sourcesContent":["import type { MigrationResult, 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) {\n const { payload } = this\n const { forceAcceptWarning = false, shouldPrompt = true } = args ?? {}\n const migrationFiles = args?.migrations || (await readMigrationFiles({ payload }))\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations to run.' })\n return { migrated: [], rolledBack: [] }\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 if (!forceAcceptWarning) {\n if (!shouldPrompt) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n\n const { confirm: runMigrations } = await prompts({\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 if (!runMigrations) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\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 const migrated: string[] = []\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 migrated.push(migration.name)\n }\n\n return {\n ...(migrated.length ? { batch: newBatch } : {}),\n migrated,\n rolledBack: [],\n } satisfies MigrationResult\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 throw err\n }\n}\n"],"names":["commitTransaction","createLocalReq","initTransaction","killTransaction","readMigrationFiles","prompts","getTransaction","migrationTableExists","parseError","migrate","args","payload","forceAcceptWarning","shouldPrompt","migrationFiles","migrations","length","logger","info","msg","migrated","rolledBack","createExtensions","latestBatch","migrationsInDB","hasMigrationTable","docs","find","collection","limit","sort","m","batch","cancelled","confirm","runMigrations","name","type","initial","message","filter","Number","newBatch","migration","alreadyRan","existing","runMigrationFile","push","start","Date","now","req","db","up","create","data","err","error"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { MigrationResult } from 'payload';
1
2
  import type { DrizzleAdapter } from './types.js';
2
- export declare function migrateDown(this: DrizzleAdapter): Promise<void>;
3
+ export declare function migrateDown(this: DrizzleAdapter): Promise<MigrationResult>;
3
4
  //# sourceMappingURL=migrateDown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateDown.d.ts","sourceRoot":"","sources":["../src/migrateDown.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DrE"}
1
+ {"version":3,"file":"migrateDown.d.ts","sourceRoot":"","sources":["../src/migrateDown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAW9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA8DhF"}
@@ -14,12 +14,16 @@ export async function migrateDown() {
14
14
  payload.logger.info({
15
15
  msg: 'No migrations to rollback.'
16
16
  });
17
- return;
17
+ return {
18
+ migrated: [],
19
+ rolledBack: []
20
+ };
18
21
  }
19
22
  payload.logger.info({
20
23
  msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
21
24
  });
22
25
  const latestBatchMigrations = existingMigrations.filter(({ batch })=>batch === latestBatch);
26
+ const rolledBack = [];
23
27
  for (const migration of latestBatchMigrations){
24
28
  const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
25
29
  if (!migrationFile) {
@@ -50,15 +54,21 @@ export async function migrateDown() {
50
54
  });
51
55
  }
52
56
  await commitTransaction(req);
57
+ rolledBack.push(migrationFile.name);
53
58
  } catch (err) {
54
59
  await killTransaction(req);
55
60
  payload.logger.error({
56
61
  err,
57
62
  msg: parseError(err, `Error migrating down ${migrationFile.name}. Rolling back.`)
58
63
  });
59
- process.exit(1);
64
+ throw err;
60
65
  }
61
66
  }
67
+ return {
68
+ batch: latestBatch,
69
+ migrated: [],
70
+ rolledBack
71
+ };
62
72
  }
63
73
 
64
74
  //# sourceMappingURL=migrateDown.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateDown.ts"],"sourcesContent":["import {\n commitTransaction,\n createLocalReq,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\nexport async function migrateDown(this: DrizzleAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations, latestBatch } = await getMigrations({\n payload,\n })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to rollback.' })\n return\n }\n\n payload.logger.info({\n msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`,\n })\n\n const latestBatchMigrations = existingMigrations.filter(({ batch }) => batch === latestBatch)\n\n for (const migration of latestBatchMigrations) {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n const start = Date.now()\n const req = await createLocalReq({}, payload)\n\n try {\n payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` })\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migrationFile.down({ db, payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this, db)\n\n if (tableExists) {\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n }\n\n await commitTransaction(req)\n } catch (err: unknown) {\n await killTransaction(req)\n\n payload.logger.error({\n err,\n msg: parseError(err, `Error migrating down ${migrationFile.name}. Rolling back.`),\n })\n process.exit(1)\n }\n }\n}\n"],"names":["commitTransaction","createLocalReq","getMigrations","initTransaction","killTransaction","readMigrationFiles","getTransaction","migrationTableExists","parseError","migrateDown","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","latestBatchMigrations","filter","batch","migration","migrationFile","find","m","name","Error","start","Date","now","req","db","down","tableExists","delete","id","collection","err","error","process","exit"],"mappings":"AAAA,SACEA,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,UAAS;AAIhB,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMN,mBAAmB;QAAEK;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMX,cAAc;QAC9DQ;IACF;IAEA,IAAI,CAACE,oBAAoBE,QAAQ;QAC/BJ,QAAQK,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA6B;QACxD;IACF;IAEAP,QAAQK,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,mBAAmB,EAAEJ,YAAY,eAAe,EAAED,mBAAmBE,MAAM,CAAC,cAAc,CAAC;IACnG;IAEA,MAAMI,wBAAwBN,mBAAmBO,MAAM,CAAC,CAAC,EAAEC,KAAK,EAAE,GAAKA,UAAUP;IAEjF,KAAK,MAAMQ,aAAaH,sBAAuB;QAC7C,MAAMI,gBAAgBX,eAAeY,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAC1E,IAAI,CAACH,eAAe;YAClB,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEL,UAAUI,IAAI,CAAC,mBAAmB,CAAC;QAClE;QAEA,MAAME,QAAQC,KAAKC,GAAG;QACtB,MAAMC,MAAM,MAAM7B,eAAe,CAAC,GAAGS;QAErC,IAAI;YACFA,QAAQK,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEK,cAAcG,IAAI,EAAE;YAAC;YACnE,MAAMtB,gBAAgB2B;YACtB,MAAMC,KAAK,MAAMzB,eAAe,IAAI,EAAEwB;YACtC,MAAMR,cAAcU,IAAI,CAAC;gBAAED;gBAAIrB;gBAASoB;YAAI;YAC5CpB,QAAQK,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,gBAAgB,EAAEK,cAAcG,IAAI,CAAC,EAAE,EAAEG,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YACxE;YAEA,MAAMM,cAAc,MAAM1B,qBAAqB,IAAI,EAAEwB;YAErD,IAAIE,aAAa;gBACf,MAAMvB,QAAQwB,MAAM,CAAC;oBACnBC,IAAId,UAAUc,EAAE;oBAChBC,YAAY;oBACZN;gBACF;YACF;YAEA,MAAM9B,kBAAkB8B;QAC1B,EAAE,OAAOO,KAAc;YACrB,MAAMjC,gBAAgB0B;YAEtBpB,QAAQK,MAAM,CAACuB,KAAK,CAAC;gBACnBD;gBACApB,KAAKT,WAAW6B,KAAK,CAAC,qBAAqB,EAAEf,cAAcG,IAAI,CAAC,eAAe,CAAC;YAClF;YACAc,QAAQC,IAAI,CAAC;QACf;IACF;AACF"}
1
+ {"version":3,"sources":["../src/migrateDown.ts"],"sourcesContent":["import type { MigrationResult } from 'payload'\n\nimport {\n commitTransaction,\n createLocalReq,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\nexport async function migrateDown(this: DrizzleAdapter): Promise<MigrationResult> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations, latestBatch } = await getMigrations({\n payload,\n })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to rollback.' })\n return { migrated: [], rolledBack: [] }\n }\n\n payload.logger.info({\n msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`,\n })\n\n const latestBatchMigrations = existingMigrations.filter(({ batch }) => batch === latestBatch)\n const rolledBack: string[] = []\n\n for (const migration of latestBatchMigrations) {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n const start = Date.now()\n const req = await createLocalReq({}, payload)\n\n try {\n payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` })\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migrationFile.down({ db, payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this, db)\n\n if (tableExists) {\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n }\n\n await commitTransaction(req)\n rolledBack.push(migrationFile.name)\n } catch (err: unknown) {\n await killTransaction(req)\n\n payload.logger.error({\n err,\n msg: parseError(err, `Error migrating down ${migrationFile.name}. Rolling back.`),\n })\n throw err\n }\n }\n\n return { batch: latestBatch, migrated: [], rolledBack }\n}\n"],"names":["commitTransaction","createLocalReq","getMigrations","initTransaction","killTransaction","readMigrationFiles","getTransaction","migrationTableExists","parseError","migrateDown","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","migrated","rolledBack","latestBatchMigrations","filter","batch","migration","migrationFile","find","m","name","Error","start","Date","now","req","db","down","tableExists","delete","id","collection","push","err","error"],"mappings":"AAEA,SACEA,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,UAAS;AAIhB,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMN,mBAAmB;QAAEK;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAEC,WAAW,EAAE,GAAG,MAAMX,cAAc;QAC9DQ;IACF;IAEA,IAAI,CAACE,oBAAoBE,QAAQ;QAC/BJ,QAAQK,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA6B;QACxD,OAAO;YAAEC,UAAU,EAAE;YAAEC,YAAY,EAAE;QAAC;IACxC;IAEAT,QAAQK,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,mBAAmB,EAAEJ,YAAY,eAAe,EAAED,mBAAmBE,MAAM,CAAC,cAAc,CAAC;IACnG;IAEA,MAAMM,wBAAwBR,mBAAmBS,MAAM,CAAC,CAAC,EAAEC,KAAK,EAAE,GAAKA,UAAUT;IACjF,MAAMM,aAAuB,EAAE;IAE/B,KAAK,MAAMI,aAAaH,sBAAuB;QAC7C,MAAMI,gBAAgBb,eAAec,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAC1E,IAAI,CAACH,eAAe;YAClB,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEL,UAAUI,IAAI,CAAC,mBAAmB,CAAC;QAClE;QAEA,MAAME,QAAQC,KAAKC,GAAG;QACtB,MAAMC,MAAM,MAAM/B,eAAe,CAAC,GAAGS;QAErC,IAAI;YACFA,QAAQK,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEO,cAAcG,IAAI,EAAE;YAAC;YACnE,MAAMxB,gBAAgB6B;YACtB,MAAMC,KAAK,MAAM3B,eAAe,IAAI,EAAE0B;YACtC,MAAMR,cAAcU,IAAI,CAAC;gBAAED;gBAAIvB;gBAASsB;YAAI;YAC5CtB,QAAQK,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,gBAAgB,EAAEO,cAAcG,IAAI,CAAC,EAAE,EAAEG,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YACxE;YAEA,MAAMM,cAAc,MAAM5B,qBAAqB,IAAI,EAAE0B;YAErD,IAAIE,aAAa;gBACf,MAAMzB,QAAQ0B,MAAM,CAAC;oBACnBC,IAAId,UAAUc,EAAE;oBAChBC,YAAY;oBACZN;gBACF;YACF;YAEA,MAAMhC,kBAAkBgC;YACxBb,WAAWoB,IAAI,CAACf,cAAcG,IAAI;QACpC,EAAE,OAAOa,KAAc;YACrB,MAAMpC,gBAAgB4B;YAEtBtB,QAAQK,MAAM,CAAC0B,KAAK,CAAC;gBACnBD;gBACAvB,KAAKT,WAAWgC,KAAK,CAAC,qBAAqB,EAAEhB,cAAcG,IAAI,CAAC,eAAe,CAAC;YAClF;YACA,MAAMa;QACR;IACF;IAEA,OAAO;QAAElB,OAAOT;QAAaK,UAAU,EAAE;QAAEC;IAAW;AACxD"}
@@ -1,8 +1,10 @@
1
+ import type { MigrationResult } from 'payload';
1
2
  import type { DrizzleAdapter } from './types.js';
2
3
  /**
3
4
  * Drop the current database and run all migrate up functions
4
5
  */
5
- export declare function migrateFresh(this: DrizzleAdapter, { forceAcceptWarning }: {
6
+ export declare function migrateFresh(this: DrizzleAdapter, { forceAcceptWarning, shouldPrompt }: {
6
7
  forceAcceptWarning?: boolean;
7
- }): Promise<void>;
8
+ shouldPrompt?: boolean;
9
+ }): Promise<MigrationResult>;
8
10
  //# sourceMappingURL=migrateFresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,EACpB,EAAE,kBAA0B,EAAE;;CAAA,GAC7B,OAAO,CAAC,IAAI,CAAC,CAoEf"}
1
+ {"version":3,"file":"migrateFresh.d.ts","sourceRoot":"","sources":["../src/migrateFresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAW9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,EACpB,EAAE,kBAA0B,EAAE,YAAmB,EAAE;;;CAAA,GAClD,OAAO,CAAC,eAAe,CAAC,CAqE1B"}
@@ -4,21 +4,28 @@ import { getTransaction } from './utilities/getTransaction.js';
4
4
  import { parseError } from './utilities/parseError.js';
5
5
  /**
6
6
  * Drop the current database and run all migrate up functions
7
- */ export async function migrateFresh({ forceAcceptWarning = false }) {
7
+ */ export async function migrateFresh({ forceAcceptWarning = false, shouldPrompt = true }) {
8
8
  const { payload } = this;
9
9
  if (forceAcceptWarning === false) {
10
+ if (!shouldPrompt) {
11
+ return {
12
+ cancelled: true,
13
+ migrated: [],
14
+ rolledBack: []
15
+ };
16
+ }
10
17
  const { confirm: acceptWarning } = await prompts({
11
18
  name: 'confirm',
12
19
  type: 'confirm',
13
20
  initial: false,
14
21
  message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`
15
- }, {
16
- onCancel: ()=>{
17
- process.exit(0);
18
- }
19
22
  });
20
23
  if (!acceptWarning) {
21
- process.exit(0);
24
+ return {
25
+ cancelled: true,
26
+ migrated: [],
27
+ rolledBack: []
28
+ };
22
29
  }
23
30
  }
24
31
  payload.logger.info({
@@ -34,6 +41,7 @@ import { parseError } from './utilities/parseError.js';
34
41
  msg: `Found ${migrationFiles.length} migration files.`
35
42
  });
36
43
  const req = await createLocalReq({}, payload);
44
+ const migrated = [];
37
45
  if ('createExtensions' in this && typeof this.createExtensions === 'function') {
38
46
  await this.createExtensions();
39
47
  }
@@ -60,6 +68,7 @@ import { parseError } from './utilities/parseError.js';
60
68
  req
61
69
  });
62
70
  await commitTransaction(req);
71
+ migrated.push(migration.name);
63
72
  payload.logger.info({
64
73
  msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
65
74
  });
@@ -69,9 +78,14 @@ import { parseError } from './utilities/parseError.js';
69
78
  err,
70
79
  msg: parseError(err, `Error running migration ${migration.name}. Rolling back`)
71
80
  });
72
- process.exit(1);
81
+ throw err;
73
82
  }
74
83
  }
84
+ return {
85
+ batch: 1,
86
+ migrated,
87
+ rolledBack: []
88
+ };
75
89
  }
76
90
 
77
91
  //# sourceMappingURL=migrateFresh.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import {\n commitTransaction,\n createLocalReq,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { parseError } from './utilities/parseError.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: DrizzleAdapter,\n { forceAcceptWarning = false },\n): Promise<void> {\n const { payload } = this\n\n if (forceAcceptWarning === false) {\n const { confirm: acceptWarning } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!acceptWarning) {\n process.exit(0)\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.dropDatabase({ adapter: this })\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = await createLocalReq({}, payload)\n\n if ('createExtensions' in this && typeof this.createExtensions === 'function') {\n await this.createExtensions()\n }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migration.up({ db, payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n req,\n })\n await commitTransaction(req)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back`),\n })\n process.exit(1)\n }\n }\n}\n"],"names":["commitTransaction","createLocalReq","initTransaction","killTransaction","readMigrationFiles","prompts","getTransaction","parseError","migrateFresh","forceAcceptWarning","payload","confirm","acceptWarning","name","type","initial","message","onCancel","process","exit","logger","info","msg","dropDatabase","adapter","migrationFiles","debug","length","req","createExtensions","migration","start","Date","now","db","up","create","collection","data","batch","err","error"],"mappings":"AAAA,SACEA,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,UAAS;AAChB,OAAOC,aAAa,UAAS;AAI7B,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,UAAU,QAAQ,4BAA2B;AAEtD;;CAEC,GACD,OAAO,eAAeC,aAEpB,EAAEC,qBAAqB,KAAK,EAAE;IAE9B,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAID,uBAAuB,OAAO;QAChC,MAAM,EAAEE,SAASC,aAAa,EAAE,GAAG,MAAMP,QACvC;YACEQ,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G,GACA;YACEC,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,IAAI,CAACP,eAAe;YAClBM,QAAQC,IAAI,CAAC;QACf;IACF;IAEAT,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,YAAY,CAAC;QAAEC,SAAS,IAAI;IAAC;IAExC,MAAMC,iBAAiB,MAAMrB,mBAAmB;QAAEM;IAAQ;IAC1DA,QAAQU,MAAM,CAACM,KAAK,CAAC;QACnBJ,KAAK,CAAC,MAAM,EAAEG,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM,MAAM3B,eAAe,CAAC,GAAGS;IAErC,IAAI,sBAAsB,IAAI,IAAI,OAAO,IAAI,CAACmB,gBAAgB,KAAK,YAAY;QAC7E,MAAM,IAAI,CAACA,gBAAgB;IAC7B;IAEA,qBAAqB;IACrB,KAAK,MAAMC,aAAaL,eAAgB;QACtCf,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEQ,UAAUjB,IAAI,EAAE;QAAC;QAC1D,IAAI;YACF,MAAMkB,QAAQC,KAAKC,GAAG;YACtB,MAAM/B,gBAAgB0B;YACtB,MAAMM,KAAK,MAAM5B,eAAe,IAAI,EAAEsB;YACtC,MAAME,UAAUK,EAAE,CAAC;gBAAED;gBAAIxB;gBAASkB;YAAI;YACtC,MAAMlB,QAAQ0B,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJzB,MAAMiB,UAAUjB,IAAI;oBACpB0B,OAAO;gBACT;gBACAX;YACF;YACA,MAAM5B,kBAAkB4B;YAExBlB,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEQ,UAAUjB,IAAI,CAAC,EAAE,EAAEmB,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOS,KAAc;YACrB,MAAMrC,gBAAgByB;YACtBlB,QAAQU,MAAM,CAACqB,KAAK,CAAC;gBACnBD;gBACAlB,KAAKf,WAAWiC,KAAK,CAAC,wBAAwB,EAAEV,UAAUjB,IAAI,CAAC,cAAc,CAAC;YAChF;YACAK,QAAQC,IAAI,CAAC;QACf;IACF;AACF"}
1
+ {"version":3,"sources":["../src/migrateFresh.ts"],"sourcesContent":["import type { MigrationResult } 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 } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { parseError } from './utilities/parseError.js'\n\n/**\n * Drop the current database and run all migrate up functions\n */\nexport async function migrateFresh(\n this: DrizzleAdapter,\n { forceAcceptWarning = false, shouldPrompt = true },\n): Promise<MigrationResult> {\n const { payload } = this\n\n if (forceAcceptWarning === false) {\n if (!shouldPrompt) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n\n const { confirm: acceptWarning } = await prompts({\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: `WARNING: This will drop your database and run all migrations. Are you sure you want to proceed?`,\n })\n\n if (!acceptWarning) {\n return { cancelled: true, migrated: [], rolledBack: [] }\n }\n }\n\n payload.logger.info({\n msg: `Dropping database.`,\n })\n\n await this.dropDatabase({ adapter: this })\n\n const migrationFiles = await readMigrationFiles({ payload })\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n const req = await createLocalReq({}, payload)\n const migrated: string[] = []\n\n if ('createExtensions' in this && typeof this.createExtensions === 'function') {\n await this.createExtensions()\n }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migration.up({ db, payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n batch: 1,\n },\n req,\n })\n await commitTransaction(req)\n migrated.push(migration.name)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back`),\n })\n throw err\n }\n }\n\n return { batch: 1, migrated, rolledBack: [] }\n}\n"],"names":["commitTransaction","createLocalReq","initTransaction","killTransaction","readMigrationFiles","prompts","getTransaction","parseError","migrateFresh","forceAcceptWarning","shouldPrompt","payload","cancelled","migrated","rolledBack","confirm","acceptWarning","name","type","initial","message","logger","info","msg","dropDatabase","adapter","migrationFiles","debug","length","req","createExtensions","migration","start","Date","now","db","up","create","collection","data","batch","push","err","error"],"mappings":"AAEA,SACEA,iBAAiB,EACjBC,cAAc,EACdC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,UAAS;AAChB,OAAOC,aAAa,UAAS;AAI7B,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,UAAU,QAAQ,4BAA2B;AAEtD;;CAEC,GACD,OAAO,eAAeC,aAEpB,EAAEC,qBAAqB,KAAK,EAAEC,eAAe,IAAI,EAAE;IAEnD,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IAExB,IAAIF,uBAAuB,OAAO;QAChC,IAAI,CAACC,cAAc;YACjB,OAAO;gBAAEE,WAAW;gBAAMC,UAAU,EAAE;gBAAEC,YAAY,EAAE;YAAC;QACzD;QAEA,MAAM,EAAEC,SAASC,aAAa,EAAE,GAAG,MAAMX,QAAQ;YAC/CY,MAAM;YACNC,MAAM;YACNC,SAAS;YACTC,SAAS,CAAC,+FAA+F,CAAC;QAC5G;QAEA,IAAI,CAACJ,eAAe;YAClB,OAAO;gBAAEJ,WAAW;gBAAMC,UAAU,EAAE;gBAAEC,YAAY,EAAE;YAAC;QACzD;IACF;IAEAH,QAAQU,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,kBAAkB,CAAC;IAC3B;IAEA,MAAM,IAAI,CAACC,YAAY,CAAC;QAAEC,SAAS,IAAI;IAAC;IAExC,MAAMC,iBAAiB,MAAMtB,mBAAmB;QAAEO;IAAQ;IAC1DA,QAAQU,MAAM,CAACM,KAAK,CAAC;QACnBJ,KAAK,CAAC,MAAM,EAAEG,eAAeE,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,MAAMC,MAAM,MAAM5B,eAAe,CAAC,GAAGU;IACrC,MAAME,WAAqB,EAAE;IAE7B,IAAI,sBAAsB,IAAI,IAAI,OAAO,IAAI,CAACiB,gBAAgB,KAAK,YAAY;QAC7E,MAAM,IAAI,CAACA,gBAAgB;IAC7B;IAEA,qBAAqB;IACrB,KAAK,MAAMC,aAAaL,eAAgB;QACtCf,QAAQU,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,WAAW,EAAEQ,UAAUd,IAAI,EAAE;QAAC;QAC1D,IAAI;YACF,MAAMe,QAAQC,KAAKC,GAAG;YACtB,MAAMhC,gBAAgB2B;YACtB,MAAMM,KAAK,MAAM7B,eAAe,IAAI,EAAEuB;YACtC,MAAME,UAAUK,EAAE,CAAC;gBAAED;gBAAIxB;gBAASkB;YAAI;YACtC,MAAMlB,QAAQ0B,MAAM,CAAC;gBACnBC,YAAY;gBACZC,MAAM;oBACJtB,MAAMc,UAAUd,IAAI;oBACpBuB,OAAO;gBACT;gBACAX;YACF;YACA,MAAM7B,kBAAkB6B;YACxBhB,SAAS4B,IAAI,CAACV,UAAUd,IAAI;YAE5BN,QAAQU,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,WAAW,EAAEQ,UAAUd,IAAI,CAAC,EAAE,EAAEgB,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YAAC;QACtF,EAAE,OAAOU,KAAc;YACrB,MAAMvC,gBAAgB0B;YACtBlB,QAAQU,MAAM,CAACsB,KAAK,CAAC;gBACnBD;gBACAnB,KAAKhB,WAAWmC,KAAK,CAAC,wBAAwB,EAAEX,UAAUd,IAAI,CAAC,cAAc,CAAC;YAChF;YACA,MAAMyB;QACR;IACF;IAEA,OAAO;QAAEF,OAAO;QAAG3B;QAAUC,YAAY,EAAE;IAAC;AAC9C"}
@@ -1,6 +1,7 @@
1
+ import type { MigrationResult } from 'payload';
1
2
  import type { DrizzleAdapter } from './types.js';
2
3
  /**
3
4
  * Run all migration down functions before running up
4
5
  */
5
- export declare function migrateRefresh(this: DrizzleAdapter): Promise<void>;
6
+ export declare function migrateRefresh(this: DrizzleAdapter): Promise<MigrationResult>;
6
7
  //# sourceMappingURL=migrateRefresh.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateRefresh.d.ts","sourceRoot":"","sources":["../src/migrateRefresh.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,iBAwFxD"}
1
+ {"version":3,"file":"migrateRefresh.d.ts","sourceRoot":"","sources":["../src/migrateRefresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAW9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA8FnF"}
@@ -16,12 +16,17 @@ import { parseError } from './utilities/parseError.js';
16
16
  payload.logger.info({
17
17
  msg: 'No migrations to rollback.'
18
18
  });
19
- return;
19
+ return {
20
+ migrated: [],
21
+ rolledBack: []
22
+ };
20
23
  }
21
24
  payload.logger.info({
22
25
  msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`
23
26
  });
24
27
  const req = await createLocalReq({}, payload);
28
+ const migrated = [];
29
+ const rolledBack = [];
25
30
  // Reverse order of migrations to rollback
26
31
  existingMigrations.reverse();
27
32
  for (const migration of existingMigrations){
@@ -57,13 +62,14 @@ import { parseError } from './utilities/parseError.js';
57
62
  });
58
63
  }
59
64
  await commitTransaction(req);
65
+ rolledBack.push(migration.name);
60
66
  } catch (err) {
61
67
  await killTransaction(req);
62
68
  payload.logger.error({
63
69
  err,
64
70
  msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`)
65
71
  });
66
- process.exit(1);
72
+ throw err;
67
73
  }
68
74
  }
69
75
  // Run all migrate up
@@ -87,6 +93,7 @@ import { parseError } from './utilities/parseError.js';
87
93
  req
88
94
  });
89
95
  await commitTransaction(req);
96
+ migrated.push(migration.name);
90
97
  payload.logger.info({
91
98
  msg: `Migrated: ${migration.name} (${Date.now() - start}ms)`
92
99
  });
@@ -96,9 +103,13 @@ import { parseError } from './utilities/parseError.js';
96
103
  err,
97
104
  msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`)
98
105
  });
99
- process.exit(1);
106
+ throw err;
100
107
  }
101
108
  }
109
+ return {
110
+ migrated,
111
+ rolledBack
112
+ };
102
113
  }
103
114
 
104
115
  //# sourceMappingURL=migrateRefresh.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateRefresh.ts"],"sourcesContent":["import {\n commitTransaction,\n createLocalReq,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\n/**\n * Run all migration down functions before running up\n */\nexport async function migrateRefresh(this: DrizzleAdapter) {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations, latestBatch } = await getMigrations({\n payload,\n })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to rollback.' })\n return\n }\n\n payload.logger.info({\n msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`,\n })\n\n const req = await createLocalReq({}, payload)\n\n // Reverse order of migrations to rollback\n existingMigrations.reverse()\n\n for (const migration of existingMigrations) {\n try {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n payload.logger.info({ msg: `Migrating down: ${migration.name}` })\n const start = Date.now()\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migrationFile.down({ db, payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this, db)\n if (tableExists) {\n await payload.delete({\n collection: 'payload-migrations',\n req,\n where: {\n name: {\n equals: migration.name,\n },\n },\n })\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}. Rolling back.`),\n })\n process.exit(1)\n }\n }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n executed: true,\n },\n req,\n })\n await commitTransaction(req)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`),\n })\n process.exit(1)\n }\n }\n}\n"],"names":["commitTransaction","createLocalReq","getMigrations","initTransaction","killTransaction","readMigrationFiles","getTransaction","migrationTableExists","parseError","migrateRefresh","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","req","reverse","migration","migrationFile","find","m","name","Error","start","Date","now","db","down","tableExists","delete","collection","where","equals","err","error","process","exit","up","create","data","executed"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/migrateRefresh.ts"],"sourcesContent":["import type { MigrationResult } from 'payload'\n\nimport {\n commitTransaction,\n createLocalReq,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\nimport { parseError } from './utilities/parseError.js'\n\n/**\n * Run all migration down functions before running up\n */\nexport async function migrateRefresh(this: DrizzleAdapter): Promise<MigrationResult> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations, latestBatch } = await getMigrations({\n payload,\n })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to rollback.' })\n return { migrated: [], rolledBack: [] }\n }\n\n payload.logger.info({\n msg: `Rolling back batch ${latestBatch} consisting of ${existingMigrations.length} migration(s).`,\n })\n\n const req = await createLocalReq({}, payload)\n const migrated: string[] = []\n const rolledBack: string[] = []\n\n // Reverse order of migrations to rollback\n existingMigrations.reverse()\n\n for (const migration of existingMigrations) {\n try {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n payload.logger.info({ msg: `Migrating down: ${migration.name}` })\n const start = Date.now()\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migrationFile.down({ db, payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migration.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this, db)\n if (tableExists) {\n await payload.delete({\n collection: 'payload-migrations',\n req,\n where: {\n name: {\n equals: migration.name,\n },\n },\n })\n }\n await commitTransaction(req)\n rolledBack.push(migration.name)\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`),\n })\n throw err\n }\n }\n\n // Run all migrate up\n for (const migration of migrationFiles) {\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n try {\n const start = Date.now()\n await initTransaction(req)\n await migration.up({ payload, req })\n await payload.create({\n collection: 'payload-migrations',\n data: {\n name: migration.name,\n executed: true,\n },\n req,\n })\n await commitTransaction(req)\n migrated.push(migration.name)\n\n payload.logger.info({ msg: `Migrated: ${migration.name} (${Date.now() - start}ms)` })\n } catch (err: unknown) {\n await killTransaction(req)\n payload.logger.error({\n err,\n msg: parseError(err, `Error running migration ${migration.name}. Rolling back.`),\n })\n throw err\n }\n }\n\n return { migrated, rolledBack }\n}\n"],"names":["commitTransaction","createLocalReq","getMigrations","initTransaction","killTransaction","readMigrationFiles","getTransaction","migrationTableExists","parseError","migrateRefresh","payload","migrationFiles","existingMigrations","latestBatch","length","logger","info","msg","migrated","rolledBack","req","reverse","migration","migrationFile","find","m","name","Error","start","Date","now","db","down","tableExists","delete","collection","where","equals","push","err","error","up","create","data","executed"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import type { MigrationResult } from 'payload';
1
2
  import type { DrizzleAdapter } from './types.js';
2
3
  /**
3
4
  * Run all migrate down functions
4
5
  */
5
- export declare function migrateReset(this: DrizzleAdapter): Promise<void>;
6
+ export declare function migrateReset(this: DrizzleAdapter): Promise<MigrationResult>;
6
7
  //# sourceMappingURL=migrateReset.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateReset.d.ts","sourceRoot":"","sources":["../src/migrateReset.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EtE"}
1
+ {"version":3,"file":"migrateReset.d.ts","sourceRoot":"","sources":["../src/migrateReset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAW9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAKhD;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAgFjF"}
@@ -15,10 +15,14 @@ import { migrationTableExists } from './utilities/migrationTableExists.js';
15
15
  payload.logger.info({
16
16
  msg: 'No migrations to reset.'
17
17
  });
18
- return;
18
+ return {
19
+ migrated: [],
20
+ rolledBack: []
21
+ };
19
22
  }
20
23
  const req = await createLocalReq({}, payload);
21
24
  existingMigrations.reverse();
25
+ const rolledBack = [];
22
26
  // Rollback all migrations in order
23
27
  for (const migration of existingMigrations){
24
28
  const migrationFile = migrationFiles.find((m)=>m.name === migration.name);
@@ -49,6 +53,7 @@ import { migrationTableExists } from './utilities/migrationTableExists.js';
49
53
  });
50
54
  }
51
55
  await commitTransaction(req);
56
+ rolledBack.push(migrationFile.name);
52
57
  } catch (err) {
53
58
  let msg = `Error running migration ${migrationFile.name}.`;
54
59
  if (err instanceof Error) {
@@ -59,7 +64,7 @@ import { migrationTableExists } from './utilities/migrationTableExists.js';
59
64
  err,
60
65
  msg
61
66
  });
62
- process.exit(1);
67
+ throw err;
63
68
  }
64
69
  }
65
70
  // Delete dev migration
@@ -79,8 +84,13 @@ import { migrationTableExists } from './utilities/migrationTableExists.js';
79
84
  err,
80
85
  msg: 'Error deleting dev migration'
81
86
  });
87
+ throw err;
82
88
  }
83
89
  }
90
+ return {
91
+ migrated: [],
92
+ rolledBack
93
+ };
84
94
  }
85
95
 
86
96
  //# sourceMappingURL=migrateReset.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateReset.ts"],"sourcesContent":["import {\n commitTransaction,\n createLocalReq,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\n\n/**\n * Run all migrate down functions\n */\nexport async function migrateReset(this: DrizzleAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to reset.' })\n return\n }\n\n const req = await createLocalReq({}, payload)\n\n existingMigrations.reverse()\n\n // Rollback all migrations in order\n for (const migration of existingMigrations) {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n try {\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n const start = Date.now()\n payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` })\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migrationFile.down({ db, payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this, db)\n if (tableExists) {\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n }\n\n await commitTransaction(req)\n } catch (err: unknown) {\n let msg = `Error running migration ${migrationFile.name}.`\n\n if (err instanceof Error) {\n msg += ` ${err.message}`\n }\n\n await killTransaction(req)\n payload.logger.error({\n err,\n msg,\n })\n process.exit(1)\n }\n }\n\n // Delete dev migration\n\n const tableExists = await migrationTableExists(this)\n if (tableExists) {\n try {\n await payload.delete({\n collection: 'payload-migrations',\n where: {\n batch: {\n equals: -1,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: 'Error deleting dev migration' })\n }\n }\n}\n"],"names":["commitTransaction","createLocalReq","getMigrations","initTransaction","killTransaction","readMigrationFiles","getTransaction","migrationTableExists","migrateReset","payload","migrationFiles","existingMigrations","length","logger","info","msg","req","reverse","migration","migrationFile","find","m","name","Error","start","Date","now","db","down","tableExists","delete","id","collection","err","message","error","process","exit","where","batch","equals"],"mappings":"AAAA,SACEA,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,UAAS;AAIhB,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,oBAAoB,QAAQ,sCAAqC;AAE1E;;CAEC,GACD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAML,mBAAmB;QAAEI;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAE,GAAG,MAAMT,cAAc;QAAEO;IAAQ;IAE7D,IAAI,CAACE,oBAAoBC,QAAQ;QAC/BH,QAAQI,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA0B;QACrD;IACF;IAEA,MAAMC,MAAM,MAAMf,eAAe,CAAC,GAAGQ;IAErCE,mBAAmBM,OAAO;IAE1B,mCAAmC;IACnC,KAAK,MAAMC,aAAaP,mBAAoB;QAC1C,MAAMQ,gBAAgBT,eAAeU,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAC1E,IAAI;YACF,IAAI,CAACH,eAAe;gBAClB,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEL,UAAUI,IAAI,CAAC,mBAAmB,CAAC;YAClE;YAEA,MAAME,QAAQC,KAAKC,GAAG;YACtBjB,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEI,cAAcG,IAAI,EAAE;YAAC;YACnE,MAAMnB,gBAAgBa;YACtB,MAAMW,KAAK,MAAMrB,eAAe,IAAI,EAAEU;YACtC,MAAMG,cAAcS,IAAI,CAAC;gBAAED;gBAAIlB;gBAASO;YAAI;YAC5CP,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,gBAAgB,EAAEI,cAAcG,IAAI,CAAC,EAAE,EAAEG,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YACxE;YAEA,MAAMK,cAAc,MAAMtB,qBAAqB,IAAI,EAAEoB;YACrD,IAAIE,aAAa;gBACf,MAAMpB,QAAQqB,MAAM,CAAC;oBACnBC,IAAIb,UAAUa,EAAE;oBAChBC,YAAY;oBACZhB;gBACF;YACF;YAEA,MAAMhB,kBAAkBgB;QAC1B,EAAE,OAAOiB,KAAc;YACrB,IAAIlB,MAAM,CAAC,wBAAwB,EAAEI,cAAcG,IAAI,CAAC,CAAC,CAAC;YAE1D,IAAIW,eAAeV,OAAO;gBACxBR,OAAO,CAAC,CAAC,EAAEkB,IAAIC,OAAO,EAAE;YAC1B;YAEA,MAAM9B,gBAAgBY;YACtBP,QAAQI,MAAM,CAACsB,KAAK,CAAC;gBACnBF;gBACAlB;YACF;YACAqB,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,uBAAuB;IAEvB,MAAMR,cAAc,MAAMtB,qBAAqB,IAAI;IACnD,IAAIsB,aAAa;QACf,IAAI;YACF,MAAMpB,QAAQqB,MAAM,CAAC;gBACnBE,YAAY;gBACZM,OAAO;oBACLC,OAAO;wBACLC,QAAQ,CAAC;oBACX;gBACF;YACF;QACF,EAAE,OAAOP,KAAc;YACrBxB,QAAQI,MAAM,CAACsB,KAAK,CAAC;gBAAEF;gBAAKlB,KAAK;YAA+B;QAClE;IACF;AACF"}
1
+ {"version":3,"sources":["../src/migrateReset.ts"],"sourcesContent":["import type { MigrationResult } from 'payload'\n\nimport {\n commitTransaction,\n createLocalReq,\n getMigrations,\n initTransaction,\n killTransaction,\n readMigrationFiles,\n} from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { getTransaction } from './utilities/getTransaction.js'\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\n\n/**\n * Run all migrate down functions\n */\nexport async function migrateReset(this: DrizzleAdapter): Promise<MigrationResult> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n const { existingMigrations } = await getMigrations({ payload })\n\n if (!existingMigrations?.length) {\n payload.logger.info({ msg: 'No migrations to reset.' })\n return { migrated: [], rolledBack: [] }\n }\n\n const req = await createLocalReq({}, payload)\n\n existingMigrations.reverse()\n const rolledBack: string[] = []\n\n // Rollback all migrations in order\n for (const migration of existingMigrations) {\n const migrationFile = migrationFiles.find((m) => m.name === migration.name)\n try {\n if (!migrationFile) {\n throw new Error(`Migration ${migration.name} not found locally.`)\n }\n\n const start = Date.now()\n payload.logger.info({ msg: `Migrating down: ${migrationFile.name}` })\n await initTransaction(req)\n const db = await getTransaction(this, req)\n await migrationFile.down({ db, payload, req })\n payload.logger.info({\n msg: `Migrated down: ${migrationFile.name} (${Date.now() - start}ms)`,\n })\n\n const tableExists = await migrationTableExists(this, db)\n if (tableExists) {\n await payload.delete({\n id: migration.id,\n collection: 'payload-migrations',\n req,\n })\n }\n\n await commitTransaction(req)\n rolledBack.push(migrationFile.name)\n } catch (err: unknown) {\n let msg = `Error running migration ${migrationFile.name}.`\n\n if (err instanceof Error) {\n msg += ` ${err.message}`\n }\n\n await killTransaction(req)\n payload.logger.error({\n err,\n msg,\n })\n throw err\n }\n }\n\n // Delete dev migration\n\n const tableExists = await migrationTableExists(this)\n if (tableExists) {\n try {\n await payload.delete({\n collection: 'payload-migrations',\n where: {\n batch: {\n equals: -1,\n },\n },\n })\n } catch (err: unknown) {\n payload.logger.error({ err, msg: 'Error deleting dev migration' })\n throw err\n }\n }\n\n return { migrated: [], rolledBack }\n}\n"],"names":["commitTransaction","createLocalReq","getMigrations","initTransaction","killTransaction","readMigrationFiles","getTransaction","migrationTableExists","migrateReset","payload","migrationFiles","existingMigrations","length","logger","info","msg","migrated","rolledBack","req","reverse","migration","migrationFile","find","m","name","Error","start","Date","now","db","down","tableExists","delete","id","collection","push","err","message","error","where","batch","equals"],"mappings":"AAEA,SACEA,iBAAiB,EACjBC,cAAc,EACdC,aAAa,EACbC,eAAe,EACfC,eAAe,EACfC,kBAAkB,QACb,UAAS;AAIhB,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,oBAAoB,QAAQ,sCAAqC;AAE1E;;CAEC,GACD,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAML,mBAAmB;QAAEI;IAAQ;IAE1D,MAAM,EAAEE,kBAAkB,EAAE,GAAG,MAAMT,cAAc;QAAEO;IAAQ;IAE7D,IAAI,CAACE,oBAAoBC,QAAQ;QAC/BH,QAAQI,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA0B;QACrD,OAAO;YAAEC,UAAU,EAAE;YAAEC,YAAY,EAAE;QAAC;IACxC;IAEA,MAAMC,MAAM,MAAMjB,eAAe,CAAC,GAAGQ;IAErCE,mBAAmBQ,OAAO;IAC1B,MAAMF,aAAuB,EAAE;IAE/B,mCAAmC;IACnC,KAAK,MAAMG,aAAaT,mBAAoB;QAC1C,MAAMU,gBAAgBX,eAAeY,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAC1E,IAAI;YACF,IAAI,CAACH,eAAe;gBAClB,MAAM,IAAII,MAAM,CAAC,UAAU,EAAEL,UAAUI,IAAI,CAAC,mBAAmB,CAAC;YAClE;YAEA,MAAME,QAAQC,KAAKC,GAAG;YACtBnB,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAAEC,KAAK,CAAC,gBAAgB,EAAEM,cAAcG,IAAI,EAAE;YAAC;YACnE,MAAMrB,gBAAgBe;YACtB,MAAMW,KAAK,MAAMvB,eAAe,IAAI,EAAEY;YACtC,MAAMG,cAAcS,IAAI,CAAC;gBAAED;gBAAIpB;gBAASS;YAAI;YAC5CT,QAAQI,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,gBAAgB,EAAEM,cAAcG,IAAI,CAAC,EAAE,EAAEG,KAAKC,GAAG,KAAKF,MAAM,GAAG,CAAC;YACxE;YAEA,MAAMK,cAAc,MAAMxB,qBAAqB,IAAI,EAAEsB;YACrD,IAAIE,aAAa;gBACf,MAAMtB,QAAQuB,MAAM,CAAC;oBACnBC,IAAIb,UAAUa,EAAE;oBAChBC,YAAY;oBACZhB;gBACF;YACF;YAEA,MAAMlB,kBAAkBkB;YACxBD,WAAWkB,IAAI,CAACd,cAAcG,IAAI;QACpC,EAAE,OAAOY,KAAc;YACrB,IAAIrB,MAAM,CAAC,wBAAwB,EAAEM,cAAcG,IAAI,CAAC,CAAC,CAAC;YAE1D,IAAIY,eAAeX,OAAO;gBACxBV,OAAO,CAAC,CAAC,EAAEqB,IAAIC,OAAO,EAAE;YAC1B;YAEA,MAAMjC,gBAAgBc;YACtBT,QAAQI,MAAM,CAACyB,KAAK,CAAC;gBACnBF;gBACArB;YACF;YACA,MAAMqB;QACR;IACF;IAEA,uBAAuB;IAEvB,MAAML,cAAc,MAAMxB,qBAAqB,IAAI;IACnD,IAAIwB,aAAa;QACf,IAAI;YACF,MAAMtB,QAAQuB,MAAM,CAAC;gBACnBE,YAAY;gBACZK,OAAO;oBACLC,OAAO;wBACLC,QAAQ,CAAC;oBACX;gBACF;YACF;QACF,EAAE,OAAOL,KAAc;YACrB3B,QAAQI,MAAM,CAACyB,KAAK,CAAC;gBAAEF;gBAAKrB,KAAK;YAA+B;YAChE,MAAMqB;QACR;IACF;IAEA,OAAO;QAAEpB,UAAU,EAAE;QAAEC;IAAW;AACpC"}
@@ -1,3 +1,4 @@
1
+ import type { MigrationStatus } from 'payload';
1
2
  import type { DrizzleAdapter } from './types.js';
2
- export declare function migrateStatus(this: DrizzleAdapter): Promise<void>;
3
+ export declare function migrateStatus(this: DrizzleAdapter): Promise<MigrationStatus[]>;
3
4
  //# sourceMappingURL=migrateStatus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrateStatus.d.ts","sourceRoot":"","sources":["../src/migrateStatus.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCvE"}
1
+ {"version":3,"file":"migrateStatus.d.ts","sourceRoot":"","sources":["../src/migrateStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAK9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIhD,wBAAsB,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA2CpF"}
@@ -21,24 +21,29 @@ export async function migrateStatus() {
21
21
  payload.logger.info({
22
22
  msg: 'No migrations found.'
23
23
  });
24
- return;
24
+ return [];
25
25
  }
26
26
  // Compare migration files to existing migrations
27
27
  const statuses = migrationFiles.map((migration)=>{
28
28
  const existingMigration = existingMigrations.find((m)=>m.name === migration.name);
29
29
  return {
30
- Name: migration.name,
31
- Batch: existingMigration?.batch,
32
- Ran: existingMigration ? 'Yes' : 'No'
30
+ name: migration.name,
31
+ batch: existingMigration?.batch,
32
+ ran: Boolean(existingMigration)
33
33
  };
34
34
  });
35
35
  const p = new Table();
36
36
  statuses.forEach((s)=>{
37
- p.addRow(s, {
38
- color: s.Ran === 'Yes' ? 'green' : 'red'
37
+ p.addRow({
38
+ Batch: s.batch,
39
+ Name: s.name,
40
+ Ran: s.ran ? 'Yes' : 'No'
41
+ }, {
42
+ color: s.ran ? 'green' : 'red'
39
43
  });
40
44
  });
41
45
  p.printTable();
46
+ return statuses;
42
47
  }
43
48
 
44
49
  //# sourceMappingURL=migrateStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/migrateStatus.ts"],"sourcesContent":["import { Table } from 'console-table-printer'\nimport { getMigrations, readMigrationFiles } from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\n\nexport async function migrateStatus(this: DrizzleAdapter): Promise<void> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n let existingMigrations = []\n const hasMigrationTable = await migrationTableExists(this)\n\n if (hasMigrationTable) {\n ;({ existingMigrations } = await getMigrations({ payload }))\n }\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations found.' })\n return\n }\n\n // Compare migration files to existing migrations\n const statuses = migrationFiles.map((migration) => {\n const existingMigration = existingMigrations.find((m) => m.name === migration.name)\n return {\n Name: migration.name,\n\n Batch: existingMigration?.batch,\n Ran: existingMigration ? 'Yes' : 'No',\n }\n })\n\n const p = new Table()\n\n statuses.forEach((s) => {\n p.addRow(s, {\n color: s.Ran === 'Yes' ? 'green' : 'red',\n })\n })\n p.printTable()\n}\n"],"names":["Table","getMigrations","readMigrationFiles","migrationTableExists","migrateStatus","payload","migrationFiles","logger","debug","msg","length","existingMigrations","hasMigrationTable","info","statuses","map","migration","existingMigration","find","m","name","Name","Batch","batch","Ran","p","forEach","s","addRow","color","printTable"],"mappings":"AAAA,SAASA,KAAK,QAAQ,wBAAuB;AAC7C,SAASC,aAAa,EAAEC,kBAAkB,QAAQ,UAAS;AAI3D,SAASC,oBAAoB,QAAQ,sCAAqC;AAE1E,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMJ,mBAAmB;QAAEG;IAAQ;IAE1DA,QAAQE,MAAM,CAACC,KAAK,CAAC;QACnBC,KAAK,CAAC,MAAM,EAAEH,eAAeI,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,IAAIC,qBAAqB,EAAE;IAC3B,MAAMC,oBAAoB,MAAMT,qBAAqB,IAAI;IAEzD,IAAIS,mBAAmB;;QACnB,CAAA,EAAED,kBAAkB,EAAE,GAAG,MAAMV,cAAc;YAAEI;QAAQ,EAAC;IAC5D;IAEA,IAAI,CAACC,eAAeI,MAAM,EAAE;QAC1BL,QAAQE,MAAM,CAACM,IAAI,CAAC;YAAEJ,KAAK;QAAuB;QAClD;IACF;IAEA,iDAAiD;IACjD,MAAMK,WAAWR,eAAeS,GAAG,CAAC,CAACC;QACnC,MAAMC,oBAAoBN,mBAAmBO,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAClF,OAAO;YACLC,MAAML,UAAUI,IAAI;YAEpBE,OAAOL,mBAAmBM;YAC1BC,KAAKP,oBAAoB,QAAQ;QACnC;IACF;IAEA,MAAMQ,IAAI,IAAIzB;IAEdc,SAASY,OAAO,CAAC,CAACC;QAChBF,EAAEG,MAAM,CAACD,GAAG;YACVE,OAAOF,EAAEH,GAAG,KAAK,QAAQ,UAAU;QACrC;IACF;IACAC,EAAEK,UAAU;AACd"}
1
+ {"version":3,"sources":["../src/migrateStatus.ts"],"sourcesContent":["import type { MigrationStatus } from 'payload'\n\nimport { Table } from 'console-table-printer'\nimport { getMigrations, readMigrationFiles } from 'payload'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { migrationTableExists } from './utilities/migrationTableExists.js'\n\nexport async function migrateStatus(this: DrizzleAdapter): Promise<MigrationStatus[]> {\n const { payload } = this\n const migrationFiles = await readMigrationFiles({ payload })\n\n payload.logger.debug({\n msg: `Found ${migrationFiles.length} migration files.`,\n })\n\n let existingMigrations = []\n const hasMigrationTable = await migrationTableExists(this)\n\n if (hasMigrationTable) {\n ;({ existingMigrations } = await getMigrations({ payload }))\n }\n\n if (!migrationFiles.length) {\n payload.logger.info({ msg: 'No migrations found.' })\n return []\n }\n\n // Compare migration files to existing migrations\n const statuses = migrationFiles.map((migration) => {\n const existingMigration = existingMigrations.find((m) => m.name === migration.name)\n return {\n name: migration.name,\n batch: existingMigration?.batch,\n ran: Boolean(existingMigration),\n }\n })\n\n const p = new Table()\n\n statuses.forEach((s) => {\n p.addRow(\n { Batch: s.batch, Name: s.name, Ran: s.ran ? 'Yes' : 'No' },\n {\n color: s.ran ? 'green' : 'red',\n },\n )\n })\n p.printTable()\n\n return statuses\n}\n"],"names":["Table","getMigrations","readMigrationFiles","migrationTableExists","migrateStatus","payload","migrationFiles","logger","debug","msg","length","existingMigrations","hasMigrationTable","info","statuses","map","migration","existingMigration","find","m","name","batch","ran","Boolean","p","forEach","s","addRow","Batch","Name","Ran","color","printTable"],"mappings":"AAEA,SAASA,KAAK,QAAQ,wBAAuB;AAC7C,SAASC,aAAa,EAAEC,kBAAkB,QAAQ,UAAS;AAI3D,SAASC,oBAAoB,QAAQ,sCAAqC;AAE1E,OAAO,eAAeC;IACpB,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiB,MAAMJ,mBAAmB;QAAEG;IAAQ;IAE1DA,QAAQE,MAAM,CAACC,KAAK,CAAC;QACnBC,KAAK,CAAC,MAAM,EAAEH,eAAeI,MAAM,CAAC,iBAAiB,CAAC;IACxD;IAEA,IAAIC,qBAAqB,EAAE;IAC3B,MAAMC,oBAAoB,MAAMT,qBAAqB,IAAI;IAEzD,IAAIS,mBAAmB;;QACnB,CAAA,EAAED,kBAAkB,EAAE,GAAG,MAAMV,cAAc;YAAEI;QAAQ,EAAC;IAC5D;IAEA,IAAI,CAACC,eAAeI,MAAM,EAAE;QAC1BL,QAAQE,MAAM,CAACM,IAAI,CAAC;YAAEJ,KAAK;QAAuB;QAClD,OAAO,EAAE;IACX;IAEA,iDAAiD;IACjD,MAAMK,WAAWR,eAAeS,GAAG,CAAC,CAACC;QACnC,MAAMC,oBAAoBN,mBAAmBO,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKJ,UAAUI,IAAI;QAClF,OAAO;YACLA,MAAMJ,UAAUI,IAAI;YACpBC,OAAOJ,mBAAmBI;YAC1BC,KAAKC,QAAQN;QACf;IACF;IAEA,MAAMO,IAAI,IAAIxB;IAEdc,SAASW,OAAO,CAAC,CAACC;QAChBF,EAAEG,MAAM,CACN;YAAEC,OAAOF,EAAEL,KAAK;YAAEQ,MAAMH,EAAEN,IAAI;YAAEU,KAAKJ,EAAEJ,GAAG,GAAG,QAAQ;QAAK,GAC1D;YACES,OAAOL,EAAEJ,GAAG,GAAG,UAAU;QAC3B;IAEJ;IACAE,EAAEQ,UAAU;IAEZ,OAAOlB;AACT"}
@@ -45,7 +45,7 @@ const runStatementGroup = async ({ adapter, db, debug, statements })=>{
45
45
  const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter);
46
46
  if (!generatedSQL.length) {
47
47
  payload.logger.info(`No schema changes needed.`);
48
- process.exit(0);
48
+ return;
49
49
  }
50
50
  const sqlUpStatements = groupUpSQLStatements(generatedSQL);
51
51
  const db = await getTransaction(adapter, req);