@payloadcms/drizzle 3.0.0 → 3.0.1-canary.d608962
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 +20 -0
- package/dist/migrate.js.map +1 -1
- package/package.json +4 -4
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts +0 -2
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.d.ts.map +0 -1
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js +0 -16
- package/dist/postgres/createJSONQuery/convertPathToJSONTraversal.js.map +0 -1
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts +0 -2
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.d.ts.map +0 -1
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.js +0 -5
- package/dist/postgres/createJSONQuery/formatJSONPathSegment.js.map +0 -1
package/dist/migrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,YAAY,CAAA;AAK3D,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAa,MAAM,YAAY,CAAA;AAK3D,eAAO,MAAM,OAAO,EAAE,cAAc,CAAC,SAAS,CAmF7C,CAAA"}
|
package/dist/migrate.js
CHANGED
|
@@ -13,18 +13,28 @@ export const migrate = async function migrate(args) {
|
|
|
13
13
|
});
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
+
payload.logger.info({
|
|
17
|
+
migrationFilesCount: migrationFiles.length,
|
|
18
|
+
msg: 'Found migrations to run'
|
|
19
|
+
});
|
|
16
20
|
if ('createExtensions' in this && typeof this.createExtensions === 'function') {
|
|
17
21
|
await this.createExtensions();
|
|
18
22
|
}
|
|
19
23
|
let latestBatch = 0;
|
|
20
24
|
let migrationsInDB = [];
|
|
21
25
|
const hasMigrationTable = await migrationTableExists(this);
|
|
26
|
+
payload.logger.info({
|
|
27
|
+
hasMigrationTable
|
|
28
|
+
});
|
|
22
29
|
if (hasMigrationTable) {
|
|
23
30
|
({ docs: migrationsInDB } = await payload.find({
|
|
24
31
|
collection: 'payload-migrations',
|
|
25
32
|
limit: 0,
|
|
26
33
|
sort: '-name'
|
|
27
34
|
}));
|
|
35
|
+
payload.logger.info({
|
|
36
|
+
migrationsInDB
|
|
37
|
+
});
|
|
28
38
|
if (Number(migrationsInDB?.[0]?.batch) > 0) {
|
|
29
39
|
latestBatch = Number(migrationsInDB[0]?.batch);
|
|
30
40
|
}
|
|
@@ -40,6 +50,9 @@ export const migrate = async function migrate(args) {
|
|
|
40
50
|
process.exit(0);
|
|
41
51
|
}
|
|
42
52
|
});
|
|
53
|
+
payload.logger.info({
|
|
54
|
+
runMigrations
|
|
55
|
+
});
|
|
43
56
|
if (!runMigrations) {
|
|
44
57
|
process.exit(0);
|
|
45
58
|
}
|
|
@@ -48,10 +61,17 @@ export const migrate = async function migrate(args) {
|
|
|
48
61
|
// Execute 'up' function for each migration sequentially
|
|
49
62
|
for (const migration of migrationFiles){
|
|
50
63
|
const alreadyRan = migrationsInDB.find((existing)=>existing.name === migration.name);
|
|
64
|
+
payload.logger.info({
|
|
65
|
+
alreadyRan,
|
|
66
|
+
migration
|
|
67
|
+
});
|
|
51
68
|
// If already ran, skip
|
|
52
69
|
if (alreadyRan) {
|
|
53
70
|
continue;
|
|
54
71
|
}
|
|
72
|
+
payload.logger.info({
|
|
73
|
+
msg: 'Running migration'
|
|
74
|
+
});
|
|
55
75
|
await runMigrationFile(payload, migration, newBatch);
|
|
56
76
|
}
|
|
57
77
|
};
|
package/dist/migrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/migrate.ts"],"sourcesContent":["import type { Payload, PayloadRequest } from 'payload'\n\nimport { commitTransaction, initTransaction, killTransaction, readMigrationFiles } from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter, Migration } from './types.js'\n\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 if (Number(migrationsInDB?.[0]?.batch) > 0) {\n latestBatch = Number(migrationsInDB[0]?.batch)\n }\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 }\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 = { payload } as PayloadRequest\n const adapter = payload.db as DrizzleAdapter\n\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n\n try {\n await initTransaction(req)\n const db = adapter?.sessions[await req.transactionID]?.db || adapter.drizzle\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","initTransaction","killTransaction","readMigrationFiles","prompts","migrationTableExists","parseError","migrate","args","payload","migrationFiles","migrations","length","logger","info","msg","createExtensions","latestBatch","migrationsInDB","hasMigrationTable","docs","find","collection","limit","sort","Number","batch","m","confirm","runMigrations","name","type","initial","message","onCancel","process","exit","newBatch","migration","alreadyRan","existing","runMigrationFile","start","Date","now","req","adapter","db","sessions","transactionID","drizzle","up","create","data","err","error"],"mappings":"AAEA,SAASA,iBAAiB,EAAEC,eAAe,EAAEC,eAAe,EAAEC,kBAAkB,QAAQ,UAAS;AACjG,OAAOC,aAAa,UAAS;AAI7B,SAASC,oBAAoB,QAAQ,sCAAqC;AAC1E,SAASC,UAAU,QAAQ,4BAA2B;AAEtD,OAAO,MAAMC,UAAqC,eAAeA,QAE/DC,IAAI;IAEJ,MAAM,EAAEC,OAAO,EAAE,GAAG,IAAI;IACxB,MAAMC,iBAAiBF,MAAMG,cAAe,MAAMR,mBAAmB;QAAEM;IAAQ;IAE/E,IAAI,CAACC,eAAeE,MAAM,EAAE;QAC1BH,QAAQI,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAAwB;QACnD;IACF;IAEA,IAAI,sBAAsB,IAAI,IAAI,OAAO,IAAI,
|
|
1
|
+
{"version":3,"sources":["../src/migrate.ts"],"sourcesContent":["import type { Payload, PayloadRequest } from 'payload'\n\nimport { commitTransaction, initTransaction, killTransaction, readMigrationFiles } from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter, Migration } from './types.js'\n\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 payload.logger.info({\n migrationFilesCount: migrationFiles.length,\n msg: 'Found migrations to run',\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 payload.logger.info({ hasMigrationTable })\n\n if (hasMigrationTable) {\n ;({ docs: migrationsInDB } = await payload.find({\n collection: 'payload-migrations',\n limit: 0,\n sort: '-name',\n }))\n\n payload.logger.info({ migrationsInDB })\n\n if (Number(migrationsInDB?.[0]?.batch) > 0) {\n latestBatch = Number(migrationsInDB[0]?.batch)\n }\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 payload.logger.info({ runMigrations })\n\n if (!runMigrations) {\n process.exit(0)\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 payload.logger.info({ alreadyRan, migration })\n\n // If already ran, skip\n if (alreadyRan) {\n continue\n }\n\n payload.logger.info({ msg: 'Running migration' })\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 = { payload } as PayloadRequest\n const adapter = payload.db as DrizzleAdapter\n\n payload.logger.info({ msg: `Migrating: ${migration.name}` })\n\n try {\n await initTransaction(req)\n const db = adapter?.sessions[await req.transactionID]?.db || adapter.drizzle\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","initTransaction","killTransaction","readMigrationFiles","prompts","migrationTableExists","parseError","migrate","args","payload","migrationFiles","migrations","length","logger","info","msg","migrationFilesCount","createExtensions","latestBatch","migrationsInDB","hasMigrationTable","docs","find","collection","limit","sort","Number","batch","m","confirm","runMigrations","name","type","initial","message","onCancel","process","exit","newBatch","migration","alreadyRan","existing","runMigrationFile","start","Date","now","req","adapter","db","sessions","transactionID","drizzle","up","create","data","err","error"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/drizzle",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1-canary.d608962",
|
|
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
|
-
"@payloadcms/eslint-config": "3.0.0
|
|
56
|
-
"payload": "3.0.
|
|
55
|
+
"@payloadcms/eslint-config": "3.0.0",
|
|
56
|
+
"payload": "3.0.1-canary.d608962"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
|
-
"payload": "3.0.
|
|
59
|
+
"payload": "3.0.1-canary.d608962"
|
|
60
60
|
},
|
|
61
61
|
"scripts": {
|
|
62
62
|
"build": "pnpm build:swc && pnpm build:types",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertPathToJSONTraversal.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/convertPathToJSONTraversal.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B,qBAAsB,MAAM,EAAE,WAYpE,CAAA"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { formatJSONPathSegment } from './formatJSONPathSegment.js';
|
|
2
|
-
export const convertPathToJSONTraversal = (incomingSegments)=>{
|
|
3
|
-
const segments = [
|
|
4
|
-
...incomingSegments
|
|
5
|
-
];
|
|
6
|
-
segments.shift();
|
|
7
|
-
return segments.reduce((res, segment, i)=>{
|
|
8
|
-
const formattedSegment = formatJSONPathSegment(segment);
|
|
9
|
-
if (i + 1 === segments.length) {
|
|
10
|
-
return `${res}->>${formattedSegment}`;
|
|
11
|
-
}
|
|
12
|
-
return `${res}->${formattedSegment}`;
|
|
13
|
-
}, '');
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=convertPathToJSONTraversal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/postgres/createJSONQuery/convertPathToJSONTraversal.ts"],"sourcesContent":["import { formatJSONPathSegment } from './formatJSONPathSegment.js'\n\nexport const convertPathToJSONTraversal = (incomingSegments: string[]) => {\n const segments = [...incomingSegments]\n segments.shift()\n\n return segments.reduce((res, segment, i) => {\n const formattedSegment = formatJSONPathSegment(segment)\n\n if (i + 1 === segments.length) {\n return `${res}->>${formattedSegment}`\n }\n return `${res}->${formattedSegment}`\n }, '')\n}\n"],"names":["formatJSONPathSegment","convertPathToJSONTraversal","incomingSegments","segments","shift","reduce","res","segment","i","formattedSegment","length"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,6BAA4B;AAElE,OAAO,MAAMC,6BAA6B,CAACC;IACzC,MAAMC,WAAW;WAAID;KAAiB;IACtCC,SAASC,KAAK;IAEd,OAAOD,SAASE,MAAM,CAAC,CAACC,KAAKC,SAASC;QACpC,MAAMC,mBAAmBT,sBAAsBO;QAE/C,IAAIC,IAAI,MAAML,SAASO,MAAM,EAAE;YAC7B,OAAO,CAAC,EAAEJ,IAAI,GAAG,EAAEG,iBAAiB,CAAC;QACvC;QACA,OAAO,CAAC,EAAEH,IAAI,EAAE,EAAEG,iBAAiB,CAAC;IACtC,GAAG;AACL,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formatJSONPathSegment.d.ts","sourceRoot":"","sources":["../../../src/postgres/createJSONQuery/formatJSONPathSegment.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,YAAa,MAAM,WAEpD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/postgres/createJSONQuery/formatJSONPathSegment.ts"],"sourcesContent":["export const formatJSONPathSegment = (segment: string) => {\n return Number.isNaN(parseInt(segment)) ? `'${segment}'` : segment\n}\n"],"names":["formatJSONPathSegment","segment","Number","isNaN","parseInt"],"mappings":"AAAA,OAAO,MAAMA,wBAAwB,CAACC;IACpC,OAAOC,OAAOC,KAAK,CAACC,SAASH,YAAY,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,GAAGA;AAC5D,EAAC"}
|