@payloadcms/drizzle 3.11.1-canary.54f6c59 → 3.11.1-canary.6d7b3c8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"buildRawSchema.d.ts","sourceRoot":"","sources":["../../src/schema/buildRawSchema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAY,WAAW,EAAE,MAAM,aAAa,CAAA;AAKxE;;GAEG;AACH,eAAO,MAAM,cAAc,8BAGxB;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB,SAsGA,CAAA"}
1
+ {"version":3,"file":"buildRawSchema.d.ts","sourceRoot":"","sources":["../../src/schema/buildRawSchema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAY,WAAW,EAAE,MAAM,aAAa,CAAA;AAKxE;;GAEG;AACH,eAAO,MAAM,cAAc,8BAGxB;IACD,OAAO,EAAE,cAAc,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB,SAwGA,CAAA"}
@@ -5,6 +5,7 @@ import { buildTable } from './build.js';
5
5
  /**
6
6
  * Builds abstract Payload SQL schema
7
7
  */ export const buildRawSchema = ({ adapter, setColumnID })=>{
8
+ adapter.indexes = new Set();
8
9
  adapter.payload.config.collections.forEach((collection)=>{
9
10
  createTableName({
10
11
  adapter,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildRawSchema.ts"],"sourcesContent":["import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter, RawIndex, SetColumnID } from '../types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { buildTable } from './build.js'\n\n/**\n * Builds abstract Payload SQL schema\n */\nexport const buildRawSchema = ({\n adapter,\n setColumnID,\n}: {\n adapter: DrizzleAdapter\n setColumnID: SetColumnID\n}) => {\n adapter.payload.config.collections.forEach((collection) => {\n createTableName({\n adapter,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n\n adapter.payload.config.collections.forEach((collection) => {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const config = adapter.payload.config\n\n const baseIndexes: Record<string, RawIndex> = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseIndexes.filename_compound_index = {\n name: indexName,\n on: collection.upload.filenameCompoundIndex.map((f) => f),\n unique: true,\n }\n }\n\n buildTable({\n adapter,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.flattenedFields,\n setColumnID,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(config, collection, true)\n\n buildTable({\n adapter,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n adapter.payload.config.globals.forEach((global) => {\n const tableName = createTableName({\n adapter,\n config: global,\n })\n\n buildTable({\n adapter,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.flattenedFields,\n setColumnID,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const config = adapter.payload.config\n const versionFields = buildVersionGlobalFields(config, global, true)\n\n buildTable({\n adapter,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n}\n"],"names":["buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","buildTable","buildRawSchema","adapter","setColumnID","payload","config","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseIndexes","upload","filenameCompoundIndex","indexName","filename_compound_index","name","on","map","f","unique","disableNotNull","drafts","disableUnique","fields","flattenedFields","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"AAAA,SAASA,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAChF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,UAAU,QAAQ,aAAY;AAEvC;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,WAAW,EAIZ;IACCD,QAAQE,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;QAC1CT,gBAAgB;YACdG;YACAG,QAAQG;QACV;QAEA,IAAIA,WAAWC,QAAQ,EAAE;YACvBV,gBAAgB;gBACdG;gBACAG,QAAQG;gBACRC,UAAU;gBACVC,oBAAoB;YACtB;QACF;IACF;IAEAR,QAAQE,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;QAC1C,MAAMG,YAAYT,QAAQU,YAAY,CAACC,GAAG,CAACf,YAAYU,WAAWM,IAAI;QACtE,MAAMT,SAASH,QAAQE,OAAO,CAACC,MAAM;QAErC,MAAMU,cAAwC,CAAC;QAE/C,IAAIP,WAAWQ,MAAM,CAACC,qBAAqB,EAAE;YAC3C,MAAMC,YAAY,GAAGP,UAAU,sBAAsB,CAAC;YAEtDI,YAAYI,uBAAuB,GAAG;gBACpCC,MAAMF;gBACNG,IAAIb,WAAWQ,MAAM,CAACC,qBAAqB,CAACK,GAAG,CAAC,CAACC,IAAMA;gBACvDC,QAAQ;YACV;QACF;QAEAxB,WAAW;YACTE;YACAuB,gBAAgB,CAAC,CAACjB,YAAYC,UAAUiB;YACxCC,eAAe;YACfC,QAAQpB,WAAWqB,eAAe;YAClC1B;YACAQ;YACAmB,YAAYtB,WAAWsB,UAAU;YACjCrB,UAAU;QACZ;QAEA,IAAID,WAAWC,QAAQ,EAAE;YACvB,MAAMsB,oBAAoB7B,QAAQU,YAAY,CAACC,GAAG,CAChD,CAAC,CAAC,EAAEf,YAAYU,WAAWM,IAAI,IAAIZ,QAAQ8B,cAAc,EAAE;YAE7D,MAAMC,gBAAgBrC,6BAA6BS,QAAQG,YAAY;YAEvER,WAAW;gBACTE;gBACAuB,gBAAgB,CAAC,CAACjB,WAAWC,QAAQ,EAAEiB;gBACvCC,eAAe;gBACfC,QAAQK;gBACR9B;gBACAQ,WAAWoB;gBACXD,YAAY;gBACZrB,UAAU;YACZ;QACF;IACF;IAEAP,QAAQE,OAAO,CAACC,MAAM,CAAC6B,OAAO,CAAC3B,OAAO,CAAC,CAAC4B;QACtC,MAAMxB,YAAYZ,gBAAgB;YAChCG;YACAG,QAAQ8B;QACV;QAEAnC,WAAW;YACTE;YACAuB,gBAAgB,CAAC,CAACU,QAAQ1B,UAAUiB;YACpCC,eAAe;YACfC,QAAQO,OAAON,eAAe;YAC9B1B;YACAQ;YACAmB,YAAY;YACZrB,UAAU;QACZ;QAEA,IAAI0B,OAAO1B,QAAQ,EAAE;YACnB,MAAMsB,oBAAoBhC,gBAAgB;gBACxCG;gBACAG,QAAQ8B;gBACR1B,UAAU;gBACVC,oBAAoB;YACtB;YACA,MAAML,SAASH,QAAQE,OAAO,CAACC,MAAM;YACrC,MAAM4B,gBAAgBpC,yBAAyBQ,QAAQ8B,QAAQ;YAE/DnC,WAAW;gBACTE;gBACAuB,gBAAgB,CAAC,CAACU,OAAO1B,QAAQ,EAAEiB;gBACnCC,eAAe;gBACfC,QAAQK;gBACR9B;gBACAQ,WAAWoB;gBACXD,YAAY;gBACZrB,UAAU;YACZ;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/schema/buildRawSchema.ts"],"sourcesContent":["import { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter, RawIndex, SetColumnID } from '../types.js'\n\nimport { createTableName } from '../createTableName.js'\nimport { buildTable } from './build.js'\n\n/**\n * Builds abstract Payload SQL schema\n */\nexport const buildRawSchema = ({\n adapter,\n setColumnID,\n}: {\n adapter: DrizzleAdapter\n setColumnID: SetColumnID\n}) => {\n adapter.indexes = new Set()\n\n adapter.payload.config.collections.forEach((collection) => {\n createTableName({\n adapter,\n config: collection,\n })\n\n if (collection.versions) {\n createTableName({\n adapter,\n config: collection,\n versions: true,\n versionsCustomName: true,\n })\n }\n })\n\n adapter.payload.config.collections.forEach((collection) => {\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const config = adapter.payload.config\n\n const baseIndexes: Record<string, RawIndex> = {}\n\n if (collection.upload.filenameCompoundIndex) {\n const indexName = `${tableName}_filename_compound_idx`\n\n baseIndexes.filename_compound_index = {\n name: indexName,\n on: collection.upload.filenameCompoundIndex.map((f) => f),\n unique: true,\n }\n }\n\n buildTable({\n adapter,\n disableNotNull: !!collection?.versions?.drafts,\n disableUnique: false,\n fields: collection.flattenedFields,\n setColumnID,\n tableName,\n timestamps: collection.timestamps,\n versions: false,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(config, collection, true)\n\n buildTable({\n adapter,\n disableNotNull: !!collection.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n\n adapter.payload.config.globals.forEach((global) => {\n const tableName = createTableName({\n adapter,\n config: global,\n })\n\n buildTable({\n adapter,\n disableNotNull: !!global?.versions?.drafts,\n disableUnique: false,\n fields: global.flattenedFields,\n setColumnID,\n tableName,\n timestamps: false,\n versions: false,\n })\n\n if (global.versions) {\n const versionsTableName = createTableName({\n adapter,\n config: global,\n versions: true,\n versionsCustomName: true,\n })\n const config = adapter.payload.config\n const versionFields = buildVersionGlobalFields(config, global, true)\n\n buildTable({\n adapter,\n disableNotNull: !!global.versions?.drafts,\n disableUnique: true,\n fields: versionFields,\n setColumnID,\n tableName: versionsTableName,\n timestamps: true,\n versions: true,\n })\n }\n })\n}\n"],"names":["buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","createTableName","buildTable","buildRawSchema","adapter","setColumnID","indexes","Set","payload","config","collections","forEach","collection","versions","versionsCustomName","tableName","tableNameMap","get","slug","baseIndexes","upload","filenameCompoundIndex","indexName","filename_compound_index","name","on","map","f","unique","disableNotNull","drafts","disableUnique","fields","flattenedFields","timestamps","versionsTableName","versionsSuffix","versionFields","globals","global"],"mappings":"AAAA,SAASA,4BAA4B,EAAEC,wBAAwB,QAAQ,UAAS;AAChF,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,eAAe,QAAQ,wBAAuB;AACvD,SAASC,UAAU,QAAQ,aAAY;AAEvC;;CAEC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,OAAO,EACPC,WAAW,EAIZ;IACCD,QAAQE,OAAO,GAAG,IAAIC;IAEtBH,QAAQI,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;QAC1CX,gBAAgB;YACdG;YACAK,QAAQG;QACV;QAEA,IAAIA,WAAWC,QAAQ,EAAE;YACvBZ,gBAAgB;gBACdG;gBACAK,QAAQG;gBACRC,UAAU;gBACVC,oBAAoB;YACtB;QACF;IACF;IAEAV,QAAQI,OAAO,CAACC,MAAM,CAACC,WAAW,CAACC,OAAO,CAAC,CAACC;QAC1C,MAAMG,YAAYX,QAAQY,YAAY,CAACC,GAAG,CAACjB,YAAYY,WAAWM,IAAI;QACtE,MAAMT,SAASL,QAAQI,OAAO,CAACC,MAAM;QAErC,MAAMU,cAAwC,CAAC;QAE/C,IAAIP,WAAWQ,MAAM,CAACC,qBAAqB,EAAE;YAC3C,MAAMC,YAAY,GAAGP,UAAU,sBAAsB,CAAC;YAEtDI,YAAYI,uBAAuB,GAAG;gBACpCC,MAAMF;gBACNG,IAAIb,WAAWQ,MAAM,CAACC,qBAAqB,CAACK,GAAG,CAAC,CAACC,IAAMA;gBACvDC,QAAQ;YACV;QACF;QAEA1B,WAAW;YACTE;YACAyB,gBAAgB,CAAC,CAACjB,YAAYC,UAAUiB;YACxCC,eAAe;YACfC,QAAQpB,WAAWqB,eAAe;YAClC5B;YACAU;YACAmB,YAAYtB,WAAWsB,UAAU;YACjCrB,UAAU;QACZ;QAEA,IAAID,WAAWC,QAAQ,EAAE;YACvB,MAAMsB,oBAAoB/B,QAAQY,YAAY,CAACC,GAAG,CAChD,CAAC,CAAC,EAAEjB,YAAYY,WAAWM,IAAI,IAAId,QAAQgC,cAAc,EAAE;YAE7D,MAAMC,gBAAgBvC,6BAA6BW,QAAQG,YAAY;YAEvEV,WAAW;gBACTE;gBACAyB,gBAAgB,CAAC,CAACjB,WAAWC,QAAQ,EAAEiB;gBACvCC,eAAe;gBACfC,QAAQK;gBACRhC;gBACAU,WAAWoB;gBACXD,YAAY;gBACZrB,UAAU;YACZ;QACF;IACF;IAEAT,QAAQI,OAAO,CAACC,MAAM,CAAC6B,OAAO,CAAC3B,OAAO,CAAC,CAAC4B;QACtC,MAAMxB,YAAYd,gBAAgB;YAChCG;YACAK,QAAQ8B;QACV;QAEArC,WAAW;YACTE;YACAyB,gBAAgB,CAAC,CAACU,QAAQ1B,UAAUiB;YACpCC,eAAe;YACfC,QAAQO,OAAON,eAAe;YAC9B5B;YACAU;YACAmB,YAAY;YACZrB,UAAU;QACZ;QAEA,IAAI0B,OAAO1B,QAAQ,EAAE;YACnB,MAAMsB,oBAAoBlC,gBAAgB;gBACxCG;gBACAK,QAAQ8B;gBACR1B,UAAU;gBACVC,oBAAoB;YACtB;YACA,MAAML,SAASL,QAAQI,OAAO,CAACC,MAAM;YACrC,MAAM4B,gBAAgBtC,yBAAyBU,QAAQ8B,QAAQ;YAE/DrC,WAAW;gBACTE;gBACAyB,gBAAgB,CAAC,CAACU,OAAO1B,QAAQ,EAAEiB;gBACnCC,eAAe;gBACfC,QAAQK;gBACRhC;gBACAU,WAAWoB;gBACXD,YAAY;gBACZrB,UAAU;YACZ;QACF;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"pushDevSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/pushDevSchema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,aAAa,CAAA;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAmB,cAAc,kBAwE1D,CAAA"}
1
+ {"version":3,"file":"pushDevSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/pushDevSchema.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAwB,MAAM,aAAa,CAAA;AAUvE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,YAAmB,cAAc,kBA6F1D,CAAA"}
@@ -1,10 +1,31 @@
1
+ import { deepStrictEqual } from 'assert';
1
2
  import prompts from 'prompts';
3
+ const previousSchema = {
4
+ localeCodes: null,
5
+ rawTables: null
6
+ };
2
7
  /**
3
8
  * Pushes the development schema to the database using Drizzle.
4
9
  *
5
10
  * @param {DrizzleAdapter} adapter - The PostgresAdapter instance connected to the database.
6
11
  * @returns {Promise<void>} - A promise that resolves once the schema push is complete.
7
12
  */ export const pushDevSchema = async (adapter)=>{
13
+ if (process.env.PAYLOAD_FORCE_DRIZZLE_PUSH !== 'true') {
14
+ const localeCodes = adapter.payload.config.localization && adapter.payload.config.localization.localeCodes;
15
+ try {
16
+ deepStrictEqual(previousSchema, {
17
+ localeCodes,
18
+ rawTables: adapter.rawTables
19
+ });
20
+ if (adapter.logger) {
21
+ adapter.payload.logger.info('No changes detected in schema, skipping schema push.');
22
+ }
23
+ return;
24
+ } catch {
25
+ previousSchema.localeCodes = localeCodes;
26
+ previousSchema.rawTables = adapter.rawTables;
27
+ }
28
+ }
8
29
  const { pushSchema } = adapter.requireDrizzleKit();
9
30
  const { extensions = {}, tablesFilter } = adapter;
10
31
  // This will prompt if clarifications are needed for Drizzle to push new schema
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import prompts from 'prompts'\n\nimport type { BasePostgresAdapter } from '../postgres/types.js'\nimport type { DrizzleAdapter, PostgresDB } from '../types.js'\n\n/**\n * Pushes the development schema to the database using Drizzle.\n *\n * @param {DrizzleAdapter} adapter - The PostgresAdapter instance connected to the database.\n * @returns {Promise<void>} - A promise that resolves once the schema push is complete.\n */\nexport const pushDevSchema = async (adapter: DrizzleAdapter) => {\n const { pushSchema } = adapter.requireDrizzleKit()\n\n const { extensions = {}, tablesFilter } = adapter as BasePostgresAdapter\n\n // This will prompt if clarifications are needed for Drizzle to push new schema\n const { apply, hasDataLoss, warnings } = await pushSchema(\n adapter.schema,\n adapter.drizzle,\n adapter.schemaName ? [adapter.schemaName] : undefined,\n tablesFilter,\n // Drizzle extensionsFilter supports only postgis for now\n // https://github.com/drizzle-team/drizzle-orm/blob/83daf2d5cf023112de878bc2249ee2c41a2a5b1b/drizzle-kit/src/cli/validations/cli.ts#L26\n extensions.postgis ? ['postgis'] : undefined,\n )\n\n if (warnings.length) {\n let message = `Warnings detected during schema push: \\n\\n${warnings.join('\\n')}\\n\\n`\n\n if (hasDataLoss) {\n message += `DATA LOSS WARNING: Possible data loss detected if schema is pushed.\\n\\n`\n }\n\n message += `Accept warnings and push schema to database?`\n\n const { confirm: acceptWarnings } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n // Exit if user does not accept warnings.\n // Q: Is this the right type of exit for this interaction?\n if (!acceptWarnings) {\n process.exit(0)\n }\n }\n\n await apply()\n const migrationsTable = adapter.schemaName\n ? `\"${adapter.schemaName}\".\"payload_migrations\"`\n : '\"payload_migrations\"'\n\n const drizzle = adapter.drizzle as PostgresDB\n\n const result = await adapter.execute({\n drizzle,\n raw: `SELECT * FROM ${migrationsTable} WHERE batch = '-1'`,\n })\n\n const devPush = result.rows\n\n if (!devPush.length) {\n // Use drizzle for insert so $defaultFn's are called\n await drizzle.insert(adapter.tables.payload_migrations).values({\n name: 'dev',\n batch: -1,\n })\n } else {\n await adapter.execute({\n drizzle,\n raw: `UPDATE ${migrationsTable} SET updated_at = CURRENT_TIMESTAMP WHERE batch = '-1'`,\n })\n }\n}\n"],"names":["prompts","pushDevSchema","adapter","pushSchema","requireDrizzleKit","extensions","tablesFilter","apply","hasDataLoss","warnings","schema","drizzle","schemaName","undefined","postgis","length","message","join","confirm","acceptWarnings","name","type","initial","onCancel","process","exit","migrationsTable","result","execute","raw","devPush","rows","insert","tables","payload_migrations","values","batch"],"mappings":"AAAA,OAAOA,aAAa,UAAS;AAK7B;;;;;CAKC,GACD,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,MAAM,EAAEC,UAAU,EAAE,GAAGD,QAAQE,iBAAiB;IAEhD,MAAM,EAAEC,aAAa,CAAC,CAAC,EAAEC,YAAY,EAAE,GAAGJ;IAE1C,+EAA+E;IAC/E,MAAM,EAAEK,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAG,MAAMN,WAC7CD,QAAQQ,MAAM,EACdR,QAAQS,OAAO,EACfT,QAAQU,UAAU,GAAG;QAACV,QAAQU,UAAU;KAAC,GAAGC,WAC5CP,cACA,yDAAyD;IACzD,uIAAuI;IACvID,WAAWS,OAAO,GAAG;QAAC;KAAU,GAAGD;IAGrC,IAAIJ,SAASM,MAAM,EAAE;QACnB,IAAIC,UAAU,CAAC,0CAA0C,EAAEP,SAASQ,IAAI,CAAC,MAAM,IAAI,CAAC;QAEpF,IAAIT,aAAa;YACfQ,WAAW,CAAC,uEAAuE,CAAC;QACtF;QAEAA,WAAW,CAAC,4CAA4C,CAAC;QAEzD,MAAM,EAAEE,SAASC,cAAc,EAAE,GAAG,MAAMnB,QACxC;YACEoB,MAAM;YACNC,MAAM;YACNC,SAAS;YACTN;QACF,GACA;YACEO,UAAU;gBACRC,QAAQC,IAAI,CAAC;YACf;QACF;QAGF,yCAAyC;QACzC,0DAA0D;QAC1D,IAAI,CAACN,gBAAgB;YACnBK,QAAQC,IAAI,CAAC;QACf;IACF;IAEA,MAAMlB;IACN,MAAMmB,kBAAkBxB,QAAQU,UAAU,GACtC,CAAC,CAAC,EAAEV,QAAQU,UAAU,CAAC,sBAAsB,CAAC,GAC9C;IAEJ,MAAMD,UAAUT,QAAQS,OAAO;IAE/B,MAAMgB,SAAS,MAAMzB,QAAQ0B,OAAO,CAAC;QACnCjB;QACAkB,KAAK,CAAC,cAAc,EAAEH,gBAAgB,mBAAmB,CAAC;IAC5D;IAEA,MAAMI,UAAUH,OAAOI,IAAI;IAE3B,IAAI,CAACD,QAAQf,MAAM,EAAE;QACnB,oDAAoD;QACpD,MAAMJ,QAAQqB,MAAM,CAAC9B,QAAQ+B,MAAM,CAACC,kBAAkB,EAAEC,MAAM,CAAC;YAC7Df,MAAM;YACNgB,OAAO,CAAC;QACV;IACF,OAAO;QACL,MAAMlC,QAAQ0B,OAAO,CAAC;YACpBjB;YACAkB,KAAK,CAAC,OAAO,EAAEH,gBAAgB,sDAAsD,CAAC;QACxF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import { deepStrictEqual } from 'assert'\nimport prompts from 'prompts'\n\nimport type { BasePostgresAdapter } from '../postgres/types.js'\nimport type { DrizzleAdapter, PostgresDB, RawTable } from '../types.js'\n\nconst previousSchema: {\n localeCodes: null | string[]\n rawTables: null | Record<string, RawTable>\n} = {\n localeCodes: null,\n rawTables: null,\n}\n\n/**\n * Pushes the development schema to the database using Drizzle.\n *\n * @param {DrizzleAdapter} adapter - The PostgresAdapter instance connected to the database.\n * @returns {Promise<void>} - A promise that resolves once the schema push is complete.\n */\nexport const pushDevSchema = async (adapter: DrizzleAdapter) => {\n if (process.env.PAYLOAD_FORCE_DRIZZLE_PUSH !== 'true') {\n const localeCodes =\n adapter.payload.config.localization && adapter.payload.config.localization.localeCodes\n\n try {\n deepStrictEqual(previousSchema, {\n localeCodes,\n rawTables: adapter.rawTables,\n })\n\n if (adapter.logger) {\n adapter.payload.logger.info('No changes detected in schema, skipping schema push.')\n }\n\n return\n } catch {\n previousSchema.localeCodes = localeCodes\n previousSchema.rawTables = adapter.rawTables\n }\n }\n\n const { pushSchema } = adapter.requireDrizzleKit()\n\n const { extensions = {}, tablesFilter } = adapter as BasePostgresAdapter\n\n // This will prompt if clarifications are needed for Drizzle to push new schema\n const { apply, hasDataLoss, warnings } = await pushSchema(\n adapter.schema,\n adapter.drizzle,\n adapter.schemaName ? [adapter.schemaName] : undefined,\n tablesFilter,\n // Drizzle extensionsFilter supports only postgis for now\n // https://github.com/drizzle-team/drizzle-orm/blob/83daf2d5cf023112de878bc2249ee2c41a2a5b1b/drizzle-kit/src/cli/validations/cli.ts#L26\n extensions.postgis ? ['postgis'] : undefined,\n )\n\n if (warnings.length) {\n let message = `Warnings detected during schema push: \\n\\n${warnings.join('\\n')}\\n\\n`\n\n if (hasDataLoss) {\n message += `DATA LOSS WARNING: Possible data loss detected if schema is pushed.\\n\\n`\n }\n\n message += `Accept warnings and push schema to database?`\n\n const { confirm: acceptWarnings } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message,\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n // Exit if user does not accept warnings.\n // Q: Is this the right type of exit for this interaction?\n if (!acceptWarnings) {\n process.exit(0)\n }\n }\n\n await apply()\n const migrationsTable = adapter.schemaName\n ? `\"${adapter.schemaName}\".\"payload_migrations\"`\n : '\"payload_migrations\"'\n\n const drizzle = adapter.drizzle as PostgresDB\n\n const result = await adapter.execute({\n drizzle,\n raw: `SELECT * FROM ${migrationsTable} WHERE batch = '-1'`,\n })\n\n const devPush = result.rows\n\n if (!devPush.length) {\n // Use drizzle for insert so $defaultFn's are called\n await drizzle.insert(adapter.tables.payload_migrations).values({\n name: 'dev',\n batch: -1,\n })\n } else {\n await adapter.execute({\n drizzle,\n raw: `UPDATE ${migrationsTable} SET updated_at = CURRENT_TIMESTAMP WHERE batch = '-1'`,\n })\n }\n}\n"],"names":["deepStrictEqual","prompts","previousSchema","localeCodes","rawTables","pushDevSchema","adapter","process","env","PAYLOAD_FORCE_DRIZZLE_PUSH","payload","config","localization","logger","info","pushSchema","requireDrizzleKit","extensions","tablesFilter","apply","hasDataLoss","warnings","schema","drizzle","schemaName","undefined","postgis","length","message","join","confirm","acceptWarnings","name","type","initial","onCancel","exit","migrationsTable","result","execute","raw","devPush","rows","insert","tables","payload_migrations","values","batch"],"mappings":"AAAA,SAASA,eAAe,QAAQ,SAAQ;AACxC,OAAOC,aAAa,UAAS;AAK7B,MAAMC,iBAGF;IACFC,aAAa;IACbC,WAAW;AACb;AAEA;;;;;CAKC,GACD,OAAO,MAAMC,gBAAgB,OAAOC;IAClC,IAAIC,QAAQC,GAAG,CAACC,0BAA0B,KAAK,QAAQ;QACrD,MAAMN,cACJG,QAAQI,OAAO,CAACC,MAAM,CAACC,YAAY,IAAIN,QAAQI,OAAO,CAACC,MAAM,CAACC,YAAY,CAACT,WAAW;QAExF,IAAI;YACFH,gBAAgBE,gBAAgB;gBAC9BC;gBACAC,WAAWE,QAAQF,SAAS;YAC9B;YAEA,IAAIE,QAAQO,MAAM,EAAE;gBAClBP,QAAQI,OAAO,CAACG,MAAM,CAACC,IAAI,CAAC;YAC9B;YAEA;QACF,EAAE,OAAM;YACNZ,eAAeC,WAAW,GAAGA;YAC7BD,eAAeE,SAAS,GAAGE,QAAQF,SAAS;QAC9C;IACF;IAEA,MAAM,EAAEW,UAAU,EAAE,GAAGT,QAAQU,iBAAiB;IAEhD,MAAM,EAAEC,aAAa,CAAC,CAAC,EAAEC,YAAY,EAAE,GAAGZ;IAE1C,+EAA+E;IAC/E,MAAM,EAAEa,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAG,MAAMN,WAC7CT,QAAQgB,MAAM,EACdhB,QAAQiB,OAAO,EACfjB,QAAQkB,UAAU,GAAG;QAAClB,QAAQkB,UAAU;KAAC,GAAGC,WAC5CP,cACA,yDAAyD;IACzD,uIAAuI;IACvID,WAAWS,OAAO,GAAG;QAAC;KAAU,GAAGD;IAGrC,IAAIJ,SAASM,MAAM,EAAE;QACnB,IAAIC,UAAU,CAAC,0CAA0C,EAAEP,SAASQ,IAAI,CAAC,MAAM,IAAI,CAAC;QAEpF,IAAIT,aAAa;YACfQ,WAAW,CAAC,uEAAuE,CAAC;QACtF;QAEAA,WAAW,CAAC,4CAA4C,CAAC;QAEzD,MAAM,EAAEE,SAASC,cAAc,EAAE,GAAG,MAAM9B,QACxC;YACE+B,MAAM;YACNC,MAAM;YACNC,SAAS;YACTN;QACF,GACA;YACEO,UAAU;gBACR5B,QAAQ6B,IAAI,CAAC;YACf;QACF;QAGF,yCAAyC;QACzC,0DAA0D;QAC1D,IAAI,CAACL,gBAAgB;YACnBxB,QAAQ6B,IAAI,CAAC;QACf;IACF;IAEA,MAAMjB;IACN,MAAMkB,kBAAkB/B,QAAQkB,UAAU,GACtC,CAAC,CAAC,EAAElB,QAAQkB,UAAU,CAAC,sBAAsB,CAAC,GAC9C;IAEJ,MAAMD,UAAUjB,QAAQiB,OAAO;IAE/B,MAAMe,SAAS,MAAMhC,QAAQiC,OAAO,CAAC;QACnChB;QACAiB,KAAK,CAAC,cAAc,EAAEH,gBAAgB,mBAAmB,CAAC;IAC5D;IAEA,MAAMI,UAAUH,OAAOI,IAAI;IAE3B,IAAI,CAACD,QAAQd,MAAM,EAAE;QACnB,oDAAoD;QACpD,MAAMJ,QAAQoB,MAAM,CAACrC,QAAQsC,MAAM,CAACC,kBAAkB,EAAEC,MAAM,CAAC;YAC7Dd,MAAM;YACNe,OAAO,CAAC;QACV;IACF,OAAO;QACL,MAAMzC,QAAQiC,OAAO,CAAC;YACpBhB;YACAiB,KAAK,CAAC,OAAO,EAAEH,gBAAgB,sDAAsD,CAAC;QACxF;IACF;AACF,EAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/drizzle",
3
- "version": "3.11.1-canary.54f6c59",
3
+ "version": "3.11.1-canary.6d7b3c8",
4
4
  "description": "A library of shared functions used by different payload database adapters",
5
5
  "homepage": "https://payloadcms.com",
6
6
  "repository": {
@@ -53,16 +53,16 @@
53
53
  "@types/pg": "8.10.2",
54
54
  "@types/to-snake-case": "1.0.0",
55
55
  "@payloadcms/eslint-config": "3.9.0",
56
- "payload": "3.11.1-canary.54f6c59"
56
+ "payload": "3.11.1-canary.6d7b3c8"
57
57
  },
58
58
  "peerDependencies": {
59
- "payload": "3.11.1-canary.54f6c59"
59
+ "payload": "3.11.1-canary.6d7b3c8"
60
60
  },
61
61
  "scripts": {
62
62
  "build": "pnpm build:swc && pnpm build:types",
63
63
  "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
64
64
  "build:types": "tsc --emitDeclarationOnly --outDir dist",
65
- "clean": "rimraf {dist,*.tsbuildinfo}",
65
+ "clean": "rimraf -g {dist,*.tsbuildinfo}",
66
66
  "lint": "eslint .",
67
67
  "lint:fix": "eslint . --fix"
68
68
  }