@payloadcms/drizzle 4.0.0-internal.c2b57ce → 4.0.0-internal.c6494b5
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/LICENSE.md +1 -1
- package/dist/createTableName.d.ts.map +1 -1
- package/dist/createTableName.js +2 -7
- package/dist/createTableName.js.map +1 -1
- package/dist/exports/postgres.d.ts +4 -0
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +4 -0
- package/dist/exports/postgres.js.map +1 -1
- package/dist/exports/sqlite.d.ts +2 -0
- package/dist/exports/sqlite.d.ts.map +1 -1
- package/dist/exports/sqlite.js +2 -0
- package/dist/exports/sqlite.js.map +1 -1
- package/dist/find/buildFindManyArgs.d.ts.map +1 -1
- package/dist/find/buildPolymorphicJoinQuery.d.ts +38 -0
- package/dist/find/buildPolymorphicJoinQuery.d.ts.map +1 -0
- package/dist/find/buildPolymorphicJoinQuery.js +135 -0
- package/dist/find/buildPolymorphicJoinQuery.js.map +1 -0
- package/dist/find/buildPolymorphicJoinWhere.d.ts +20 -0
- package/dist/find/buildPolymorphicJoinWhere.d.ts.map +1 -0
- package/dist/find/buildPolymorphicJoinWhere.js +301 -0
- package/dist/find/buildPolymorphicJoinWhere.js.map +1 -0
- package/dist/find/createPolymorphicJoinWherePlan.d.ts +37 -0
- package/dist/find/createPolymorphicJoinWherePlan.d.ts.map +1 -0
- package/dist/find/createPolymorphicJoinWherePlan.js +191 -0
- package/dist/find/createPolymorphicJoinWherePlan.js.map +1 -0
- package/dist/find/findMany.d.ts.map +1 -1
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +20 -193
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/index.d.ts +4 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -9
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +41 -15
- package/dist/migrate.js.map +1 -1
- package/dist/migrateDown.d.ts +2 -1
- package/dist/migrateDown.d.ts.map +1 -1
- package/dist/migrateDown.js +17 -4
- package/dist/migrateDown.js.map +1 -1
- package/dist/migrateFresh.d.ts +4 -2
- package/dist/migrateFresh.d.ts.map +1 -1
- package/dist/migrateFresh.js +26 -9
- package/dist/migrateFresh.js.map +1 -1
- package/dist/migrateRefresh.d.ts +2 -1
- package/dist/migrateRefresh.d.ts.map +1 -1
- package/dist/migrateRefresh.js +20 -5
- package/dist/migrateRefresh.js.map +1 -1
- package/dist/migrateReset.d.ts +2 -1
- package/dist/migrateReset.d.ts.map +1 -1
- package/dist/migrateReset.js +18 -4
- package/dist/migrateReset.js.map +1 -1
- package/dist/migrateStatus.d.ts +2 -1
- package/dist/migrateStatus.d.ts.map +1 -1
- package/dist/migrateStatus.js +11 -6
- package/dist/migrateStatus.js.map +1 -1
- package/dist/postgres/createDatabase.d.ts.map +1 -1
- package/dist/postgres/createExtensions.d.ts.map +1 -1
- package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
- package/dist/postgres/createJSONQuery/index.js +3 -3
- package/dist/postgres/createJSONQuery/index.js.map +1 -1
- package/dist/postgres/init.d.ts.map +1 -1
- package/dist/postgres/init.js +6 -0
- package/dist/postgres/init.js.map +1 -1
- package/dist/postgres/predefinedMigrations/localize-status/index.d.ts +11 -0
- package/dist/postgres/predefinedMigrations/localize-status/index.d.ts.map +1 -0
- package/dist/postgres/predefinedMigrations/localize-status/index.js +296 -0
- package/dist/postgres/predefinedMigrations/localize-status/index.js.map +1 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts +13 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js +51 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +13 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js +54 -0
- package/dist/postgres/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts +35 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js +185 -0
- package/dist/postgres/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js +8 -4
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/index.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/fetchAndResave/traverseFields.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/groupUpSQLStatements.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/index.js.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/migrateRelationships.d.ts.map +1 -1
- package/dist/postgres/predefinedMigrations/v2-v3/traverseFields.d.ts.map +1 -1
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts +15 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.d.ts.map +1 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js +25 -0
- package/dist/postgres/query/assertOperatorHandlerExtensionsInstalled.js.map +1 -0
- package/dist/postgres/query/postgresUnaccent.d.ts +13 -0
- package/dist/postgres/query/postgresUnaccent.d.ts.map +1 -0
- package/dist/postgres/query/postgresUnaccent.js +40 -0
- package/dist/postgres/query/postgresUnaccent.js.map +1 -0
- package/dist/postgres/schema/buildDrizzleTable.d.ts.map +1 -1
- package/dist/postgres/schema/geometryColumn.d.ts +2 -2
- package/dist/postgres/schema/geometryColumn.d.ts.map +1 -1
- package/dist/postgres/types.d.ts +13 -2
- package/dist/postgres/types.d.ts.map +1 -1
- package/dist/postgres/types.js.map +1 -1
- package/dist/queries/addJoinTable.d.ts +1 -1
- package/dist/queries/addJoinTable.d.ts.map +1 -1
- package/dist/queries/buildOperatorConstraint.d.ts +22 -0
- package/dist/queries/buildOperatorConstraint.d.ts.map +1 -0
- package/dist/queries/buildOperatorConstraint.js +63 -0
- package/dist/queries/buildOperatorConstraint.js.map +1 -0
- package/dist/queries/buildOrderBy.d.ts +1 -1
- package/dist/queries/buildOrderBy.d.ts.map +1 -1
- package/dist/queries/buildQuery.d.ts.map +1 -1
- package/dist/queries/getTableAlias.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.d.ts +12 -3
- package/dist/queries/getTableColumnFromPath.d.ts.map +1 -1
- package/dist/queries/getTableColumnFromPath.js +61 -29
- package/dist/queries/getTableColumnFromPath.js.map +1 -1
- package/dist/queries/operatorMap.d.ts +7 -3
- package/dist/queries/operatorMap.d.ts.map +1 -1
- package/dist/queries/operatorMap.js.map +1 -1
- package/dist/queries/parseParams.d.ts.map +1 -1
- package/dist/queries/parseParams.js +262 -10
- package/dist/queries/parseParams.js.map +1 -1
- package/dist/queries/resolveRelationshipPath.d.ts +36 -0
- package/dist/queries/resolveRelationshipPath.d.ts.map +1 -0
- package/dist/queries/resolveRelationshipPath.js +66 -0
- package/dist/queries/resolveRelationshipPath.js.map +1 -0
- package/dist/queries/sanitizeQueryValue.d.ts.map +1 -1
- package/dist/queries/selectDistinct.d.ts.map +1 -1
- package/dist/queries/validateOperatorHandlers.d.ts +8 -0
- package/dist/queries/validateOperatorHandlers.d.ts.map +1 -0
- package/dist/queries/validateOperatorHandlers.js +30 -0
- package/dist/queries/validateOperatorHandlers.js.map +1 -0
- package/dist/schema/build.d.ts.map +1 -1
- package/dist/schema/buildDrizzleRelations.d.ts.map +1 -1
- package/dist/schema/buildRawSchema.d.ts.map +1 -1
- package/dist/schema/idToUUID.d.ts.map +1 -1
- package/dist/schema/traverseFields.d.ts.map +1 -1
- package/dist/schema/traverseFields.js +7 -6
- package/dist/schema/traverseFields.js.map +1 -1
- package/dist/schema/withDefault.d.ts.map +1 -1
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +1 -1
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +3 -2
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +1 -1
- package/dist/sqlite/createJSONQuery/index.d.ts.map +1 -1
- package/dist/sqlite/createJSONQuery/index.js +6 -5
- package/dist/sqlite/createJSONQuery/index.js.map +1 -1
- package/dist/sqlite/insert.d.ts.map +1 -1
- package/dist/sqlite/insert.js +4 -1
- package/dist/sqlite/insert.js.map +1 -1
- package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts +28 -0
- package/dist/sqlite/predefinedMigrations/localize-status/index.d.ts.map +1 -0
- package/dist/sqlite/predefinedMigrations/localize-status/index.js +198 -0
- package/dist/sqlite/predefinedMigrations/localize-status/index.js.map +1 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts +12 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.d.ts.map +1 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js +24 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainCollection.js.map +1 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts +12 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.d.ts.map +1 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js +28 -0
- package/dist/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.js.map +1 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts +15 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.d.ts.map +1 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js +114 -0
- package/dist/sqlite/predefinedMigrations/sizes-to-variants/index.js.map +1 -0
- package/dist/transform/read/hasManyNumber.d.ts.map +1 -1
- package/dist/transform/read/hasManyText.d.ts.map +1 -1
- package/dist/transform/read/index.d.ts.map +1 -1
- package/dist/transform/read/relationship.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.d.ts.map +1 -1
- package/dist/transform/read/traverseFields.js +2 -2
- package/dist/transform/read/traverseFields.js.map +1 -1
- package/dist/transform/write/array.d.ts.map +1 -1
- package/dist/transform/write/blocks.d.ts.map +1 -1
- package/dist/transform/write/blocks.js +1 -1
- package/dist/transform/write/blocks.js.map +1 -1
- package/dist/transform/write/index.d.ts.map +1 -1
- package/dist/transform/write/numbers.d.ts.map +1 -1
- package/dist/transform/write/relationships.d.ts.map +1 -1
- package/dist/transform/write/selects.d.ts.map +1 -1
- package/dist/transform/write/texts.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.d.ts.map +1 -1
- package/dist/transform/write/traverseFields.js +9 -16
- package/dist/transform/write/traverseFields.js.map +1 -1
- package/dist/types.d.ts +50 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -3
- package/dist/types.js.map +1 -1
- package/dist/updateJobs.d.ts.map +1 -1
- package/dist/updateJobs.js +37 -0
- package/dist/updateJobs.js.map +1 -1
- package/dist/updateOne.d.ts.map +1 -1
- package/dist/updateOne.js +41 -1
- package/dist/updateOne.js.map +1 -1
- package/dist/upsertRow/deleteExistingArrayRows.d.ts.map +1 -1
- package/dist/upsertRow/deleteExistingRowsByPath.d.ts.map +1 -1
- package/dist/upsertRow/handleUpsertError.d.ts.map +1 -1
- package/dist/upsertRow/handleUpsertError.js +2 -1
- package/dist/upsertRow/handleUpsertError.js.map +1 -1
- package/dist/upsertRow/index.d.ts +1 -1
- package/dist/upsertRow/index.d.ts.map +1 -1
- package/dist/upsertRow/index.js +30 -7
- package/dist/upsertRow/index.js.map +1 -1
- package/dist/upsertRow/insertArrays.d.ts.map +1 -1
- package/dist/upsertRow/insertArrays.js +2 -1
- package/dist/upsertRow/insertArrays.js.map +1 -1
- package/dist/upsertRow/shouldUseOptimizedUpsertRow.d.ts.map +1 -1
- package/dist/utilities/appendPrefixToKeys.d.ts.map +1 -1
- package/dist/utilities/blocksToJsonMigrator.d.ts.map +1 -1
- package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
- package/dist/utilities/buildCreateMigration.js +12 -8
- package/dist/utilities/buildCreateMigration.js.map +1 -1
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts +15 -0
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.d.ts.map +1 -0
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +110 -0
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -0
- package/dist/utilities/buildForeignKeyName.d.ts.map +1 -1
- package/dist/utilities/buildForeignKeyName.js +3 -2
- package/dist/utilities/buildForeignKeyName.js.map +1 -1
- package/dist/utilities/buildIndexName.d.ts.map +1 -1
- package/dist/utilities/buildIndexName.js +3 -2
- package/dist/utilities/buildIndexName.js.map +1 -1
- package/dist/utilities/checkTruncatedIdentifiers.d.ts +13 -0
- package/dist/utilities/checkTruncatedIdentifiers.d.ts.map +1 -0
- package/dist/utilities/checkTruncatedIdentifiers.js +56 -0
- package/dist/utilities/checkTruncatedIdentifiers.js.map +1 -0
- package/dist/utilities/createBlocksMap.d.ts.map +1 -1
- package/dist/utilities/createRelationshipMap.d.ts.map +1 -1
- package/dist/utilities/createSchemaGenerator.d.ts.map +1 -1
- package/dist/utilities/createSchemaGenerator.js +3 -0
- package/dist/utilities/createSchemaGenerator.js.map +1 -1
- package/dist/utilities/escapeSQLValue.d.ts.map +1 -1
- package/dist/utilities/executeSchemaHooks.d.ts.map +1 -1
- package/dist/utilities/extendDrizzleTable.d.ts.map +1 -1
- package/dist/utilities/getArrayRelationName.d.ts.map +1 -1
- package/dist/utilities/getCollectionIdType.d.ts.map +1 -1
- package/dist/utilities/getMigrationTemplate.d.ts.map +1 -1
- package/dist/utilities/getNameFromDrizzleTable.d.ts.map +1 -1
- package/dist/utilities/getPrimaryDb.d.ts +1 -1
- package/dist/utilities/getPrimaryDb.d.ts.map +1 -1
- package/dist/utilities/getSizesToVariantsRenames.d.ts +54 -0
- package/dist/utilities/getSizesToVariantsRenames.d.ts.map +1 -0
- package/dist/utilities/getSizesToVariantsRenames.js +251 -0
- package/dist/utilities/getSizesToVariantsRenames.js.map +1 -0
- package/dist/utilities/getTransaction.d.ts +1 -1
- package/dist/utilities/getTransaction.d.ts.map +1 -1
- package/dist/utilities/hasLocalesTable.d.ts.map +1 -1
- package/dist/utilities/isPolymorphicRelationship.d.ts.map +1 -1
- package/dist/utilities/isUUIDType.d.ts.map +1 -1
- package/dist/utilities/json.d.ts.map +1 -1
- package/dist/utilities/migrationTableExists.d.ts.map +1 -1
- package/dist/utilities/parseError.d.ts.map +1 -1
- package/dist/utilities/parseJSONPathSegment.d.ts +9 -0
- package/dist/utilities/parseJSONPathSegment.d.ts.map +1 -0
- package/dist/utilities/parseJSONPathSegment.js +17 -0
- package/dist/utilities/parseJSONPathSegment.js.map +1 -0
- package/dist/utilities/pushDevSchema.d.ts.map +1 -1
- package/dist/utilities/rawConstraint.d.ts.map +1 -1
- package/dist/utilities/sanitizePathSegment.d.ts.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts +1 -5
- package/dist/utilities/validateExistingBlockIsIdentical.d.ts.map +1 -1
- package/dist/utilities/validateExistingBlockIsIdentical.js.map +1 -1
- package/dist/utilities/validateIdentifierLength.d.ts +12 -0
- package/dist/utilities/validateIdentifierLength.d.ts.map +1 -0
- package/dist/utilities/validateIdentifierLength.js +18 -0
- package/dist/utilities/validateIdentifierLength.js.map +1 -0
- package/package.json +3 -3
- package/dist/find/chainMethods.d.ts +0 -20
- package/dist/find/chainMethods.d.ts.map +0 -1
- package/dist/find/chainMethods.js +0 -16
- package/dist/find/chainMethods.js.map +0 -1
- package/dist/utilities/isValidStringID.spec.js +0 -15
- package/dist/utilities/isValidStringID.spec.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite/insert.ts"],"sourcesContent":["import type { BaseSQLiteAdapter, Insert } from './types.js'\n\nexport const insert: Insert = async function (\n // Here 'this' is not a parameter. See:\n // https://www.typescriptlang.org/docs/handbook/2/classes.html#this-parameters\n this: BaseSQLiteAdapter,\n { db, onConflictDoUpdate, tableName, values },\n): Promise<Record<string, unknown>[]> {\n const table = this.tables[tableName]\n\n // Batch insert if limitedBoundParameters: true\n if (this.limitedBoundParameters && Array.isArray(values)) {\n const results: Record<string, unknown>[] = []\n const colsPerRow = Object.keys(
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite/insert.ts"],"sourcesContent":["import { getTableColumns } from 'drizzle-orm'\n\nimport type { BaseSQLiteAdapter, Insert } from './types.js'\n\nexport const insert: Insert = async function (\n // Here 'this' is not a parameter. See:\n // https://www.typescriptlang.org/docs/handbook/2/classes.html#this-parameters\n this: BaseSQLiteAdapter,\n { db, onConflictDoUpdate, tableName, values },\n): Promise<Record<string, unknown>[]> {\n const table = this.tables[tableName]\n\n // Batch insert if limitedBoundParameters: true\n if (this.limitedBoundParameters && Array.isArray(values)) {\n const results: Record<string, unknown>[] = []\n // Drizzle emits a value for every table column per row, not just the keys present on the row —\n // omitted columns fall back to their default / defaultFn, which is also a bound parameter\n const colsPerRow = Math.max(1, Object.keys(getTableColumns(table)).length)\n const maxParams = 100\n const maxRowsPerBatch = Math.max(1, Math.floor(maxParams / colsPerRow))\n\n for (let i = 0; i < values.length; i += maxRowsPerBatch) {\n const batch = values.slice(i, i + maxRowsPerBatch)\n\n const batchResult = onConflictDoUpdate\n ? await db.insert(table).values(batch).onConflictDoUpdate(onConflictDoUpdate).returning()\n : await db.insert(table).values(batch).returning()\n\n results.push(...(batchResult as Record<string, unknown>[]))\n }\n\n return results\n }\n\n const result = onConflictDoUpdate\n ? await db.insert(table).values(values).onConflictDoUpdate(onConflictDoUpdate).returning()\n : await db.insert(table).values(values).returning()\n\n // See https://github.com/payloadcms/payload/pull/11831#discussion_r2010431908\n return result as Record<string, unknown>[]\n}\n"],"names":["getTableColumns","insert","db","onConflictDoUpdate","tableName","values","table","tables","limitedBoundParameters","Array","isArray","results","colsPerRow","Math","max","Object","keys","length","maxParams","maxRowsPerBatch","floor","i","batch","slice","batchResult","returning","push","result"],"mappings":"AAAA,SAASA,eAAe,QAAQ,cAAa;AAI7C,OAAO,MAAMC,SAAiB,eAI5B,EAAEC,EAAE,EAAEC,kBAAkB,EAAEC,SAAS,EAAEC,MAAM,EAAE;IAE7C,MAAMC,QAAQ,IAAI,CAACC,MAAM,CAACH,UAAU;IAEpC,+CAA+C;IAC/C,IAAI,IAAI,CAACI,sBAAsB,IAAIC,MAAMC,OAAO,CAACL,SAAS;QACxD,MAAMM,UAAqC,EAAE;QAC7C,+FAA+F;QAC/F,0FAA0F;QAC1F,MAAMC,aAAaC,KAAKC,GAAG,CAAC,GAAGC,OAAOC,IAAI,CAAChB,gBAAgBM,QAAQW,MAAM;QACzE,MAAMC,YAAY;QAClB,MAAMC,kBAAkBN,KAAKC,GAAG,CAAC,GAAGD,KAAKO,KAAK,CAACF,YAAYN;QAE3D,IAAK,IAAIS,IAAI,GAAGA,IAAIhB,OAAOY,MAAM,EAAEI,KAAKF,gBAAiB;YACvD,MAAMG,QAAQjB,OAAOkB,KAAK,CAACF,GAAGA,IAAIF;YAElC,MAAMK,cAAcrB,qBAChB,MAAMD,GAAGD,MAAM,CAACK,OAAOD,MAAM,CAACiB,OAAOnB,kBAAkB,CAACA,oBAAoBsB,SAAS,KACrF,MAAMvB,GAAGD,MAAM,CAACK,OAAOD,MAAM,CAACiB,OAAOG,SAAS;YAElDd,QAAQe,IAAI,IAAKF;QACnB;QAEA,OAAOb;IACT;IAEA,MAAMgB,SAASxB,qBACX,MAAMD,GAAGD,MAAM,CAACK,OAAOD,MAAM,CAACA,QAAQF,kBAAkB,CAACA,oBAAoBsB,SAAS,KACtF,MAAMvB,GAAGD,MAAM,CAACK,OAAOD,MAAM,CAACA,QAAQoB,SAAS;IAEnD,8EAA8E;IAC9E,OAAOE;AACT,EAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
export type LocalizeStatusArgs = {
|
|
3
|
+
collectionSlug?: string;
|
|
4
|
+
db: any;
|
|
5
|
+
globalSlug?: string;
|
|
6
|
+
payload: Payload;
|
|
7
|
+
req?: any;
|
|
8
|
+
};
|
|
9
|
+
export declare function migrateSqliteLocalizeStatus(args: LocalizeStatusArgs): Promise<void>;
|
|
10
|
+
/**
|
|
11
|
+
* Drops a column, first removing any indexes that reference it. SQLite refuses to
|
|
12
|
+
* drop a column that is still referenced by an index.
|
|
13
|
+
*/
|
|
14
|
+
export declare function dropColumn({ columnName, db, tableName, }: {
|
|
15
|
+
columnName: string;
|
|
16
|
+
db: any;
|
|
17
|
+
tableName: string;
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
export declare function columnExists({ columnName, db, tableName, }: {
|
|
20
|
+
columnName: string;
|
|
21
|
+
db: any;
|
|
22
|
+
tableName: string;
|
|
23
|
+
}): Promise<boolean>;
|
|
24
|
+
export declare function tableExists({ db, tableName, }: {
|
|
25
|
+
db: any;
|
|
26
|
+
tableName: string;
|
|
27
|
+
}): Promise<boolean>;
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sqlite/predefinedMigrations/localize-status/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAStC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,EAAE,EAAE,GAAG,CAAA;IACP,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,GAAG,CAAA;CACV,CAAA;AAED,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2LzF;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,EAC/B,UAAU,EACV,EAAE,EACF,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,GAAG,CAAA;IACP,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhB;AAED,wBAAsB,YAAY,CAAC,EACjC,UAAU,EACV,EAAE,EACF,SAAS,GACV,EAAE;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,GAAG,CAAA;IACP,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB;AAED,wBAAsB,WAAW,CAAC,EAChC,EAAE,EACF,SAAS,GACV,EAAE;IACD,EAAE,EAAE,GAAG,CAAA;IACP,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnB"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
|
+
import { calculateVersionLocaleStatuses } from 'payload/migrations';
|
|
3
|
+
import toSnakeCase from 'to-snake-case';
|
|
4
|
+
import { migrateMainCollectionStatus } from './migrateMainCollection.js';
|
|
5
|
+
import { migrateMainGlobalStatus } from './migrateMainGlobal.js';
|
|
6
|
+
export async function migrateSqliteLocalizeStatus(args) {
|
|
7
|
+
const { collectionSlug, db, globalSlug, payload, req } = args;
|
|
8
|
+
if (!collectionSlug && !globalSlug) {
|
|
9
|
+
throw new Error('Either collectionSlug or globalSlug must be provided');
|
|
10
|
+
}
|
|
11
|
+
if (collectionSlug && globalSlug) {
|
|
12
|
+
throw new Error('Cannot provide both collectionSlug and globalSlug');
|
|
13
|
+
}
|
|
14
|
+
const entitySlug = collectionSlug || globalSlug;
|
|
15
|
+
const versionsTable = collectionSlug ? `_${toSnakeCase(collectionSlug)}_v` : `_${toSnakeCase(globalSlug)}_v`;
|
|
16
|
+
const localesTable = `${versionsTable}_locales`;
|
|
17
|
+
if (!payload.config.localization) {
|
|
18
|
+
throw new Error('Localization is not enabled in payload config');
|
|
19
|
+
}
|
|
20
|
+
// Check if versions are enabled on this collection/global
|
|
21
|
+
let entityConfig;
|
|
22
|
+
if (collectionSlug) {
|
|
23
|
+
entityConfig = payload.config.collections.find((c)=>c.slug === collectionSlug);
|
|
24
|
+
} else if (globalSlug) {
|
|
25
|
+
entityConfig = payload.config.globals.find((g)=>g.slug === globalSlug);
|
|
26
|
+
}
|
|
27
|
+
if (!entityConfig) {
|
|
28
|
+
throw new Error(`${collectionSlug ? 'Collection' : 'Global'} not found: ${collectionSlug || globalSlug}`);
|
|
29
|
+
}
|
|
30
|
+
payload.logger.info({
|
|
31
|
+
msg: `Starting _status localization migration for ${collectionSlug ? 'collection' : 'global'}: ${entitySlug}`
|
|
32
|
+
});
|
|
33
|
+
// Get filtered locales if filterAvailableLocales is defined
|
|
34
|
+
let locales = payload.config.localization.localeCodes;
|
|
35
|
+
if (typeof payload.config.localization.filterAvailableLocales === 'function') {
|
|
36
|
+
const filteredLocaleObjects = await payload.config.localization.filterAvailableLocales({
|
|
37
|
+
locales: payload.config.localization.locales,
|
|
38
|
+
req
|
|
39
|
+
});
|
|
40
|
+
locales = filteredLocaleObjects.map((locale)=>typeof locale === 'string' ? locale : locale.code);
|
|
41
|
+
}
|
|
42
|
+
payload.logger.info({
|
|
43
|
+
msg: `Locales: ${locales.join(', ')}`
|
|
44
|
+
});
|
|
45
|
+
// Check if versions are enabled in config (skip if not)
|
|
46
|
+
if (!entityConfig.versions) {
|
|
47
|
+
payload.logger.info({
|
|
48
|
+
msg: `Skipping migration for ${collectionSlug ? 'collection' : 'global'}: ${entitySlug} - versions not enabled`
|
|
49
|
+
});
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// Validate that version__status column exists before proceeding
|
|
53
|
+
if (!await columnExists({
|
|
54
|
+
columnName: 'version__status',
|
|
55
|
+
db,
|
|
56
|
+
tableName: versionsTable
|
|
57
|
+
})) {
|
|
58
|
+
throw new Error(`Migration aborted: version__status column not found in ${versionsTable} table. ` + `This migration should only run on schemas that have NOT yet been migrated to per-locale status. ` + `If you've already run this migration, no action is needed.`);
|
|
59
|
+
}
|
|
60
|
+
const localesTableExists = await tableExists({
|
|
61
|
+
db,
|
|
62
|
+
tableName: localesTable
|
|
63
|
+
});
|
|
64
|
+
if (!localesTableExists) {
|
|
65
|
+
// SCENARIO 1: Create the locales table (first localized field in versions)
|
|
66
|
+
payload.logger.info({
|
|
67
|
+
msg: `Creating new locales table: ${localesTable}`
|
|
68
|
+
});
|
|
69
|
+
await db.run(sql.raw(`CREATE TABLE "${localesTable}" (
|
|
70
|
+
id INTEGER PRIMARY KEY,
|
|
71
|
+
_locale TEXT NOT NULL,
|
|
72
|
+
_parent_id INTEGER NOT NULL,
|
|
73
|
+
version__status TEXT,
|
|
74
|
+
UNIQUE(_locale, _parent_id),
|
|
75
|
+
FOREIGN KEY (_parent_id) REFERENCES "${versionsTable}"(id) ON DELETE CASCADE
|
|
76
|
+
)`));
|
|
77
|
+
for (const locale of locales){
|
|
78
|
+
const inserted = await db.all(sql.raw(`INSERT INTO "${localesTable}" (_locale, _parent_id, version__status) SELECT '${locale}', id, version__status FROM "${versionsTable}" RETURNING id`));
|
|
79
|
+
payload.logger.info({
|
|
80
|
+
msg: `Inserted ${inserted.length} rows for locale: ${locale}`
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
} else {
|
|
84
|
+
// SCENARIO 2: Add version__status column to existing locales table
|
|
85
|
+
payload.logger.info({
|
|
86
|
+
msg: `Adding version__status column to existing table: ${localesTable}`
|
|
87
|
+
});
|
|
88
|
+
await db.run(sql.raw(`ALTER TABLE "${localesTable}" ADD COLUMN version__status TEXT`));
|
|
89
|
+
payload.logger.info({
|
|
90
|
+
msg: 'Processing version history to determine status per locale...'
|
|
91
|
+
});
|
|
92
|
+
const existingLocaleRows = await db.all(sql.raw(`SELECT DISTINCT _locale FROM "${localesTable}" ORDER BY _locale`));
|
|
93
|
+
const existingLocales = existingLocaleRows.map((row)=>row._locale);
|
|
94
|
+
payload.logger.info({
|
|
95
|
+
msg: `Found existing locales in table: ${existingLocales.join(', ')}`
|
|
96
|
+
});
|
|
97
|
+
// Check if the snapshot column exists (only present on DBs that used publishSpecificLocale)
|
|
98
|
+
const hasSnapshotColumn = await columnExists({
|
|
99
|
+
columnName: 'snapshot',
|
|
100
|
+
db,
|
|
101
|
+
tableName: versionsTable
|
|
102
|
+
});
|
|
103
|
+
const versionRows = await db.all(sql.raw(hasSnapshotColumn ? `SELECT id, parent_id as parent, version__status as _status, published_locale, snapshot, created_at FROM "${versionsTable}" ORDER BY parent_id, created_at ASC` : `SELECT id, parent_id as parent, version__status as _status, published_locale, created_at FROM "${versionsTable}" ORDER BY parent_id, created_at ASC`));
|
|
104
|
+
const versionLocaleStatus = calculateVersionLocaleStatuses(versionRows, existingLocales, payload);
|
|
105
|
+
payload.logger.info({
|
|
106
|
+
msg: 'Updating locales table with calculated statuses...'
|
|
107
|
+
});
|
|
108
|
+
let updateCount = 0;
|
|
109
|
+
for (const [versionId, localeMap] of versionLocaleStatus.entries()){
|
|
110
|
+
for (const [locale, status] of localeMap.entries()){
|
|
111
|
+
await db.run(sql.raw(`UPDATE "${localesTable}" SET version__status = '${status}' WHERE _parent_id = ${versionId} AND _locale = '${locale}'`));
|
|
112
|
+
updateCount++;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
payload.logger.info({
|
|
116
|
+
msg: `Updated ${updateCount} locale rows with status`
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
// Drop the old version__status column from the versions table
|
|
120
|
+
await dropColumn({
|
|
121
|
+
columnName: 'version__status',
|
|
122
|
+
db,
|
|
123
|
+
tableName: versionsTable
|
|
124
|
+
});
|
|
125
|
+
// Migrate main table _status to locales table
|
|
126
|
+
const mainTable = collectionSlug ? toSnakeCase(collectionSlug) : toSnakeCase(globalSlug);
|
|
127
|
+
const mainLocalesTable = `${mainTable}_locales`;
|
|
128
|
+
if (await tableExists({
|
|
129
|
+
db,
|
|
130
|
+
tableName: mainLocalesTable
|
|
131
|
+
})) {
|
|
132
|
+
if (!await columnExists({
|
|
133
|
+
columnName: '_status',
|
|
134
|
+
db,
|
|
135
|
+
tableName: mainLocalesTable
|
|
136
|
+
})) {
|
|
137
|
+
await db.run(sql.raw(`ALTER TABLE "${mainLocalesTable}" ADD COLUMN _status TEXT DEFAULT 'draft'`));
|
|
138
|
+
}
|
|
139
|
+
if (collectionSlug) {
|
|
140
|
+
await migrateMainCollectionStatus({
|
|
141
|
+
collectionSlug,
|
|
142
|
+
db,
|
|
143
|
+
locales,
|
|
144
|
+
payload,
|
|
145
|
+
versionsTable
|
|
146
|
+
});
|
|
147
|
+
} else if (globalSlug) {
|
|
148
|
+
await migrateMainGlobalStatus({
|
|
149
|
+
db,
|
|
150
|
+
globalSlug,
|
|
151
|
+
locales,
|
|
152
|
+
payload,
|
|
153
|
+
versionsTable
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
payload.logger.info({
|
|
158
|
+
msg: `No locales table found: ${mainLocalesTable} (collection/global not localized)`
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// Drop _status from main table if it exists (it will be in locales table now)
|
|
162
|
+
if (await columnExists({
|
|
163
|
+
columnName: '_status',
|
|
164
|
+
db,
|
|
165
|
+
tableName: mainTable
|
|
166
|
+
})) {
|
|
167
|
+
await dropColumn({
|
|
168
|
+
columnName: '_status',
|
|
169
|
+
db,
|
|
170
|
+
tableName: mainTable
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
payload.logger.info({
|
|
174
|
+
msg: 'Migration completed successfully'
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Drops a column, first removing any indexes that reference it. SQLite refuses to
|
|
179
|
+
* drop a column that is still referenced by an index.
|
|
180
|
+
*/ export async function dropColumn({ columnName, db, tableName }) {
|
|
181
|
+
const indexes = await db.all(sql.raw(`SELECT name, sql FROM sqlite_master WHERE type='index' AND tbl_name='${tableName}'`));
|
|
182
|
+
for (const index of indexes){
|
|
183
|
+
if (typeof index.sql === 'string' && index.sql.includes(columnName)) {
|
|
184
|
+
await db.run(sql.raw(`DROP INDEX IF EXISTS "${index.name}"`));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
await db.run(sql.raw(`ALTER TABLE "${tableName}" DROP COLUMN ${columnName}`));
|
|
188
|
+
}
|
|
189
|
+
export async function columnExists({ columnName, db, tableName }) {
|
|
190
|
+
const result = await db.all(sql.raw(`SELECT COUNT(*) as count FROM pragma_table_info('${tableName}') WHERE name = '${columnName}'`));
|
|
191
|
+
return Number(result[0]?.count ?? 0) > 0;
|
|
192
|
+
}
|
|
193
|
+
export async function tableExists({ db, tableName }) {
|
|
194
|
+
const result = await db.all(sql.raw(`SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name='${tableName}'`));
|
|
195
|
+
return Number(result[0]?.count ?? 0) > 0;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/sqlite/predefinedMigrations/localize-status/index.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport { calculateVersionLocaleStatuses } from 'payload/migrations'\nimport toSnakeCase from 'to-snake-case'\n\nimport { migrateMainCollectionStatus } from './migrateMainCollection.js'\nimport { migrateMainGlobalStatus } from './migrateMainGlobal.js'\n\nexport type LocalizeStatusArgs = {\n collectionSlug?: string\n db: any\n globalSlug?: string\n payload: Payload\n req?: any\n}\n\nexport async function migrateSqliteLocalizeStatus(args: LocalizeStatusArgs): Promise<void> {\n const { collectionSlug, db, globalSlug, payload, req } = args\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n if (collectionSlug && globalSlug) {\n throw new Error('Cannot provide both collectionSlug and globalSlug')\n }\n\n const entitySlug = collectionSlug || globalSlug\n const versionsTable = collectionSlug\n ? `_${toSnakeCase(collectionSlug)}_v`\n : `_${toSnakeCase(globalSlug)}_v`\n const localesTable = `${versionsTable}_locales`\n\n if (!payload.config.localization) {\n throw new Error('Localization is not enabled in payload config')\n }\n\n // Check if versions are enabled on this collection/global\n let entityConfig\n if (collectionSlug) {\n entityConfig = payload.config.collections.find((c) => c.slug === collectionSlug)\n } else if (globalSlug) {\n entityConfig = payload.config.globals.find((g) => g.slug === globalSlug)\n }\n\n if (!entityConfig) {\n throw new Error(\n `${collectionSlug ? 'Collection' : 'Global'} not found: ${collectionSlug || globalSlug}`,\n )\n }\n\n payload.logger.info({\n msg: `Starting _status localization migration for ${collectionSlug ? 'collection' : 'global'}: ${entitySlug}`,\n })\n\n // Get filtered locales if filterAvailableLocales is defined\n let locales = payload.config.localization.localeCodes\n if (typeof payload.config.localization.filterAvailableLocales === 'function') {\n const filteredLocaleObjects = await payload.config.localization.filterAvailableLocales({\n locales: payload.config.localization.locales,\n req,\n })\n locales = filteredLocaleObjects.map((locale) =>\n typeof locale === 'string' ? locale : locale.code,\n )\n }\n payload.logger.info({ msg: `Locales: ${locales.join(', ')}` })\n\n // Check if versions are enabled in config (skip if not)\n if (!entityConfig.versions) {\n payload.logger.info({\n msg: `Skipping migration for ${collectionSlug ? 'collection' : 'global'}: ${entitySlug} - versions not enabled`,\n })\n return\n }\n\n // Validate that version__status column exists before proceeding\n if (!(await columnExists({ columnName: 'version__status', db, tableName: versionsTable }))) {\n throw new Error(\n `Migration aborted: version__status column not found in ${versionsTable} table. ` +\n `This migration should only run on schemas that have NOT yet been migrated to per-locale status. ` +\n `If you've already run this migration, no action is needed.`,\n )\n }\n\n const localesTableExists = await tableExists({ db, tableName: localesTable })\n\n if (!localesTableExists) {\n // SCENARIO 1: Create the locales table (first localized field in versions)\n payload.logger.info({ msg: `Creating new locales table: ${localesTable}` })\n\n await db.run(\n sql.raw(`CREATE TABLE \"${localesTable}\" (\n id INTEGER PRIMARY KEY,\n _locale TEXT NOT NULL,\n _parent_id INTEGER NOT NULL,\n version__status TEXT,\n UNIQUE(_locale, _parent_id),\n FOREIGN KEY (_parent_id) REFERENCES \"${versionsTable}\"(id) ON DELETE CASCADE\n )`),\n )\n\n for (const locale of locales) {\n const inserted: any[] = await db.all(\n sql.raw(\n `INSERT INTO \"${localesTable}\" (_locale, _parent_id, version__status) SELECT '${locale}', id, version__status FROM \"${versionsTable}\" RETURNING id`,\n ),\n )\n payload.logger.info({\n msg: `Inserted ${inserted.length} rows for locale: ${locale}`,\n })\n }\n } else {\n // SCENARIO 2: Add version__status column to existing locales table\n payload.logger.info({ msg: `Adding version__status column to existing table: ${localesTable}` })\n\n await db.run(sql.raw(`ALTER TABLE \"${localesTable}\" ADD COLUMN version__status TEXT`))\n\n payload.logger.info({ msg: 'Processing version history to determine status per locale...' })\n\n const existingLocaleRows: any[] = await db.all(\n sql.raw(`SELECT DISTINCT _locale FROM \"${localesTable}\" ORDER BY _locale`),\n )\n const existingLocales = existingLocaleRows.map((row: any) => row._locale as string)\n payload.logger.info({\n msg: `Found existing locales in table: ${existingLocales.join(', ')}`,\n })\n\n // Check if the snapshot column exists (only present on DBs that used publishSpecificLocale)\n const hasSnapshotColumn = await columnExists({\n columnName: 'snapshot',\n db,\n tableName: versionsTable,\n })\n\n const versionRows: any[] = await db.all(\n sql.raw(\n hasSnapshotColumn\n ? `SELECT id, parent_id as parent, version__status as _status, published_locale, snapshot, created_at FROM \"${versionsTable}\" ORDER BY parent_id, created_at ASC`\n : `SELECT id, parent_id as parent, version__status as _status, published_locale, created_at FROM \"${versionsTable}\" ORDER BY parent_id, created_at ASC`,\n ),\n )\n\n const versionLocaleStatus = calculateVersionLocaleStatuses(\n versionRows,\n existingLocales,\n payload,\n )\n\n payload.logger.info({ msg: 'Updating locales table with calculated statuses...' })\n\n let updateCount = 0\n for (const [versionId, localeMap] of versionLocaleStatus.entries()) {\n for (const [locale, status] of localeMap.entries()) {\n await db.run(\n sql.raw(\n `UPDATE \"${localesTable}\" SET version__status = '${status}' WHERE _parent_id = ${versionId} AND _locale = '${locale}'`,\n ),\n )\n updateCount++\n }\n }\n\n payload.logger.info({ msg: `Updated ${updateCount} locale rows with status` })\n }\n\n // Drop the old version__status column from the versions table\n await dropColumn({ columnName: 'version__status', db, tableName: versionsTable })\n\n // Migrate main table _status to locales table\n const mainTable = collectionSlug ? toSnakeCase(collectionSlug) : toSnakeCase(globalSlug)\n const mainLocalesTable = `${mainTable}_locales`\n\n if (await tableExists({ db, tableName: mainLocalesTable })) {\n if (!(await columnExists({ columnName: '_status', db, tableName: mainLocalesTable }))) {\n await db.run(\n sql.raw(`ALTER TABLE \"${mainLocalesTable}\" ADD COLUMN _status TEXT DEFAULT 'draft'`),\n )\n }\n\n if (collectionSlug) {\n await migrateMainCollectionStatus({\n collectionSlug,\n db,\n locales,\n payload,\n versionsTable,\n })\n } else if (globalSlug) {\n await migrateMainGlobalStatus({ db, globalSlug, locales, payload, versionsTable })\n }\n } else {\n payload.logger.info({\n msg: `No locales table found: ${mainLocalesTable} (collection/global not localized)`,\n })\n }\n\n // Drop _status from main table if it exists (it will be in locales table now)\n if (await columnExists({ columnName: '_status', db, tableName: mainTable })) {\n await dropColumn({ columnName: '_status', db, tableName: mainTable })\n }\n\n payload.logger.info({ msg: 'Migration completed successfully' })\n}\n\n/**\n * Drops a column, first removing any indexes that reference it. SQLite refuses to\n * drop a column that is still referenced by an index.\n */\nexport async function dropColumn({\n columnName,\n db,\n tableName,\n}: {\n columnName: string\n db: any\n tableName: string\n}): Promise<void> {\n const indexes = await db.all(\n sql.raw(`SELECT name, sql FROM sqlite_master WHERE type='index' AND tbl_name='${tableName}'`),\n )\n\n for (const index of indexes as Array<{ name: string; sql: null | string }>) {\n if (typeof index.sql === 'string' && index.sql.includes(columnName)) {\n await db.run(sql.raw(`DROP INDEX IF EXISTS \"${index.name}\"`))\n }\n }\n\n await db.run(sql.raw(`ALTER TABLE \"${tableName}\" DROP COLUMN ${columnName}`))\n}\n\nexport async function columnExists({\n columnName,\n db,\n tableName,\n}: {\n columnName: string\n db: any\n tableName: string\n}): Promise<boolean> {\n const result = await db.all(\n sql.raw(\n `SELECT COUNT(*) as count FROM pragma_table_info('${tableName}') WHERE name = '${columnName}'`,\n ),\n )\n return Number(result[0]?.count ?? 0) > 0\n}\n\nexport async function tableExists({\n db,\n tableName,\n}: {\n db: any\n tableName: string\n}): Promise<boolean> {\n const result = await db.all(\n sql.raw(\n `SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name='${tableName}'`,\n ),\n )\n return Number(result[0]?.count ?? 0) > 0\n}\n"],"names":["sql","calculateVersionLocaleStatuses","toSnakeCase","migrateMainCollectionStatus","migrateMainGlobalStatus","migrateSqliteLocalizeStatus","args","collectionSlug","db","globalSlug","payload","req","Error","entitySlug","versionsTable","localesTable","config","localization","entityConfig","collections","find","c","slug","globals","g","logger","info","msg","locales","localeCodes","filterAvailableLocales","filteredLocaleObjects","map","locale","code","join","versions","columnExists","columnName","tableName","localesTableExists","tableExists","run","raw","inserted","all","length","existingLocaleRows","existingLocales","row","_locale","hasSnapshotColumn","versionRows","versionLocaleStatus","updateCount","versionId","localeMap","entries","status","dropColumn","mainTable","mainLocalesTable","indexes","index","includes","name","result","Number","count"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,SAASC,8BAA8B,QAAQ,qBAAoB;AACnE,OAAOC,iBAAiB,gBAAe;AAEvC,SAASC,2BAA2B,QAAQ,6BAA4B;AACxE,SAASC,uBAAuB,QAAQ,yBAAwB;AAUhE,OAAO,eAAeC,4BAA4BC,IAAwB;IACxE,MAAM,EAAEC,cAAc,EAAEC,EAAE,EAAEC,UAAU,EAAEC,OAAO,EAAEC,GAAG,EAAE,GAAGL;IAEzD,IAAI,CAACC,kBAAkB,CAACE,YAAY;QAClC,MAAM,IAAIG,MAAM;IAClB;IAEA,IAAIL,kBAAkBE,YAAY;QAChC,MAAM,IAAIG,MAAM;IAClB;IAEA,MAAMC,aAAaN,kBAAkBE;IACrC,MAAMK,gBAAgBP,iBAClB,CAAC,CAAC,EAAEL,YAAYK,gBAAgB,EAAE,CAAC,GACnC,CAAC,CAAC,EAAEL,YAAYO,YAAY,EAAE,CAAC;IACnC,MAAMM,eAAe,GAAGD,cAAc,QAAQ,CAAC;IAE/C,IAAI,CAACJ,QAAQM,MAAM,CAACC,YAAY,EAAE;QAChC,MAAM,IAAIL,MAAM;IAClB;IAEA,0DAA0D;IAC1D,IAAIM;IACJ,IAAIX,gBAAgB;QAClBW,eAAeR,QAAQM,MAAM,CAACG,WAAW,CAACC,IAAI,CAAC,CAACC,IAAMA,EAAEC,IAAI,KAAKf;IACnE,OAAO,IAAIE,YAAY;QACrBS,eAAeR,QAAQM,MAAM,CAACO,OAAO,CAACH,IAAI,CAAC,CAACI,IAAMA,EAAEF,IAAI,KAAKb;IAC/D;IAEA,IAAI,CAACS,cAAc;QACjB,MAAM,IAAIN,MACR,GAAGL,iBAAiB,eAAe,SAAS,YAAY,EAAEA,kBAAkBE,YAAY;IAE5F;IAEAC,QAAQe,MAAM,CAACC,IAAI,CAAC;QAClBC,KAAK,CAAC,4CAA4C,EAAEpB,iBAAiB,eAAe,SAAS,EAAE,EAAEM,YAAY;IAC/G;IAEA,4DAA4D;IAC5D,IAAIe,UAAUlB,QAAQM,MAAM,CAACC,YAAY,CAACY,WAAW;IACrD,IAAI,OAAOnB,QAAQM,MAAM,CAACC,YAAY,CAACa,sBAAsB,KAAK,YAAY;QAC5E,MAAMC,wBAAwB,MAAMrB,QAAQM,MAAM,CAACC,YAAY,CAACa,sBAAsB,CAAC;YACrFF,SAASlB,QAAQM,MAAM,CAACC,YAAY,CAACW,OAAO;YAC5CjB;QACF;QACAiB,UAAUG,sBAAsBC,GAAG,CAAC,CAACC,SACnC,OAAOA,WAAW,WAAWA,SAASA,OAAOC,IAAI;IAErD;IACAxB,QAAQe,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,SAAS,EAAEC,QAAQO,IAAI,CAAC,OAAO;IAAC;IAE5D,wDAAwD;IACxD,IAAI,CAACjB,aAAakB,QAAQ,EAAE;QAC1B1B,QAAQe,MAAM,CAACC,IAAI,CAAC;YAClBC,KAAK,CAAC,uBAAuB,EAAEpB,iBAAiB,eAAe,SAAS,EAAE,EAAEM,WAAW,uBAAuB,CAAC;QACjH;QACA;IACF;IAEA,gEAAgE;IAChE,IAAI,CAAE,MAAMwB,aAAa;QAAEC,YAAY;QAAmB9B;QAAI+B,WAAWzB;IAAc,IAAK;QAC1F,MAAM,IAAIF,MACR,CAAC,uDAAuD,EAAEE,cAAc,QAAQ,CAAC,GAC/E,CAAC,gGAAgG,CAAC,GAClG,CAAC,0DAA0D,CAAC;IAElE;IAEA,MAAM0B,qBAAqB,MAAMC,YAAY;QAAEjC;QAAI+B,WAAWxB;IAAa;IAE3E,IAAI,CAACyB,oBAAoB;QACvB,2EAA2E;QAC3E9B,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,4BAA4B,EAAEZ,cAAc;QAAC;QAEzE,MAAMP,GAAGkC,GAAG,CACV1C,IAAI2C,GAAG,CAAC,CAAC,cAAc,EAAE5B,aAAa;;;;;;6CAMC,EAAED,cAAc;OACtD,CAAC;QAGJ,KAAK,MAAMmB,UAAUL,QAAS;YAC5B,MAAMgB,WAAkB,MAAMpC,GAAGqC,GAAG,CAClC7C,IAAI2C,GAAG,CACL,CAAC,aAAa,EAAE5B,aAAa,iDAAiD,EAAEkB,OAAO,6BAA6B,EAAEnB,cAAc,cAAc,CAAC;YAGvJJ,QAAQe,MAAM,CAACC,IAAI,CAAC;gBAClBC,KAAK,CAAC,SAAS,EAAEiB,SAASE,MAAM,CAAC,kBAAkB,EAAEb,QAAQ;YAC/D;QACF;IACF,OAAO;QACL,mEAAmE;QACnEvB,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,iDAAiD,EAAEZ,cAAc;QAAC;QAE9F,MAAMP,GAAGkC,GAAG,CAAC1C,IAAI2C,GAAG,CAAC,CAAC,aAAa,EAAE5B,aAAa,iCAAiC,CAAC;QAEpFL,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAA+D;QAE1F,MAAMoB,qBAA4B,MAAMvC,GAAGqC,GAAG,CAC5C7C,IAAI2C,GAAG,CAAC,CAAC,8BAA8B,EAAE5B,aAAa,kBAAkB,CAAC;QAE3E,MAAMiC,kBAAkBD,mBAAmBf,GAAG,CAAC,CAACiB,MAAaA,IAAIC,OAAO;QACxExC,QAAQe,MAAM,CAACC,IAAI,CAAC;YAClBC,KAAK,CAAC,iCAAiC,EAAEqB,gBAAgBb,IAAI,CAAC,OAAO;QACvE;QAEA,4FAA4F;QAC5F,MAAMgB,oBAAoB,MAAMd,aAAa;YAC3CC,YAAY;YACZ9B;YACA+B,WAAWzB;QACb;QAEA,MAAMsC,cAAqB,MAAM5C,GAAGqC,GAAG,CACrC7C,IAAI2C,GAAG,CACLQ,oBACI,CAAC,yGAAyG,EAAErC,cAAc,oCAAoC,CAAC,GAC/J,CAAC,+FAA+F,EAAEA,cAAc,oCAAoC,CAAC;QAI7J,MAAMuC,sBAAsBpD,+BAC1BmD,aACAJ,iBACAtC;QAGFA,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK;QAAqD;QAEhF,IAAI2B,cAAc;QAClB,KAAK,MAAM,CAACC,WAAWC,UAAU,IAAIH,oBAAoBI,OAAO,GAAI;YAClE,KAAK,MAAM,CAACxB,QAAQyB,OAAO,IAAIF,UAAUC,OAAO,GAAI;gBAClD,MAAMjD,GAAGkC,GAAG,CACV1C,IAAI2C,GAAG,CACL,CAAC,QAAQ,EAAE5B,aAAa,yBAAyB,EAAE2C,OAAO,qBAAqB,EAAEH,UAAU,gBAAgB,EAAEtB,OAAO,CAAC,CAAC;gBAG1HqB;YACF;QACF;QAEA5C,QAAQe,MAAM,CAACC,IAAI,CAAC;YAAEC,KAAK,CAAC,QAAQ,EAAE2B,YAAY,wBAAwB,CAAC;QAAC;IAC9E;IAEA,8DAA8D;IAC9D,MAAMK,WAAW;QAAErB,YAAY;QAAmB9B;QAAI+B,WAAWzB;IAAc;IAE/E,8CAA8C;IAC9C,MAAM8C,YAAYrD,iBAAiBL,YAAYK,kBAAkBL,YAAYO;IAC7E,MAAMoD,mBAAmB,GAAGD,UAAU,QAAQ,CAAC;IAE/C,IAAI,MAAMnB,YAAY;QAAEjC;QAAI+B,WAAWsB;IAAiB,IAAI;QAC1D,IAAI,CAAE,MAAMxB,aAAa;YAAEC,YAAY;YAAW9B;YAAI+B,WAAWsB;QAAiB,IAAK;YACrF,MAAMrD,GAAGkC,GAAG,CACV1C,IAAI2C,GAAG,CAAC,CAAC,aAAa,EAAEkB,iBAAiB,yCAAyC,CAAC;QAEvF;QAEA,IAAItD,gBAAgB;YAClB,MAAMJ,4BAA4B;gBAChCI;gBACAC;gBACAoB;gBACAlB;gBACAI;YACF;QACF,OAAO,IAAIL,YAAY;YACrB,MAAML,wBAAwB;gBAAEI;gBAAIC;gBAAYmB;gBAASlB;gBAASI;YAAc;QAClF;IACF,OAAO;QACLJ,QAAQe,MAAM,CAACC,IAAI,CAAC;YAClBC,KAAK,CAAC,wBAAwB,EAAEkC,iBAAiB,kCAAkC,CAAC;QACtF;IACF;IAEA,8EAA8E;IAC9E,IAAI,MAAMxB,aAAa;QAAEC,YAAY;QAAW9B;QAAI+B,WAAWqB;IAAU,IAAI;QAC3E,MAAMD,WAAW;YAAErB,YAAY;YAAW9B;YAAI+B,WAAWqB;QAAU;IACrE;IAEAlD,QAAQe,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK;IAAmC;AAChE;AAEA;;;CAGC,GACD,OAAO,eAAegC,WAAW,EAC/BrB,UAAU,EACV9B,EAAE,EACF+B,SAAS,EAKV;IACC,MAAMuB,UAAU,MAAMtD,GAAGqC,GAAG,CAC1B7C,IAAI2C,GAAG,CAAC,CAAC,qEAAqE,EAAEJ,UAAU,CAAC,CAAC;IAG9F,KAAK,MAAMwB,SAASD,QAAwD;QAC1E,IAAI,OAAOC,MAAM/D,GAAG,KAAK,YAAY+D,MAAM/D,GAAG,CAACgE,QAAQ,CAAC1B,aAAa;YACnE,MAAM9B,GAAGkC,GAAG,CAAC1C,IAAI2C,GAAG,CAAC,CAAC,sBAAsB,EAAEoB,MAAME,IAAI,CAAC,CAAC,CAAC;QAC7D;IACF;IAEA,MAAMzD,GAAGkC,GAAG,CAAC1C,IAAI2C,GAAG,CAAC,CAAC,aAAa,EAAEJ,UAAU,cAAc,EAAED,YAAY;AAC7E;AAEA,OAAO,eAAeD,aAAa,EACjCC,UAAU,EACV9B,EAAE,EACF+B,SAAS,EAKV;IACC,MAAM2B,SAAS,MAAM1D,GAAGqC,GAAG,CACzB7C,IAAI2C,GAAG,CACL,CAAC,iDAAiD,EAAEJ,UAAU,iBAAiB,EAAED,WAAW,CAAC,CAAC;IAGlG,OAAO6B,OAAOD,MAAM,CAAC,EAAE,EAAEE,SAAS,KAAK;AACzC;AAEA,OAAO,eAAe3B,YAAY,EAChCjC,EAAE,EACF+B,SAAS,EAIV;IACC,MAAM2B,SAAS,MAAM1D,GAAGqC,GAAG,CACzB7C,IAAI2C,GAAG,CACL,CAAC,yEAAyE,EAAEJ,UAAU,CAAC,CAAC;IAG5F,OAAO4B,OAAOD,MAAM,CAAC,EAAE,EAAEE,SAAS,KAAK;AACzC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Migrates main collection documents from _status to per-locale status object
|
|
4
|
+
*/
|
|
5
|
+
export declare function migrateMainCollectionStatus({ collectionSlug, db, locales, payload, versionsTable, }: {
|
|
6
|
+
collectionSlug: string;
|
|
7
|
+
db: any;
|
|
8
|
+
locales: string[];
|
|
9
|
+
payload: Payload;
|
|
10
|
+
versionsTable: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=migrateMainCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateMainCollection.d.ts","sourceRoot":"","sources":["../../../../src/sqlite/predefinedMigrations/localize-status/migrateMainCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC;;GAEG;AACH,wBAAsB,2BAA2B,CAAC,EAChD,cAAc,EACd,EAAE,EACF,OAAO,EACP,OAAO,EACP,aAAa,GACd,EAAE;IACD,cAAc,EAAE,MAAM,CAAA;IACtB,EAAE,EAAE,GAAG,CAAA;IACP,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
|
+
import toSnakeCase from 'to-snake-case';
|
|
3
|
+
/**
|
|
4
|
+
* Migrates main collection documents from _status to per-locale status object
|
|
5
|
+
*/ export async function migrateMainCollectionStatus({ collectionSlug, db, locales, payload, versionsTable }) {
|
|
6
|
+
const mainTable = toSnakeCase(collectionSlug);
|
|
7
|
+
const mainLocalesTable = `${mainTable}_locales`;
|
|
8
|
+
payload.logger.info({
|
|
9
|
+
msg: `Migrating main collection locales for: ${mainLocalesTable}`
|
|
10
|
+
});
|
|
11
|
+
const documents = await db.all(sql.raw(`SELECT DISTINCT id FROM "${mainTable}"`));
|
|
12
|
+
for (const doc of documents){
|
|
13
|
+
for (const locale of locales){
|
|
14
|
+
const latestVersionRows = await db.all(sql.raw(`SELECT l.version__status as _status FROM "${versionsTable}" v JOIN "${versionsTable}_locales" l ON l._parent_id = v.id WHERE v.parent_id = ${doc.id} AND l._locale = '${locale}' ORDER BY v.created_at DESC LIMIT 1`));
|
|
15
|
+
const status = latestVersionRows[0]?._status || 'draft';
|
|
16
|
+
await db.run(sql.raw(`UPDATE "${mainLocalesTable}" SET _status = '${status}' WHERE _parent_id = ${doc.id} AND _locale = '${locale}'`));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
payload.logger.info({
|
|
20
|
+
msg: `Migrated ${documents.length} collection documents`
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=migrateMainCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/sqlite/predefinedMigrations/localize-status/migrateMainCollection.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport toSnakeCase from 'to-snake-case'\n\n/**\n * Migrates main collection documents from _status to per-locale status object\n */\nexport async function migrateMainCollectionStatus({\n collectionSlug,\n db,\n locales,\n payload,\n versionsTable,\n}: {\n collectionSlug: string\n db: any\n locales: string[]\n payload: Payload\n versionsTable: string\n}): Promise<void> {\n const mainTable = toSnakeCase(collectionSlug)\n const mainLocalesTable = `${mainTable}_locales`\n\n payload.logger.info({ msg: `Migrating main collection locales for: ${mainLocalesTable}` })\n\n const documents: any[] = await db.all(sql.raw(`SELECT DISTINCT id FROM \"${mainTable}\"`))\n\n for (const doc of documents) {\n for (const locale of locales) {\n const latestVersionRows: any[] = await db.all(\n sql.raw(\n `SELECT l.version__status as _status FROM \"${versionsTable}\" v JOIN \"${versionsTable}_locales\" l ON l._parent_id = v.id WHERE v.parent_id = ${doc.id} AND l._locale = '${locale}' ORDER BY v.created_at DESC LIMIT 1`,\n ),\n )\n\n const status = latestVersionRows[0]?._status || 'draft'\n\n await db.run(\n sql.raw(\n `UPDATE \"${mainLocalesTable}\" SET _status = '${status}' WHERE _parent_id = ${doc.id} AND _locale = '${locale}'`,\n ),\n )\n }\n }\n\n payload.logger.info({ msg: `Migrated ${documents.length} collection documents` })\n}\n"],"names":["sql","toSnakeCase","migrateMainCollectionStatus","collectionSlug","db","locales","payload","versionsTable","mainTable","mainLocalesTable","logger","info","msg","documents","all","raw","doc","locale","latestVersionRows","id","status","_status","run","length"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,OAAOC,iBAAiB,gBAAe;AAEvC;;CAEC,GACD,OAAO,eAAeC,4BAA4B,EAChDC,cAAc,EACdC,EAAE,EACFC,OAAO,EACPC,OAAO,EACPC,aAAa,EAOd;IACC,MAAMC,YAAYP,YAAYE;IAC9B,MAAMM,mBAAmB,GAAGD,UAAU,QAAQ,CAAC;IAE/CF,QAAQI,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,uCAAuC,EAAEH,kBAAkB;IAAC;IAExF,MAAMI,YAAmB,MAAMT,GAAGU,GAAG,CAACd,IAAIe,GAAG,CAAC,CAAC,yBAAyB,EAAEP,UAAU,CAAC,CAAC;IAEtF,KAAK,MAAMQ,OAAOH,UAAW;QAC3B,KAAK,MAAMI,UAAUZ,QAAS;YAC5B,MAAMa,oBAA2B,MAAMd,GAAGU,GAAG,CAC3Cd,IAAIe,GAAG,CACL,CAAC,0CAA0C,EAAER,cAAc,UAAU,EAAEA,cAAc,uDAAuD,EAAES,IAAIG,EAAE,CAAC,kBAAkB,EAAEF,OAAO,oCAAoC,CAAC;YAIzN,MAAMG,SAASF,iBAAiB,CAAC,EAAE,EAAEG,WAAW;YAEhD,MAAMjB,GAAGkB,GAAG,CACVtB,IAAIe,GAAG,CACL,CAAC,QAAQ,EAAEN,iBAAiB,iBAAiB,EAAEW,OAAO,qBAAqB,EAAEJ,IAAIG,EAAE,CAAC,gBAAgB,EAAEF,OAAO,CAAC,CAAC;QAGrH;IACF;IAEAX,QAAQI,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,SAAS,EAAEC,UAAUU,MAAM,CAAC,qBAAqB,CAAC;IAAC;AACjF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Migrates main global document from _status to per-locale status object
|
|
4
|
+
*/
|
|
5
|
+
export declare function migrateMainGlobalStatus({ db, globalSlug, locales, payload, versionsTable, }: {
|
|
6
|
+
db: any;
|
|
7
|
+
globalSlug: string;
|
|
8
|
+
locales: string[];
|
|
9
|
+
payload: Payload;
|
|
10
|
+
versionsTable: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=migrateMainGlobal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateMainGlobal.d.ts","sourceRoot":"","sources":["../../../../src/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,EAC5C,EAAE,EACF,UAAU,EACV,OAAO,EACP,OAAO,EACP,aAAa,GACd,EAAE;IACD,EAAE,EAAE,GAAG,CAAA;IACP,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
|
+
import toSnakeCase from 'to-snake-case';
|
|
3
|
+
/**
|
|
4
|
+
* Migrates main global document from _status to per-locale status object
|
|
5
|
+
*/ export async function migrateMainGlobalStatus({ db, globalSlug, locales, payload, versionsTable }) {
|
|
6
|
+
const globalTable = toSnakeCase(globalSlug);
|
|
7
|
+
const globalLocalesTable = `${globalTable}_locales`;
|
|
8
|
+
payload.logger.info({
|
|
9
|
+
msg: `Migrating main global locales for: ${globalLocalesTable}`
|
|
10
|
+
});
|
|
11
|
+
const globalDoc = await db.get(sql.raw(`SELECT id FROM "${globalTable}" LIMIT 1`));
|
|
12
|
+
if (!globalDoc) {
|
|
13
|
+
payload.logger.warn({
|
|
14
|
+
msg: `No global document found for ${globalSlug}, skipping`
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
for (const locale of locales){
|
|
19
|
+
const latestVersionRows = await db.all(sql.raw(`SELECT l.version__status as _status FROM "${versionsTable}" v JOIN "${versionsTable}_locales" l ON l._parent_id = v.id WHERE l._locale = '${locale}' ORDER BY v.created_at DESC LIMIT 1`));
|
|
20
|
+
const status = latestVersionRows[0]?._status || 'draft';
|
|
21
|
+
await db.run(sql.raw(`UPDATE "${globalLocalesTable}" SET _status = '${status}' WHERE _parent_id = ${globalDoc.id} AND _locale = '${locale}'`));
|
|
22
|
+
}
|
|
23
|
+
payload.logger.info({
|
|
24
|
+
msg: 'Migrated global document'
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
//# sourceMappingURL=migrateMainGlobal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/sqlite/predefinedMigrations/localize-status/migrateMainGlobal.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport toSnakeCase from 'to-snake-case'\n\n/**\n * Migrates main global document from _status to per-locale status object\n */\nexport async function migrateMainGlobalStatus({\n db,\n globalSlug,\n locales,\n payload,\n versionsTable,\n}: {\n db: any\n globalSlug: string\n locales: string[]\n payload: Payload\n versionsTable: string\n}): Promise<void> {\n const globalTable = toSnakeCase(globalSlug)\n const globalLocalesTable = `${globalTable}_locales`\n\n payload.logger.info({ msg: `Migrating main global locales for: ${globalLocalesTable}` })\n\n const globalDoc: any = await db.get(sql.raw(`SELECT id FROM \"${globalTable}\" LIMIT 1`))\n\n if (!globalDoc) {\n payload.logger.warn({ msg: `No global document found for ${globalSlug}, skipping` })\n return\n }\n\n for (const locale of locales) {\n const latestVersionRows: any[] = await db.all(\n sql.raw(\n `SELECT l.version__status as _status FROM \"${versionsTable}\" v JOIN \"${versionsTable}_locales\" l ON l._parent_id = v.id WHERE l._locale = '${locale}' ORDER BY v.created_at DESC LIMIT 1`,\n ),\n )\n\n const status = latestVersionRows[0]?._status || 'draft'\n\n await db.run(\n sql.raw(\n `UPDATE \"${globalLocalesTable}\" SET _status = '${status}' WHERE _parent_id = ${globalDoc.id} AND _locale = '${locale}'`,\n ),\n )\n }\n\n payload.logger.info({ msg: 'Migrated global document' })\n}\n"],"names":["sql","toSnakeCase","migrateMainGlobalStatus","db","globalSlug","locales","payload","versionsTable","globalTable","globalLocalesTable","logger","info","msg","globalDoc","get","raw","warn","locale","latestVersionRows","all","status","_status","run","id"],"mappings":"AAEA,SAASA,GAAG,QAAQ,cAAa;AACjC,OAAOC,iBAAiB,gBAAe;AAEvC;;CAEC,GACD,OAAO,eAAeC,wBAAwB,EAC5CC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,OAAO,EACPC,aAAa,EAOd;IACC,MAAMC,cAAcP,YAAYG;IAChC,MAAMK,qBAAqB,GAAGD,YAAY,QAAQ,CAAC;IAEnDF,QAAQI,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK,CAAC,mCAAmC,EAAEH,oBAAoB;IAAC;IAEtF,MAAMI,YAAiB,MAAMV,GAAGW,GAAG,CAACd,IAAIe,GAAG,CAAC,CAAC,gBAAgB,EAAEP,YAAY,SAAS,CAAC;IAErF,IAAI,CAACK,WAAW;QACdP,QAAQI,MAAM,CAACM,IAAI,CAAC;YAAEJ,KAAK,CAAC,6BAA6B,EAAER,WAAW,UAAU,CAAC;QAAC;QAClF;IACF;IAEA,KAAK,MAAMa,UAAUZ,QAAS;QAC5B,MAAMa,oBAA2B,MAAMf,GAAGgB,GAAG,CAC3CnB,IAAIe,GAAG,CACL,CAAC,0CAA0C,EAAER,cAAc,UAAU,EAAEA,cAAc,sDAAsD,EAAEU,OAAO,oCAAoC,CAAC;QAI7L,MAAMG,SAASF,iBAAiB,CAAC,EAAE,EAAEG,WAAW;QAEhD,MAAMlB,GAAGmB,GAAG,CACVtB,IAAIe,GAAG,CACL,CAAC,QAAQ,EAAEN,mBAAmB,iBAAiB,EAAEW,OAAO,qBAAqB,EAAEP,UAAUU,EAAE,CAAC,gBAAgB,EAAEN,OAAO,CAAC,CAAC;IAG7H;IAEAX,QAAQI,MAAM,CAACC,IAAI,CAAC;QAAEC,KAAK;IAA2B;AACxD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Payload } from 'payload';
|
|
2
|
+
import type { SizesToVariantsDirection } from '../../../utilities/getSizesToVariantsRenames.js';
|
|
3
|
+
/**
|
|
4
|
+
* Moves every upload collection's stored image sizes between the legacy `sizes_*` columns and
|
|
5
|
+
* `variants_*` (main and versions tables), renaming each column in place so no data is copied.
|
|
6
|
+
* SQLite can't rename an index, so each index on a renamed column is dropped and recreated under
|
|
7
|
+
* the name the current schema expects. Skips columns that are already renamed, so it's safe to
|
|
8
|
+
* re-run.
|
|
9
|
+
*/
|
|
10
|
+
export declare function migrateSqliteSizesToVariants({ db, direction, payload, }: {
|
|
11
|
+
db: any;
|
|
12
|
+
direction?: SizesToVariantsDirection;
|
|
13
|
+
payload: Payload;
|
|
14
|
+
}): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/sqlite/predefinedMigrations/sizes-to-variants/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAKtC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAA;AAQ/F;;;;;;GAMG;AACH,wBAAsB,4BAA4B,CAAC,EACjD,EAAE,EACF,SAAgB,EAChB,OAAO,GACR,EAAE;IACD,EAAE,EAAE,GAAG,CAAA;IACP,SAAS,CAAC,EAAE,wBAAwB,CAAA;IACpC,OAAO,EAAE,OAAO,CAAA;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8FhB"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { sql } from 'drizzle-orm';
|
|
2
|
+
import { assertNoSizesToVariantsColumnCollisions, getSizesToVariantsRenames, isGeneratedLegacyIndexName } from '../../../utilities/getSizesToVariantsRenames.js';
|
|
3
|
+
/**
|
|
4
|
+
* Moves every upload collection's stored image sizes between the legacy `sizes_*` columns and
|
|
5
|
+
* `variants_*` (main and versions tables), renaming each column in place so no data is copied.
|
|
6
|
+
* SQLite can't rename an index, so each index on a renamed column is dropped and recreated under
|
|
7
|
+
* the name the current schema expects. Skips columns that are already renamed, so it's safe to
|
|
8
|
+
* re-run.
|
|
9
|
+
*/ export async function migrateSqliteSizesToVariants({ db, direction = 'up', payload }) {
|
|
10
|
+
const adapter = payload.db;
|
|
11
|
+
const plan = getSizesToVariantsRenames({
|
|
12
|
+
adapter,
|
|
13
|
+
direction
|
|
14
|
+
});
|
|
15
|
+
const plannedTables = [];
|
|
16
|
+
for (const tablePlan of plan){
|
|
17
|
+
const existingColumns = await getColumnNames({
|
|
18
|
+
db,
|
|
19
|
+
tableName: tablePlan.tableName
|
|
20
|
+
});
|
|
21
|
+
assertNoSizesToVariantsColumnCollisions({
|
|
22
|
+
columns: tablePlan.columns,
|
|
23
|
+
existingColumns,
|
|
24
|
+
tableName: tablePlan.tableName
|
|
25
|
+
});
|
|
26
|
+
plannedTables.push({
|
|
27
|
+
...tablePlan,
|
|
28
|
+
existingColumns
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
for (const { columns, existingColumns, indexes, tableName } of plannedTables){
|
|
32
|
+
const columnsAfterRename = new Set(existingColumns);
|
|
33
|
+
let renamedCount = 0;
|
|
34
|
+
for (const { from, to } of columns){
|
|
35
|
+
if (!existingColumns.has(from) || existingColumns.has(to)) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
columnsAfterRename.delete(from);
|
|
39
|
+
columnsAfterRename.add(to);
|
|
40
|
+
await db.run(sql`
|
|
41
|
+
ALTER TABLE ${sql.identifier(tableName)}
|
|
42
|
+
RENAME COLUMN ${sql.identifier(from)} TO ${sql.identifier(to)}
|
|
43
|
+
`);
|
|
44
|
+
renamedCount++;
|
|
45
|
+
}
|
|
46
|
+
const existingIndexes = await getIndexes({
|
|
47
|
+
db,
|
|
48
|
+
tableName
|
|
49
|
+
});
|
|
50
|
+
for (const index of indexes){
|
|
51
|
+
if (!index.columns.every((column)=>columnsAfterRename.has(column))) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const destinationIndex = existingIndexes.find(({ name })=>name === index.to);
|
|
55
|
+
const sourceIndex = destinationIndex ? undefined : index.from ? existingIndexes.find(({ name })=>name === index.from) : index.legacyNameBase ? existingIndexes.find(({ name, columns })=>columns.join(',') === index.columns.join(',') && isGeneratedLegacyIndexName({
|
|
56
|
+
indexName: name,
|
|
57
|
+
legacyNameBase: index.legacyNameBase
|
|
58
|
+
})) : undefined;
|
|
59
|
+
if (destinationIndex) {
|
|
60
|
+
if (destinationIndex.columns.join(',') !== index.columns.join(',') || destinationIndex.unique !== index.unique) {
|
|
61
|
+
throw new Error(`Cannot run the sizes-to-variants migration because index "${index.to}" on table "${tableName}" does not match the expected columns or uniqueness.`);
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
const unique = index.unique ? sql.raw('UNIQUE ') : sql.empty();
|
|
65
|
+
const columnList = sql.join(index.columns.map((column)=>sql.identifier(column)), sql.raw(', '));
|
|
66
|
+
await db.run(sql`
|
|
67
|
+
CREATE ${unique}INDEX ${sql.identifier(index.to)}
|
|
68
|
+
ON ${sql.identifier(tableName)} (${columnList})
|
|
69
|
+
`);
|
|
70
|
+
}
|
|
71
|
+
if (sourceIndex && sourceIndex.name !== index.to) {
|
|
72
|
+
await db.run(sql`DROP INDEX ${sql.identifier(sourceIndex.name)}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
payload.logger.info({
|
|
76
|
+
msg: `sizes-to-variants (${direction}): renamed ${renamedCount} column(s) on "${tableName}"`
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async function getColumnNames({ db, tableName }) {
|
|
81
|
+
const rows = await db.all(sql`SELECT name FROM pragma_table_info(${tableName})`);
|
|
82
|
+
return new Set(rows.map(({ name })=>name));
|
|
83
|
+
}
|
|
84
|
+
async function getIndexes({ db, tableName }) {
|
|
85
|
+
// `origin = 'c'` keeps only `CREATE INDEX` indexes, skipping SQLite's internal autoindexes.
|
|
86
|
+
const rows = await db.all(sql`
|
|
87
|
+
SELECT
|
|
88
|
+
il.name AS index_name,
|
|
89
|
+
il."unique" AS is_unique,
|
|
90
|
+
ii.name AS column_name,
|
|
91
|
+
ii.seqno AS seqno
|
|
92
|
+
FROM pragma_index_list(${tableName}) AS il
|
|
93
|
+
JOIN pragma_index_info(il.name) AS ii
|
|
94
|
+
WHERE il.origin = 'c'
|
|
95
|
+
ORDER BY il.name, ii.seqno
|
|
96
|
+
`);
|
|
97
|
+
const indexes = new Map();
|
|
98
|
+
for (const { column_name, index_name, is_unique } of rows){
|
|
99
|
+
const index = indexes.get(index_name) ?? {
|
|
100
|
+
columns: [],
|
|
101
|
+
unique: Boolean(is_unique)
|
|
102
|
+
};
|
|
103
|
+
index.columns.push(column_name);
|
|
104
|
+
indexes.set(index_name, index);
|
|
105
|
+
}
|
|
106
|
+
return [
|
|
107
|
+
...indexes
|
|
108
|
+
].map(([name, index])=>({
|
|
109
|
+
name,
|
|
110
|
+
...index
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/sqlite/predefinedMigrations/sizes-to-variants/index.ts"],"sourcesContent":["import type { Payload } from 'payload'\n\nimport { sql } from 'drizzle-orm'\n\nimport type { DrizzleAdapter } from '../../../types.js'\nimport type { SizesToVariantsDirection } from '../../../utilities/getSizesToVariantsRenames.js'\n\nimport {\n assertNoSizesToVariantsColumnCollisions,\n getSizesToVariantsRenames,\n isGeneratedLegacyIndexName,\n} from '../../../utilities/getSizesToVariantsRenames.js'\n\n/**\n * Moves every upload collection's stored image sizes between the legacy `sizes_*` columns and\n * `variants_*` (main and versions tables), renaming each column in place so no data is copied.\n * SQLite can't rename an index, so each index on a renamed column is dropped and recreated under\n * the name the current schema expects. Skips columns that are already renamed, so it's safe to\n * re-run.\n */\nexport async function migrateSqliteSizesToVariants({\n db,\n direction = 'up',\n payload,\n}: {\n db: any\n direction?: SizesToVariantsDirection\n payload: Payload\n}): Promise<void> {\n const adapter = payload.db as unknown as DrizzleAdapter\n const plan = getSizesToVariantsRenames({ adapter, direction })\n const plannedTables: Array<\n (typeof plan)[number] & {\n existingColumns: Set<string>\n }\n > = []\n\n for (const tablePlan of plan) {\n const existingColumns = await getColumnNames({ db, tableName: tablePlan.tableName })\n\n assertNoSizesToVariantsColumnCollisions({\n columns: tablePlan.columns,\n existingColumns,\n tableName: tablePlan.tableName,\n })\n\n plannedTables.push({ ...tablePlan, existingColumns })\n }\n\n for (const { columns, existingColumns, indexes, tableName } of plannedTables) {\n const columnsAfterRename = new Set(existingColumns)\n let renamedCount = 0\n\n for (const { from, to } of columns) {\n if (!existingColumns.has(from) || existingColumns.has(to)) {\n continue\n }\n\n columnsAfterRename.delete(from)\n columnsAfterRename.add(to)\n\n await db.run(sql`\n ALTER TABLE ${sql.identifier(tableName)}\n RENAME COLUMN ${sql.identifier(from)} TO ${sql.identifier(to)}\n `)\n renamedCount++\n }\n\n const existingIndexes = await getIndexes({ db, tableName })\n\n for (const index of indexes) {\n if (!index.columns.every((column) => columnsAfterRename.has(column))) {\n continue\n }\n\n const destinationIndex = existingIndexes.find(({ name }) => name === index.to)\n const sourceIndex = destinationIndex\n ? undefined\n : index.from\n ? existingIndexes.find(({ name }) => name === index.from)\n : index.legacyNameBase\n ? existingIndexes.find(\n ({ name, columns }) =>\n columns.join(',') === index.columns.join(',') &&\n isGeneratedLegacyIndexName({\n indexName: name,\n legacyNameBase: index.legacyNameBase,\n }),\n )\n : undefined\n\n if (destinationIndex) {\n if (\n destinationIndex.columns.join(',') !== index.columns.join(',') ||\n destinationIndex.unique !== index.unique\n ) {\n throw new Error(\n `Cannot run the sizes-to-variants migration because index \"${index.to}\" on table \"${tableName}\" does not match the expected columns or uniqueness.`,\n )\n }\n } else {\n const unique = index.unique ? sql.raw('UNIQUE ') : sql.empty()\n const columnList = sql.join(\n index.columns.map((column) => sql.identifier(column)),\n sql.raw(', '),\n )\n\n await db.run(sql`\n CREATE ${unique}INDEX ${sql.identifier(index.to)}\n ON ${sql.identifier(tableName)} (${columnList})\n `)\n }\n\n if (sourceIndex && sourceIndex.name !== index.to) {\n await db.run(sql`DROP INDEX ${sql.identifier(sourceIndex.name)}`)\n }\n }\n\n payload.logger.info({\n msg: `sizes-to-variants (${direction}): renamed ${renamedCount} column(s) on \"${tableName}\"`,\n })\n }\n}\n\nasync function getColumnNames({\n db,\n tableName,\n}: {\n db: any\n tableName: string\n}): Promise<Set<string>> {\n const rows: { name: string }[] = await db.all(\n sql`SELECT name FROM pragma_table_info(${tableName})`,\n )\n\n return new Set(rows.map(({ name }) => name))\n}\n\nasync function getIndexes({\n db,\n tableName,\n}: {\n db: any\n tableName: string\n}): Promise<{ columns: string[]; name: string; unique: boolean }[]> {\n // `origin = 'c'` keeps only `CREATE INDEX` indexes, skipping SQLite's internal autoindexes.\n const rows: { column_name: string; index_name: string; is_unique: number; seqno: number }[] =\n await db.all(sql`\n SELECT\n il.name AS index_name,\n il.\"unique\" AS is_unique,\n ii.name AS column_name,\n ii.seqno AS seqno\n FROM pragma_index_list(${tableName}) AS il\n JOIN pragma_index_info(il.name) AS ii\n WHERE il.origin = 'c'\n ORDER BY il.name, ii.seqno\n `)\n\n const indexes = new Map<string, { columns: string[]; unique: boolean }>()\n\n for (const { column_name, index_name, is_unique } of rows) {\n const index = indexes.get(index_name) ?? { columns: [], unique: Boolean(is_unique) }\n\n index.columns.push(column_name)\n indexes.set(index_name, index)\n }\n\n return [...indexes].map(([name, index]) => ({ name, ...index }))\n}\n"],"names":["sql","assertNoSizesToVariantsColumnCollisions","getSizesToVariantsRenames","isGeneratedLegacyIndexName","migrateSqliteSizesToVariants","db","direction","payload","adapter","plan","plannedTables","tablePlan","existingColumns","getColumnNames","tableName","columns","push","indexes","columnsAfterRename","Set","renamedCount","from","to","has","delete","add","run","identifier","existingIndexes","getIndexes","index","every","column","destinationIndex","find","name","sourceIndex","undefined","legacyNameBase","join","indexName","unique","Error","raw","empty","columnList","map","logger","info","msg","rows","all","Map","column_name","index_name","is_unique","get","Boolean","set"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"hasManyNumber.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyNumber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACrC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,sBAAsB,kEAMhC,IAAI,SA4BN,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"hasManyText.d.ts","sourceRoot":"","sources":["../../../src/transform/read/hasManyText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACnC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,oBAAoB,gEAM9B,IAAI,SAoBN,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAErF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMpD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transform/read/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAErF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAMpD,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,cAAc,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC/B,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB,CAAA;AAID,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,+EAQrE,aAAa,KAAG,CAiDlB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../../src/transform/read/relationship.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE7D,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAAA;IACtC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAED,eAAO,MAAM,qBAAqB,iEAM/B,IAAI,SAwEN,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAKzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAQnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/transform/read/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,cAAc,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAKzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAA;AAQnE,KAAK,kBAAkB,GAAG;IACxB;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAA;IACjB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAChC;;OAEG;IACH,SAAS,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAA;IACzB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAA;IACnB;;OAEG;IACH,MAAM,EAAE,cAAc,EAAE,CAAA;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAClD,iBAAiB,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACxD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IAChD,iBAAiB,EAAE,MAAM,CAAA;IACzB;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC,CAAA;AAID,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,6NAmB7D,kBAAkB,KAAG,CAwnBvB,CAAA"}
|
|
@@ -132,7 +132,7 @@ export const traverseFields = ({ adapter, blocks, config, currentTableName, data
|
|
|
132
132
|
});
|
|
133
133
|
Object.entries(result[field.name]).forEach(([locale, localizedBlocks])=>{
|
|
134
134
|
result[field.name][locale] = localizedBlocks.map((row)=>{
|
|
135
|
-
const block = adapter.payload.blocks[row.blockType] ??
|
|
135
|
+
const block = adapter.payload.blocks[row.blockType] ?? field.blocks.find((block)=>typeof block !== 'string' && block.slug === row.blockType);
|
|
136
136
|
const tableName = resolveBlockTableName(block, adapter.tableNameMap.get(`${topLevelTableName}_blocks_${toSnakeCase(block.slug)}`));
|
|
137
137
|
if (block) {
|
|
138
138
|
const blockResult = traverseFields({
|
|
@@ -184,7 +184,7 @@ export const traverseFields = ({ adapter, blocks, config, currentTableName, data
|
|
|
184
184
|
if (typeof row.blockType !== 'string') {
|
|
185
185
|
return acc;
|
|
186
186
|
}
|
|
187
|
-
const block = adapter.payload.blocks[row.blockType] ??
|
|
187
|
+
const block = adapter.payload.blocks[row.blockType] ?? field.blocks.find((block)=>typeof block !== 'string' && block.slug === row.blockType);
|
|
188
188
|
if (block) {
|
|
189
189
|
if (!withinArrayOrBlockLocale || withinArrayOrBlockLocale && withinArrayOrBlockLocale === row._locale) {
|
|
190
190
|
if (row._locale) {
|