@payloadcms/drizzle 4.0.0-beta.4 → 4.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/postgres.d.ts +1 -1
- package/dist/exports/postgres.d.ts.map +1 -1
- package/dist/exports/postgres.js +1 -1
- package/dist/exports/postgres.js.map +1 -1
- package/dist/exports/sqlite.d.ts +1 -1
- package/dist/exports/sqlite.d.ts.map +1 -1
- package/dist/exports/sqlite.js +1 -1
- package/dist/exports/sqlite.js.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/requireDrizzleKit.d.ts +4 -0
- package/dist/postgres/requireDrizzleKit.d.ts.map +1 -1
- package/dist/postgres/requireDrizzleKit.js +16 -10
- package/dist/postgres/requireDrizzleKit.js.map +1 -1
- package/dist/sqlite/createRequireDrizzleKit.d.ts +6 -0
- package/dist/sqlite/createRequireDrizzleKit.d.ts.map +1 -0
- package/dist/sqlite/createRequireDrizzleKit.js +15 -0
- package/dist/sqlite/createRequireDrizzleKit.js.map +1 -0
- package/dist/types.d.ts +2 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/blocksToJsonMigrator.js +1 -1
- package/dist/utilities/blocksToJsonMigrator.js.map +1 -1
- package/dist/utilities/buildCreateMigration.js +1 -1
- package/dist/utilities/buildCreateMigration.js.map +1 -1
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js +1 -1
- package/dist/utilities/buildDynamicPredefinedSizesToVariantsMigration.js.map +1 -1
- package/dist/utilities/pushDevSchema.js +1 -1
- package/dist/utilities/pushDevSchema.js.map +1 -1
- package/package.json +4 -3
- package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
- package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
- package/dist/sqlite/requireDrizzleKit.js +0 -12
- package/dist/sqlite/requireDrizzleKit.js.map +0 -1
|
@@ -14,7 +14,7 @@ export { migratePostgresSizesToVariants } from '../postgres/predefinedMigrations
|
|
|
14
14
|
export { migratePostgresV2toV3 } from '../postgres/predefinedMigrations/v2-v3/index.js';
|
|
15
15
|
export { assertOperatorHandlerExtensionsInstalled } from '../postgres/query/assertOperatorHandlerExtensionsInstalled.js';
|
|
16
16
|
export { postgresUnaccent } from '../postgres/query/postgresUnaccent.js';
|
|
17
|
-
export { requireDrizzleKit } from '../postgres/requireDrizzleKit.js';
|
|
17
|
+
export { createRequireDrizzleKit, requireDrizzleKit } from '../postgres/requireDrizzleKit.js';
|
|
18
18
|
export { geometryColumn } from '../postgres/schema/geometryColumn.js';
|
|
19
19
|
export * from '../postgres/types.js';
|
|
20
20
|
//# sourceMappingURL=postgres.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/exports/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAA;AACzG,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAA;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAA;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAA;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../src/exports/postgres.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,6BAA6B,EAAE,MAAM,2DAA2D,CAAA;AACzG,OAAO,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAA;AAC5G,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAA;AACvF,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAA;AACxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAA;AACrE,cAAc,sBAAsB,CAAA"}
|
package/dist/exports/postgres.js
CHANGED
|
@@ -14,7 +14,7 @@ export { migratePostgresSizesToVariants } from '../postgres/predefinedMigrations
|
|
|
14
14
|
export { migratePostgresV2toV3 } from '../postgres/predefinedMigrations/v2-v3/index.js';
|
|
15
15
|
export { assertOperatorHandlerExtensionsInstalled } from '../postgres/query/assertOperatorHandlerExtensionsInstalled.js';
|
|
16
16
|
export { postgresUnaccent } from '../postgres/query/postgresUnaccent.js';
|
|
17
|
-
export { requireDrizzleKit } from '../postgres/requireDrizzleKit.js';
|
|
17
|
+
export { createRequireDrizzleKit, requireDrizzleKit } from '../postgres/requireDrizzleKit.js';
|
|
18
18
|
export { geometryColumn } from '../postgres/schema/geometryColumn.js';
|
|
19
19
|
export * from '../postgres/types.js';
|
|
20
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/postgres.ts"],"sourcesContent":["export { columnToCodeConverter } from '../postgres/columnToCodeConverter.js'\nexport { countDistinct } from '../postgres/countDistinct.js'\nexport { createDatabase } from '../postgres/createDatabase.js'\nexport { createExtensions } from '../postgres/createExtensions.js'\nexport { createJSONQuery } from '../postgres/createJSONQuery/index.js'\nexport { defaultDrizzleSnapshot } from '../postgres/defaultSnapshot.js'\nexport { deleteWhere } from '../postgres/deleteWhere.js'\nexport { dropDatabase } from '../postgres/dropDatabase.js'\nexport { execute } from '../postgres/execute.js'\nexport { init } from '../postgres/init.js'\nexport { insert } from '../postgres/insert.js'\nexport { migratePostgresLocalizeStatus } from '../postgres/predefinedMigrations/localize-status/index.js'\nexport { migratePostgresSizesToVariants } from '../postgres/predefinedMigrations/sizes-to-variants/index.js'\nexport { migratePostgresV2toV3 } from '../postgres/predefinedMigrations/v2-v3/index.js'\nexport { assertOperatorHandlerExtensionsInstalled } from '../postgres/query/assertOperatorHandlerExtensionsInstalled.js'\nexport { postgresUnaccent } from '../postgres/query/postgresUnaccent.js'\nexport { requireDrizzleKit } from '../postgres/requireDrizzleKit.js'\nexport { geometryColumn } from '../postgres/schema/geometryColumn.js'\nexport * from '../postgres/types.js'\n"],"names":["columnToCodeConverter","countDistinct","createDatabase","createExtensions","createJSONQuery","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","init","insert","migratePostgresLocalizeStatus","migratePostgresSizesToVariants","migratePostgresV2toV3","assertOperatorHandlerExtensionsInstalled","postgresUnaccent","requireDrizzleKit","geometryColumn"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,uCAAsC;AAC5E,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,gBAAgB,QAAQ,kCAAiC;AAClE,SAASC,eAAe,QAAQ,uCAAsC;AACtE,SAASC,sBAAsB,QAAQ,iCAAgC;AACvE,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,OAAO,QAAQ,yBAAwB;AAChD,SAASC,IAAI,QAAQ,sBAAqB;AAC1C,SAASC,MAAM,QAAQ,wBAAuB;AAC9C,SAASC,6BAA6B,QAAQ,4DAA2D;AACzG,SAASC,8BAA8B,QAAQ,8DAA6D;AAC5G,SAASC,qBAAqB,QAAQ,kDAAiD;AACvF,SAASC,wCAAwC,QAAQ,gEAA+D;AACxH,SAASC,gBAAgB,QAAQ,wCAAuC;AACxE,SAASC,iBAAiB,QAAQ,mCAAkC;
|
|
1
|
+
{"version":3,"sources":["../../src/exports/postgres.ts"],"sourcesContent":["export { columnToCodeConverter } from '../postgres/columnToCodeConverter.js'\nexport { countDistinct } from '../postgres/countDistinct.js'\nexport { createDatabase } from '../postgres/createDatabase.js'\nexport { createExtensions } from '../postgres/createExtensions.js'\nexport { createJSONQuery } from '../postgres/createJSONQuery/index.js'\nexport { defaultDrizzleSnapshot } from '../postgres/defaultSnapshot.js'\nexport { deleteWhere } from '../postgres/deleteWhere.js'\nexport { dropDatabase } from '../postgres/dropDatabase.js'\nexport { execute } from '../postgres/execute.js'\nexport { init } from '../postgres/init.js'\nexport { insert } from '../postgres/insert.js'\nexport { migratePostgresLocalizeStatus } from '../postgres/predefinedMigrations/localize-status/index.js'\nexport { migratePostgresSizesToVariants } from '../postgres/predefinedMigrations/sizes-to-variants/index.js'\nexport { migratePostgresV2toV3 } from '../postgres/predefinedMigrations/v2-v3/index.js'\nexport { assertOperatorHandlerExtensionsInstalled } from '../postgres/query/assertOperatorHandlerExtensionsInstalled.js'\nexport { postgresUnaccent } from '../postgres/query/postgresUnaccent.js'\nexport { createRequireDrizzleKit, requireDrizzleKit } from '../postgres/requireDrizzleKit.js'\nexport { geometryColumn } from '../postgres/schema/geometryColumn.js'\nexport * from '../postgres/types.js'\n"],"names":["columnToCodeConverter","countDistinct","createDatabase","createExtensions","createJSONQuery","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","init","insert","migratePostgresLocalizeStatus","migratePostgresSizesToVariants","migratePostgresV2toV3","assertOperatorHandlerExtensionsInstalled","postgresUnaccent","createRequireDrizzleKit","requireDrizzleKit","geometryColumn"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,uCAAsC;AAC5E,SAASC,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,cAAc,QAAQ,gCAA+B;AAC9D,SAASC,gBAAgB,QAAQ,kCAAiC;AAClE,SAASC,eAAe,QAAQ,uCAAsC;AACtE,SAASC,sBAAsB,QAAQ,iCAAgC;AACvE,SAASC,WAAW,QAAQ,6BAA4B;AACxD,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,SAASC,OAAO,QAAQ,yBAAwB;AAChD,SAASC,IAAI,QAAQ,sBAAqB;AAC1C,SAASC,MAAM,QAAQ,wBAAuB;AAC9C,SAASC,6BAA6B,QAAQ,4DAA2D;AACzG,SAASC,8BAA8B,QAAQ,8DAA6D;AAC5G,SAASC,qBAAqB,QAAQ,kDAAiD;AACvF,SAASC,wCAAwC,QAAQ,gEAA+D;AACxH,SAASC,gBAAgB,QAAQ,wCAAuC;AACxE,SAASC,uBAAuB,EAAEC,iBAAiB,QAAQ,mCAAkC;AAC7F,SAASC,cAAc,QAAQ,uCAAsC;AACrE,cAAc,uBAAsB"}
|
package/dist/exports/sqlite.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js';
|
|
|
2
2
|
export { countDistinct } from '../sqlite/countDistinct.js';
|
|
3
3
|
export { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js';
|
|
4
4
|
export { createJSONQuery } from '../sqlite/createJSONQuery/index.js';
|
|
5
|
+
export { createRequireDrizzleKit } from '../sqlite/createRequireDrizzleKit.js';
|
|
5
6
|
export { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js';
|
|
6
7
|
export { deleteWhere } from '../sqlite/deleteWhere.js';
|
|
7
8
|
export { dropDatabase } from '../sqlite/dropDatabase.js';
|
|
@@ -10,6 +11,5 @@ export { init } from '../sqlite/init.js';
|
|
|
10
11
|
export { insert } from '../sqlite/insert.js';
|
|
11
12
|
export { migrateSqliteLocalizeStatus } from '../sqlite/predefinedMigrations/localize-status/index.js';
|
|
12
13
|
export { migrateSqliteSizesToVariants } from '../sqlite/predefinedMigrations/sizes-to-variants/index.js';
|
|
13
|
-
export { requireDrizzleKit } from '../sqlite/requireDrizzleKit.js';
|
|
14
14
|
export * from '../sqlite/types.js';
|
|
15
15
|
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/exports/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAA;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAA;AACxG,
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/exports/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAA;AACrG,OAAO,EAAE,4BAA4B,EAAE,MAAM,2DAA2D,CAAA;AACxG,cAAc,oBAAoB,CAAA"}
|
package/dist/exports/sqlite.js
CHANGED
|
@@ -2,6 +2,7 @@ export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js';
|
|
|
2
2
|
export { countDistinct } from '../sqlite/countDistinct.js';
|
|
3
3
|
export { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js';
|
|
4
4
|
export { createJSONQuery } from '../sqlite/createJSONQuery/index.js';
|
|
5
|
+
export { createRequireDrizzleKit } from '../sqlite/createRequireDrizzleKit.js';
|
|
5
6
|
export { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js';
|
|
6
7
|
export { deleteWhere } from '../sqlite/deleteWhere.js';
|
|
7
8
|
export { dropDatabase } from '../sqlite/dropDatabase.js';
|
|
@@ -10,7 +11,6 @@ export { init } from '../sqlite/init.js';
|
|
|
10
11
|
export { insert } from '../sqlite/insert.js';
|
|
11
12
|
export { migrateSqliteLocalizeStatus } from '../sqlite/predefinedMigrations/localize-status/index.js';
|
|
12
13
|
export { migrateSqliteSizesToVariants } from '../sqlite/predefinedMigrations/sizes-to-variants/index.js';
|
|
13
|
-
export { requireDrizzleKit } from '../sqlite/requireDrizzleKit.js';
|
|
14
14
|
export * from '../sqlite/types.js';
|
|
15
15
|
|
|
16
16
|
//# sourceMappingURL=sqlite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/sqlite.ts"],"sourcesContent":["export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js'\nexport { countDistinct } from '../sqlite/countDistinct.js'\nexport { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js'\nexport { createJSONQuery } from '../sqlite/createJSONQuery/index.js'\nexport { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js'\nexport { deleteWhere } from '../sqlite/deleteWhere.js'\nexport { dropDatabase } from '../sqlite/dropDatabase.js'\nexport { execute } from '../sqlite/execute.js'\nexport { init } from '../sqlite/init.js'\nexport { insert } from '../sqlite/insert.js'\nexport { migrateSqliteLocalizeStatus } from '../sqlite/predefinedMigrations/localize-status/index.js'\nexport { migrateSqliteSizesToVariants } from '../sqlite/predefinedMigrations/sizes-to-variants/index.js'\nexport
|
|
1
|
+
{"version":3,"sources":["../../src/exports/sqlite.ts"],"sourcesContent":["export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js'\nexport { countDistinct } from '../sqlite/countDistinct.js'\nexport { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js'\nexport { createJSONQuery } from '../sqlite/createJSONQuery/index.js'\nexport { createRequireDrizzleKit } from '../sqlite/createRequireDrizzleKit.js'\nexport { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js'\nexport { deleteWhere } from '../sqlite/deleteWhere.js'\nexport { dropDatabase } from '../sqlite/dropDatabase.js'\nexport { execute } from '../sqlite/execute.js'\nexport { init } from '../sqlite/init.js'\nexport { insert } from '../sqlite/insert.js'\nexport { migrateSqliteLocalizeStatus } from '../sqlite/predefinedMigrations/localize-status/index.js'\nexport { migrateSqliteSizesToVariants } from '../sqlite/predefinedMigrations/sizes-to-variants/index.js'\nexport * from '../sqlite/types.js'\n"],"names":["columnToCodeConverter","countDistinct","convertPathToJSONTraversal","createJSONQuery","createRequireDrizzleKit","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","init","insert","migrateSqliteLocalizeStatus","migrateSqliteSizesToVariants"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,qCAAoC;AAC1E,SAASC,aAAa,QAAQ,6BAA4B;AAC1D,SAASC,0BAA0B,QAAQ,0DAAyD;AACpG,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,uBAAuB,QAAQ,uCAAsC;AAC9E,SAASC,sBAAsB,QAAQ,+BAA8B;AACrE,SAASC,WAAW,QAAQ,2BAA0B;AACtD,SAASC,YAAY,QAAQ,4BAA2B;AACxD,SAASC,OAAO,QAAQ,uBAAsB;AAC9C,SAASC,IAAI,QAAQ,oBAAmB;AACxC,SAASC,MAAM,QAAQ,sBAAqB;AAC5C,SAASC,2BAA2B,QAAQ,0DAAyD;AACrG,SAASC,4BAA4B,QAAQ,4DAA2D;AACxG,cAAc,qBAAoB"}
|
|
@@ -31,7 +31,7 @@ const runStatementGroup = async ({ adapter, db, debug, statements })=>{
|
|
|
31
31
|
const adapter = payload.db;
|
|
32
32
|
const dir = payload.db.migrationDir;
|
|
33
33
|
// get the drizzle migrateUpSQL from drizzle using the last schema
|
|
34
|
-
const { generateDrizzleJson, generateMigration, upSnapshot } = adapter.requireDrizzleKit();
|
|
34
|
+
const { generateDrizzleJson, generateMigration, upSnapshot } = await adapter.requireDrizzleKit();
|
|
35
35
|
const drizzleJsonAfter = generateDrizzleJson(adapter.schema);
|
|
36
36
|
// Get the previous migration snapshot
|
|
37
37
|
const previousSnapshot = fs.readdirSync(dir).filter((file)=>file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json')).sort().reverse()?.[0];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/postgres/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BasePostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { getTransaction } from '../../../utilities/getTransaction.js'\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n debug?: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n}\n\nconst runStatementGroup = async ({ adapter, db, debug, statements }) => {\n const addColumnsStatement = statements.join('\\n')\n\n if (debug) {\n adapter.payload.logger.info(debug)\n adapter.payload.logger.info(addColumnsStatement)\n }\n\n await db.execute(sql.raw(addColumnsStatement))\n}\n\n/**\n * Moves upload and relationship columns from the join table and into the tables while moving data\n * This is done in the following order:\n * ADD COLUMNs\n * -- manipulate data to move relationships to new columns\n * ADD CONSTRAINTs\n * NOT NULLs\n * DROP TABLEs\n * DROP CONSTRAINTs\n * DROP COLUMNs\n * @param debug\n * @param payload\n * @param req\n */\nexport const migratePostgresV2toV3 = async ({ debug, payload, req }: Args) => {\n const adapter = payload.db as unknown as BasePostgresAdapter\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration, upSnapshot } = adapter.requireDrizzleKit()\n const drizzleJsonAfter = generateDrizzleJson(adapter.schema) as DrizzleSnapshotJSON\n\n // Get the previous migration snapshot\n const previousSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json'))\n .sort()\n .reverse()?.[0]\n\n if (!previousSnapshot) {\n throw new Error(\n `No previous migration schema file found! A prior migration from v2 is required to migrate to v3.`,\n )\n }\n\n let drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\n\n const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n if (!generatedSQL.length) {\n payload.logger.info(`No schema changes needed.`)\n return\n }\n\n const sqlUpStatements = groupUpSQLStatements(generatedSQL)\n\n const db = await getTransaction(adapter, req)\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING TYPES' : null,\n statements: sqlUpStatements.createType,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'ALTERING TYPES' : null,\n statements: sqlUpStatements.alterType,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING TABLES' : null,\n statements: sqlUpStatements.createTable,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'RENAMING COLUMNS' : null,\n statements: sqlUpStatements.renameColumn,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING NEW RELATIONSHIP COLUMNS' : null,\n statements: sqlUpStatements.addColumn,\n })\n\n // SET DEFAULTS\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'SETTING DEFAULTS' : null,\n statements: sqlUpStatements.setDefault,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING INDEXES' : null,\n statements: sqlUpStatements.createIndex,\n })\n\n for (const collection of payload.config.collections) {\n if (collection.slug === 'payload-locked-documents') {\n continue\n }\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: collection.flattenedFields,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: collection.flattenedFields,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(payload.config, collection, true)\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: versionFields,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n for (const global of payload.config.globals) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(global.slug))\n\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: global.flattenedFields,\n globalSlug: global.slug,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: global.flattenedFields,\n globalSlug: global.slug,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (global.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`,\n )\n\n const versionFields = buildVersionGlobalFields(payload.config, global, true)\n\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n // ADD CONSTRAINT\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'ADDING CONSTRAINTS' : null,\n statements: sqlUpStatements.addConstraint,\n })\n\n // NOT NULL\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'NOT NULL CONSTRAINTS' : null,\n statements: sqlUpStatements.notNull,\n })\n\n // DROP TABLE\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING TABLES' : null,\n statements: sqlUpStatements.dropTable,\n })\n\n // DROP INDEX\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING INDEXES' : null,\n statements: sqlUpStatements.dropIndex,\n })\n\n // DROP CONSTRAINT\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING CONSTRAINTS' : null,\n statements: sqlUpStatements.dropConstraint,\n })\n\n // DROP COLUMN\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING COLUMNS' : null,\n statements: sqlUpStatements.dropColumn,\n })\n\n // DROP TYPES\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING TYPES' : null,\n statements: sqlUpStatements.dropType,\n })\n}\n"],"names":["sql","fs","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","getTransaction","groupUpSQLStatements","migrateRelationships","traverseFields","runStatementGroup","adapter","db","debug","statements","addColumnsStatement","join","payload","logger","info","execute","raw","migratePostgresV2toV3","req","dir","migrationDir","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","drizzleJsonAfter","schema","previousSnapshot","readdirSync","filter","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","version","generatedSQL","length","sqlUpStatements","createType","alterType","createTable","renameColumn","addColumn","setDefault","createIndex","collection","config","collections","slug","tableName","tableNameMap","get","pathsToQuery","Set","collectionSlug","columnPrefix","disableNotNull","fields","flattenedFields","isVersions","newTableName","parentTableName","path","rootTableName","versions","versionsTableName","versionsSuffix","versionFields","versionPathsToQuery","global","globals","globalSlug","addConstraint","notNull","dropTable","dropIndex","dropConstraint","dropColumn","dropType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/postgres/predefinedMigrations/v2-v3/index.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { Payload, PayloadRequest } from 'payload'\n\nimport { sql } from 'drizzle-orm'\nimport fs from 'fs'\nimport { buildVersionCollectionFields, buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { BasePostgresAdapter } from '../../types.js'\nimport type { PathsToQuery } from './types.js'\n\nimport { getTransaction } from '../../../utilities/getTransaction.js'\nimport { groupUpSQLStatements } from './groupUpSQLStatements.js'\nimport { migrateRelationships } from './migrateRelationships.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n debug?: boolean\n payload: Payload\n req?: Partial<PayloadRequest>\n}\n\nconst runStatementGroup = async ({ adapter, db, debug, statements }) => {\n const addColumnsStatement = statements.join('\\n')\n\n if (debug) {\n adapter.payload.logger.info(debug)\n adapter.payload.logger.info(addColumnsStatement)\n }\n\n await db.execute(sql.raw(addColumnsStatement))\n}\n\n/**\n * Moves upload and relationship columns from the join table and into the tables while moving data\n * This is done in the following order:\n * ADD COLUMNs\n * -- manipulate data to move relationships to new columns\n * ADD CONSTRAINTs\n * NOT NULLs\n * DROP TABLEs\n * DROP CONSTRAINTs\n * DROP COLUMNs\n * @param debug\n * @param payload\n * @param req\n */\nexport const migratePostgresV2toV3 = async ({ debug, payload, req }: Args) => {\n const adapter = payload.db as unknown as BasePostgresAdapter\n const dir = payload.db.migrationDir\n\n // get the drizzle migrateUpSQL from drizzle using the last schema\n const { generateDrizzleJson, generateMigration, upSnapshot } = await adapter.requireDrizzleKit()\n const drizzleJsonAfter = generateDrizzleJson(adapter.schema) as DrizzleSnapshotJSON\n\n // Get the previous migration snapshot\n const previousSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json') && !file.endsWith('relationships_v2_v3.json'))\n .sort()\n .reverse()?.[0]\n\n if (!previousSnapshot) {\n throw new Error(\n `No previous migration schema file found! A prior migration from v2 is required to migrate to v3.`,\n )\n }\n\n let drizzleJsonBefore = JSON.parse(\n fs.readFileSync(`${dir}/${previousSnapshot}`, 'utf8'),\n ) as DrizzleSnapshotJSON\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\n\n const generatedSQL = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n if (!generatedSQL.length) {\n payload.logger.info(`No schema changes needed.`)\n return\n }\n\n const sqlUpStatements = groupUpSQLStatements(generatedSQL)\n\n const db = await getTransaction(adapter, req)\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING TYPES' : null,\n statements: sqlUpStatements.createType,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'ALTERING TYPES' : null,\n statements: sqlUpStatements.alterType,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING TABLES' : null,\n statements: sqlUpStatements.createTable,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'RENAMING COLUMNS' : null,\n statements: sqlUpStatements.renameColumn,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING NEW RELATIONSHIP COLUMNS' : null,\n statements: sqlUpStatements.addColumn,\n })\n\n // SET DEFAULTS\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'SETTING DEFAULTS' : null,\n statements: sqlUpStatements.setDefault,\n })\n\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'CREATING INDEXES' : null,\n statements: sqlUpStatements.createIndex,\n })\n\n for (const collection of payload.config.collections) {\n if (collection.slug === 'payload-locked-documents') {\n continue\n }\n const tableName = adapter.tableNameMap.get(toSnakeCase(collection.slug))\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: collection.flattenedFields,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: collection.flattenedFields,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (collection.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(collection.slug)}${adapter.versionsSuffix}`,\n )\n const versionFields = buildVersionCollectionFields(payload.config, collection, true)\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n collectionSlug: collection.slug,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n collectionSlug: collection.slug,\n db,\n debug,\n fields: versionFields,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n for (const global of payload.config.globals) {\n const tableName = adapter.tableNameMap.get(toSnakeCase(global.slug))\n\n const pathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: false,\n fields: global.flattenedFields,\n globalSlug: global.slug,\n isVersions: false,\n newTableName: tableName,\n parentTableName: tableName,\n path: '',\n pathsToQuery,\n payload,\n rootTableName: tableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: global.flattenedFields,\n globalSlug: global.slug,\n isVersions: false,\n pathsToQuery,\n payload,\n req,\n tableName,\n })\n\n if (global.versions) {\n const versionsTableName = adapter.tableNameMap.get(\n `_${toSnakeCase(global.slug)}${adapter.versionsSuffix}`,\n )\n\n const versionFields = buildVersionGlobalFields(payload.config, global, true)\n\n const versionPathsToQuery: PathsToQuery = new Set()\n\n traverseFields({\n adapter,\n columnPrefix: '',\n db,\n disableNotNull: true,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n newTableName: versionsTableName,\n parentTableName: versionsTableName,\n path: '',\n pathsToQuery: versionPathsToQuery,\n payload,\n rootTableName: versionsTableName,\n })\n\n await migrateRelationships({\n adapter,\n db,\n debug,\n fields: versionFields,\n globalSlug: global.slug,\n isVersions: true,\n pathsToQuery: versionPathsToQuery,\n payload,\n req,\n tableName: versionsTableName,\n })\n }\n }\n\n // ADD CONSTRAINT\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'ADDING CONSTRAINTS' : null,\n statements: sqlUpStatements.addConstraint,\n })\n\n // NOT NULL\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'NOT NULL CONSTRAINTS' : null,\n statements: sqlUpStatements.notNull,\n })\n\n // DROP TABLE\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING TABLES' : null,\n statements: sqlUpStatements.dropTable,\n })\n\n // DROP INDEX\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING INDEXES' : null,\n statements: sqlUpStatements.dropIndex,\n })\n\n // DROP CONSTRAINT\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING CONSTRAINTS' : null,\n statements: sqlUpStatements.dropConstraint,\n })\n\n // DROP COLUMN\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING COLUMNS' : null,\n statements: sqlUpStatements.dropColumn,\n })\n\n // DROP TYPES\n await runStatementGroup({\n adapter,\n db,\n debug: debug ? 'DROPPING TYPES' : null,\n statements: sqlUpStatements.dropType,\n })\n}\n"],"names":["sql","fs","buildVersionCollectionFields","buildVersionGlobalFields","toSnakeCase","getTransaction","groupUpSQLStatements","migrateRelationships","traverseFields","runStatementGroup","adapter","db","debug","statements","addColumnsStatement","join","payload","logger","info","execute","raw","migratePostgresV2toV3","req","dir","migrationDir","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","drizzleJsonAfter","schema","previousSnapshot","readdirSync","filter","file","endsWith","sort","reverse","Error","drizzleJsonBefore","JSON","parse","readFileSync","version","generatedSQL","length","sqlUpStatements","createType","alterType","createTable","renameColumn","addColumn","setDefault","createIndex","collection","config","collections","slug","tableName","tableNameMap","get","pathsToQuery","Set","collectionSlug","columnPrefix","disableNotNull","fields","flattenedFields","isVersions","newTableName","parentTableName","path","rootTableName","versions","versionsTableName","versionsSuffix","versionFields","versionPathsToQuery","global","globals","globalSlug","addConstraint","notNull","dropTable","dropIndex","dropConstraint","dropColumn","dropType"],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import type { RequireDrizzleKit } from '../types.js';
|
|
2
|
+
export declare const createRequireDrizzleKit: ({ from, }: {
|
|
3
|
+
/** Module URL of the adapter that owns the drizzle-kit dependency. */
|
|
4
|
+
from: string;
|
|
5
|
+
}) => RequireDrizzleKit;
|
|
2
6
|
export declare const requireDrizzleKit: RequireDrizzleKit;
|
|
3
7
|
//# sourceMappingURL=requireDrizzleKit.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/postgres/requireDrizzleKit.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"requireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/postgres/requireDrizzleKit.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,eAAO,MAAM,uBAAuB,cAG/B;IACD,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,iBAcH,CAAA;AAEH,eAAO,MAAM,iBAAiB,mBAAqD,CAAA"}
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
export const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
generateDrizzleJson,
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import nodeModule from 'node:module';
|
|
2
|
+
import { dynamicImport } from 'payload';
|
|
3
|
+
export const createRequireDrizzleKit = ({ from })=>async ()=>{
|
|
4
|
+
// Use the default import to preserve Node's loader instead of Webpack's createRequire transform.
|
|
5
|
+
const require = nodeModule.createRequire(from);
|
|
6
|
+
const { generateDrizzleJson, generateMigration, pushSchema, upPgSnapshot } = await dynamicImport(require.resolve('drizzle-kit/api'));
|
|
7
|
+
return {
|
|
8
|
+
generateDrizzleJson,
|
|
9
|
+
generateMigration,
|
|
10
|
+
// Drizzle Kit bundles separate ORM types; the owning adapter selects the matching dialect.
|
|
11
|
+
pushSchema: pushSchema,
|
|
12
|
+
upSnapshot: upPgSnapshot
|
|
13
|
+
};
|
|
10
14
|
};
|
|
11
|
-
|
|
15
|
+
export const requireDrizzleKit = createRequireDrizzleKit({
|
|
16
|
+
from: import.meta.url
|
|
17
|
+
});
|
|
12
18
|
|
|
13
19
|
//# sourceMappingURL=requireDrizzleKit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/postgres/requireDrizzleKit.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../../src/postgres/requireDrizzleKit.ts"],"sourcesContent":["import type * as DrizzleKit from 'drizzle-kit/api'\n\nimport nodeModule from 'node:module'\nimport { dynamicImport } from 'payload'\n\nimport type { RequireDrizzleKit } from '../types.js'\n\nexport const createRequireDrizzleKit =\n ({\n from,\n }: {\n /** Module URL of the adapter that owns the drizzle-kit dependency. */\n from: string\n }): RequireDrizzleKit =>\n async () => {\n // Use the default import to preserve Node's loader instead of Webpack's createRequire transform.\n const require = nodeModule.createRequire(from)\n const { generateDrizzleJson, generateMigration, pushSchema, upPgSnapshot } =\n await dynamicImport<typeof DrizzleKit>(require.resolve('drizzle-kit/api'))\n\n return {\n generateDrizzleJson,\n generateMigration,\n // Drizzle Kit bundles separate ORM types; the owning adapter selects the matching dialect.\n pushSchema: pushSchema as unknown as Awaited<ReturnType<RequireDrizzleKit>>['pushSchema'],\n upSnapshot: upPgSnapshot,\n }\n }\n\nexport const requireDrizzleKit = createRequireDrizzleKit({ from: import.meta.url })\n"],"names":["nodeModule","dynamicImport","createRequireDrizzleKit","from","require","createRequire","generateDrizzleJson","generateMigration","pushSchema","upPgSnapshot","resolve","upSnapshot","requireDrizzleKit","url"],"mappings":"AAEA,OAAOA,gBAAgB,cAAa;AACpC,SAASC,aAAa,QAAQ,UAAS;AAIvC,OAAO,MAAMC,0BACX,CAAC,EACCC,IAAI,EAIL,GACD;QACE,iGAAiG;QACjG,MAAMC,UAAUJ,WAAWK,aAAa,CAACF;QACzC,MAAM,EAAEG,mBAAmB,EAAEC,iBAAiB,EAAEC,UAAU,EAAEC,YAAY,EAAE,GACxE,MAAMR,cAAiCG,QAAQM,OAAO,CAAC;QAEzD,OAAO;YACLJ;YACAC;YACA,2FAA2F;YAC3FC,YAAYA;YACZG,YAAYF;QACd;IACF,EAAC;AAEH,OAAO,MAAMG,oBAAoBV,wBAAwB;IAAEC,MAAM,YAAYU,GAAG;AAAC,GAAE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RequireDrizzleKit } from '../types.js';
|
|
2
|
+
export declare const createRequireDrizzleKit: ({ from, }: {
|
|
3
|
+
/** Module URL of the adapter that owns the drizzle-kit dependency. */
|
|
4
|
+
from: string;
|
|
5
|
+
}) => RequireDrizzleKit;
|
|
6
|
+
//# sourceMappingURL=createRequireDrizzleKit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRequireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/sqlite/createRequireDrizzleKit.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,eAAO,MAAM,uBAAuB,cAG/B;IACD,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;CACb,KAAG,iBAeH,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import nodeModule from 'node:module';
|
|
2
|
+
import { dynamicImport } from 'payload';
|
|
3
|
+
export const createRequireDrizzleKit = ({ from })=>async ()=>{
|
|
4
|
+
// Use the default import to preserve Node's loader instead of Webpack's createRequire transform.
|
|
5
|
+
const require = nodeModule.createRequire(from);
|
|
6
|
+
const { generateSQLiteDrizzleJson, generateSQLiteMigration, pushSQLiteSchema } = await dynamicImport(require.resolve('drizzle-kit/api'));
|
|
7
|
+
return {
|
|
8
|
+
generateDrizzleJson: generateSQLiteDrizzleJson,
|
|
9
|
+
generateMigration: generateSQLiteMigration,
|
|
10
|
+
// Drizzle Kit bundles separate ORM types; the owning adapter selects the matching dialect.
|
|
11
|
+
pushSchema: pushSQLiteSchema
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=createRequireDrizzleKit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/sqlite/createRequireDrizzleKit.ts"],"sourcesContent":["import type * as DrizzleKit from 'drizzle-kit/api'\n\nimport nodeModule from 'node:module'\nimport { dynamicImport } from 'payload'\n\nimport type { RequireDrizzleKit } from '../types.js'\n\nexport const createRequireDrizzleKit =\n ({\n from,\n }: {\n /** Module URL of the adapter that owns the drizzle-kit dependency. */\n from: string\n }): RequireDrizzleKit =>\n async () => {\n // Use the default import to preserve Node's loader instead of Webpack's createRequire transform.\n const require = nodeModule.createRequire(from)\n const { generateSQLiteDrizzleJson, generateSQLiteMigration, pushSQLiteSchema } =\n await dynamicImport<typeof DrizzleKit>(require.resolve('drizzle-kit/api'))\n\n return {\n generateDrizzleJson: generateSQLiteDrizzleJson,\n generateMigration: generateSQLiteMigration,\n // Drizzle Kit bundles separate ORM types; the owning adapter selects the matching dialect.\n pushSchema: pushSQLiteSchema as unknown as Awaited<\n ReturnType<RequireDrizzleKit>\n >['pushSchema'],\n }\n }\n"],"names":["nodeModule","dynamicImport","createRequireDrizzleKit","from","require","createRequire","generateSQLiteDrizzleJson","generateSQLiteMigration","pushSQLiteSchema","resolve","generateDrizzleJson","generateMigration","pushSchema"],"mappings":"AAEA,OAAOA,gBAAgB,cAAa;AACpC,SAASC,aAAa,QAAQ,UAAS;AAIvC,OAAO,MAAMC,0BACX,CAAC,EACCC,IAAI,EAIL,GACD;QACE,iGAAiG;QACjG,MAAMC,UAAUJ,WAAWK,aAAa,CAACF;QACzC,MAAM,EAAEG,yBAAyB,EAAEC,uBAAuB,EAAEC,gBAAgB,EAAE,GAC5E,MAAMP,cAAiCG,QAAQK,OAAO,CAAC;QAEzD,OAAO;YACLC,qBAAqBJ;YACrBK,mBAAmBJ;YACnB,2FAA2F;YAC3FK,YAAYJ;QAGd;IACF,EAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -67,7 +67,7 @@ export type Insert = (args: {
|
|
|
67
67
|
tableName: string;
|
|
68
68
|
values: Record<string, unknown> | Record<string, unknown>[];
|
|
69
69
|
}) => Promise<Record<string, unknown>[]>;
|
|
70
|
-
export type RequireDrizzleKit = () => {
|
|
70
|
+
export type RequireDrizzleKit = () => Promise<{
|
|
71
71
|
generateDrizzleJson: (args: Record<string, unknown>) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>;
|
|
72
72
|
generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>;
|
|
73
73
|
pushSchema: (schema: Record<string, unknown>, drizzle: DrizzleAdapter['drizzle'], filterSchema?: string[], tablesFilter?: string[], extensionsFilter?: string[]) => Promise<{
|
|
@@ -76,7 +76,7 @@ export type RequireDrizzleKit = () => {
|
|
|
76
76
|
warnings: any;
|
|
77
77
|
}>;
|
|
78
78
|
upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON;
|
|
79
|
-
}
|
|
79
|
+
}>;
|
|
80
80
|
export type Migration = {
|
|
81
81
|
down: ({ db, payload, req, }: {
|
|
82
82
|
db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n Column,\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n SQL,\n TableRelationalConfig,\n} from 'drizzle-orm'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgTable,\n PgTransaction,\n Precision,\n UpdateDeleteAction,\n} from 'drizzle-orm/pg-core'\nimport type { SQLiteColumn, SQLiteTable, SQLiteTransaction } from 'drizzle-orm/sqlite-core'\nimport type { Result } from 'drizzle-orm/sqlite-core/session'\nimport type {\n BaseDatabaseAdapter,\n FlattenedField,\n MigrationData,\n Operator,\n Payload,\n PayloadRequest,\n} from 'payload'\n\nimport type { BuildQueryJoinAliases } from './queries/buildQuery.js'\n\nexport { BuildQueryJoinAliases }\n\nimport type { ResultSet } from '@libsql/client'\nimport type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { SQLiteRaw } from 'drizzle-orm/sqlite-core/query-builders/raw'\nimport type { QueryResult } from 'pg'\n\nimport type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js'\n\nexport type PostgresDB = NodePgDatabase<Record<string, unknown>>\n\nexport type SQLiteDB = LibSQLDatabase<\n Record<string, GenericRelation | GenericTable> & Record<string, unknown>\n>\n\nexport type GenericPgColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns<T> = {\n [x: string]: T\n}\n\ntype GenericPgTable = PgTable<{\n columns: GenericColumns<GenericPgColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\ntype GenericSQLiteTable = SQLiteTable<{\n columns: GenericColumns<SQLiteColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericColumn = GenericPgColumn | SQLiteColumn\n\nexport type GenericTable = GenericPgTable | GenericSQLiteTable\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type TransactionSQLite = SQLiteTransaction<\n 'async',\n Result<'async', unknown>,\n Record<string, unknown>,\n { tsName: TableRelationalConfig }\n>\nexport type TransactionPg = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type DrizzleTransaction = TransactionPg | TransactionSQLite\n\nexport type CountDistinct = (args: {\n column?: PgColumn<any> | SQLiteColumn<any>\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n joins: BuildQueryJoinAliases\n tableName: string\n where: SQL\n}) => Promise<number>\n\nexport type DeleteWhere = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n tableName: string\n where: SQL\n}) => Promise<void>\n\nexport type DropDatabase = (args: { adapter: DrizzleAdapter }) => Promise<void>\n\nexport type Execute<T> = (args: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n drizzle?: LibSQLDatabase | PostgresDB\n raw?: string\n sql?: SQL<unknown>\n}) =>\n | Promise<QueryResult<Record<string, T>>>\n | SQLiteRaw<Promise<{ rows: T[] }>>\n | SQLiteRaw<ResultSet>\n\nexport type Insert = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n onConflictDoUpdate?: unknown\n tableName: string\n values: Record<string, unknown> | Record<string, unknown>[]\n}) => Promise<Record<string, unknown>[]>\n\nexport type RequireDrizzleKit = () => {\n generateDrizzleJson: (\n args: Record<string, unknown>,\n ) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>\n generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>\n pushSchema: (\n schema: Record<string, unknown>,\n drizzle: DrizzleAdapter['drizzle'],\n filterSchema?: string[],\n tablesFilter?: string[],\n extensionsFilter?: string[],\n ) => Promise<{ apply; hasDataLoss; warnings }>\n upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON\n}\n\nexport type Migration = {\n down: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n up: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n} & MigrationData\n\nexport type CreateJSONQueryArgs = {\n column?: Column | string\n operator: string\n pathSegments: string[]\n rawColumn?: SQL<unknown>\n table?: string\n treatAsArray?: string[]\n treatRootAsArray?: boolean\n value: boolean | number | number[] | string | string[]\n}\n\n/**\n * Abstract relation link\n */\nexport type RawRelation =\n | {\n fields: { name: string; table: string }[]\n references: string[]\n relationName?: string\n to: string\n type: 'one'\n }\n | {\n relationName?: string\n to: string\n type: 'many'\n }\n\n/**\n * Abstract SQL table that later gets converted by database specific implementation to Drizzle\n */\nexport type RawTable = {\n columns: Record<string, RawColumn>\n foreignKeys?: Record<string, RawForeignKey>\n indexes?: Record<string, RawIndex>\n name: string\n}\n\n/**\n * Abstract SQL foreign key that later gets converted by database specific implementation to Drizzle\n */\nexport type RawForeignKey = {\n columns: string[]\n foreignColumns: { name: string; table: string }[]\n name: string\n onDelete?: UpdateDeleteAction\n onUpdate?: UpdateDeleteAction\n}\n\n/**\n * Abstract SQL index that later gets converted by database specific implementation to Drizzle\n */\nexport type RawIndex = {\n name: string\n on: string | string[]\n unique?: boolean\n}\n\n/**\n * Abstract SQL column that later gets converted by database specific implementation to Drizzle\n */\nexport type BaseRawColumn = {\n default?: any\n name: string\n notNull?: boolean\n primaryKey?: boolean\n reference?: {\n name: string\n onDelete: UpdateDeleteAction\n table: string\n }\n}\n\n/**\n * Postgres: native timestamp type\n * SQLite: text column, defaultNow achieved through strftime('%Y-%m-%dT%H:%M:%fZ', 'now'). withTimezone/precision have no any effect.\n */\nexport type TimestampRawColumn = {\n defaultNow?: boolean\n mode: 'date' | 'string'\n precision: Precision\n type: 'timestamp'\n withTimezone?: boolean\n} & BaseRawColumn\n\n/**\n * Postgres: native UUID type and db lavel defaultRandom\n * SQLite: text type and defaultRandom in the app level\n */\nexport type UUIDRawColumn = {\n defaultRandom?: boolean\n /** App-side UUID v7 default (Postgres & SQLite); mutually exclusive with defaultRandom in practice */\n defaultV7?: boolean\n type: 'uuid'\n} & BaseRawColumn\n\n/**\n * Accepts either `locale: true` to have options from locales or `options` string array\n * Postgres: native enums\n * SQLite: text column with checks.\n */\nexport type EnumRawColumn = (\n | {\n enumName: string\n options: string[]\n type: 'enum'\n }\n | {\n locale: true\n type: 'enum'\n }\n) &\n BaseRawColumn\n\nexport type IntegerRawColumn = {\n /**\n * SQLite only.\n * Enable [AUTOINCREMENT](https://www.sqlite.org/autoinc.html) for primary key to ensure that the same ID cannot be reused from previously deleted rows.\n */\n autoIncrement?: boolean\n type: 'integer'\n} & BaseRawColumn\n\nexport type VectorRawColumn = {\n dimensions?: number\n type: 'vector'\n} & BaseRawColumn\n\nexport type HalfVecRawColumn = {\n dimensions?: number\n type: 'halfvec'\n} & BaseRawColumn\n\nexport type SparseVecRawColumn = {\n dimensions?: number\n type: 'sparsevec'\n} & BaseRawColumn\n\nexport type BinaryVecRawColumn = {\n dimensions?: number\n type: 'bit'\n} & BaseRawColumn\n\nexport type RawColumn =\n | ({\n type: 'boolean' | 'geometry' | 'jsonb' | 'numeric' | 'serial' | 'text' | 'varchar'\n } & BaseRawColumn)\n | BinaryVecRawColumn\n | EnumRawColumn\n | HalfVecRawColumn\n | IntegerRawColumn\n | SparseVecRawColumn\n | TimestampRawColumn\n | UUIDRawColumn\n | VectorRawColumn\n\nexport type IDType = 'integer' | 'numeric' | 'text' | 'uuid' | 'varchar'\n\nexport type SetColumnID = (args: {\n adapter: DrizzleAdapter\n columns: Record<string, RawColumn>\n fields: FlattenedField[]\n}) => IDType\n\nexport type ColumnToCodeConverter = (args: {\n adapter: DrizzleAdapter\n addEnum: (name: string, options: string[]) => void\n addImport: (from: string, name: string) => void\n circularEdges?: Set<string>\n column: RawColumn\n locales?: string[]\n tableKey: string\n}) => string\n\nexport type BuildDrizzleTable<T extends DrizzleAdapter = DrizzleAdapter> = (args: {\n adapter: T\n locales: string[]\n rawTable: RawTable\n}) => void\n\nexport type BlocksToJsonBlockToMigrate = {\n data: Record<string, unknown> | Record<string, unknown>[]\n fieldAccessor: (number | string)[]\n}\n\nexport interface BaseBlocksToJsonEntityToMigrate {\n blocks: BlocksToJsonBlockToMigrate[]\n originalData: Record<string, any>\n}\n\nexport interface CollectionOrVersionBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n id: number | string\n slug: string\n type: 'collection' | 'collectionVersion' | 'globalVersion'\n}\n\nexport interface GlobalBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n slug: string\n type: 'global'\n}\n\nexport type BlocksToJsonEntityToMigrate =\n | CollectionOrVersionBlocksToJsonEntityToMigrate\n | GlobalBlocksToJsonEntityToMigrate\n\nexport interface BlocksToJsonMigrator {\n collectAndSaveEntitiesToBatches(\n req: PayloadRequest,\n options?: {\n batchSize?: number\n },\n ): Promise<void>\n getMigrationStatements(): Promise<{\n statements: string\n writeDrizzleSnapshot(filePath: string): void\n }>\n migrateEntitiesFromTempFolder(\n req: PayloadRequest,\n options?: {\n clearBatches?: boolean\n },\n ): Promise<void>\n setTempFolder(tempFolderPath: string): void\n updatePayloadConfigFile(): Promise<void>\n}\n\n/**\n * The information passed to a query-operator handler for one user-facing leaf comparison.\n */\nexport type DrizzleOperatorHandlerContext = {\n adapter: DrizzleAdapter\n column: Column | SQL\n field: FlattenedField\n locale?: string\n /** The operator supplied by the Payload query, before any adapter conversions. */\n originalOperator: Operator\n path: string\n /** The operator actually sent to the database after Payload's existing conversions. */\n resolvedOperator: DrizzleResolvedOperator\n storage: 'column'\n value: unknown\n}\n\n/**\n * Transforms the column and/or value of a matching operator before the default (or replacement)\n * comparison runs. Multiple matching transform handlers compose in configuration order.\n */\nexport type DrizzleOperandTransformHandler = {\n build?: never\n /** Restricts the handler to these Payload field types. Omit to match every field type. */\n fieldTypes?: FlattenedField['type'][]\n name: string\n operators: DrizzleResolvedOperator[]\n transformOperands: (context: DrizzleOperatorHandlerContext) => {\n column: Column | SQL\n value: unknown\n }\n}\n\n/**\n * Replaces the default comparison for a matching operator entirely. Runs after every matching\n * `transformOperands` handler has already run.\n */\nexport type DrizzleOperatorReplacementHandler = {\n build: (context: DrizzleOperatorHandlerContext) => SQL\n /** Restricts the handler to these Payload field types. Omit to match every field type. */\n fieldTypes?: FlattenedField['type'][]\n name: string\n operators: DrizzleResolvedOperator[]\n transformOperands?: never\n}\n\nexport type DrizzleOperatorHandler =\n | DrizzleOperandTransformHandler\n | DrizzleOperatorReplacementHandler\n\nexport type DrizzleQueryConfig = {\n operatorHandlers?: DrizzleOperatorHandler[]\n}\n\nexport interface DrizzleAdapter extends BaseDatabaseAdapter {\n blocksAsJSON?: boolean\n blocksToJsonMigrator?: BlocksToJsonMigrator\n convertPathToJSONTraversal?: (incomingSegments: string[]) => string\n countDistinct: CountDistinct\n createJSONQuery: (args: CreateJSONQueryArgs) => string\n defaultDrizzleSnapshot: Record<string, unknown>\n deleteWhere: DeleteWhere\n drizzle: LibSQLDatabase | PostgresDB\n dropDatabase: DropDatabase\n enums?: never | Record<string, unknown>\n execute: Execute<unknown>\n features: {\n json?: boolean\n }\n /**\n * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n\n foreignKeys: Set<string>\n idType: 'serial' | 'uuid' | 'uuidv7'\n indexes: Set<string>\n initializing: Promise<void>\n insert: Insert\n /**\n * Timestamp (ms) of the last write operation. When read replicas are configured,\n * reads within `readReplicasAfterWriteInterval` ms of this timestamp are routed to the\n * primary to guarantee read-after-write consistency.\n */\n lastWriteTimestamp?: number\n limitedBoundParameters?: boolean\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n operatorHandlers: DrizzleOperatorHandler[]\n operators: Operators\n /**\n * When read replicas are configured, holds the unwrapped primary drizzle instance\n * (before withReplicas wrapping). Used for reads that are part of write operations\n * to avoid replication lag.\n */\n primaryDrizzle?: PostgresDB\n push: boolean\n rawRelations: Record<string, Record<string, RawRelation>>\n rawTables: Record<string, RawTable>\n /**\n * How long (ms) after a write to route reads to the primary instead of a\n * read replica. Avoids stale reads caused by replication lag.\n * @default 2000\n */\n readReplicasAfterWriteInterval: number\n\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n requireDrizzleKit: RequireDrizzleKit\n resolveInitializing: () => void\n\n schema: Record<string, unknown>\n\n schemaName?: string\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tableNameMap: Map<string, string>\n tables: Record<string, any>\n transactionOptions: unknown\n versionsSuffix?: string\n}\n\nexport type RelationMap = Map<\n string,\n {\n localized: boolean\n relationName?: string\n target: string\n type: 'many' | 'one'\n }\n>\n"],"names":[],"mappings":"AAmgBA,WAQC"}
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type {\n Column,\n ColumnBaseConfig,\n ColumnDataType,\n DrizzleConfig,\n ExtractTablesWithRelations,\n Relation,\n Relations,\n SQL,\n TableRelationalConfig,\n} from 'drizzle-orm'\nimport type { LibSQLDatabase } from 'drizzle-orm/libsql'\nimport type { NodePgDatabase, NodePgQueryResultHKT } from 'drizzle-orm/node-postgres'\nimport type {\n PgColumn,\n PgTable,\n PgTransaction,\n Precision,\n UpdateDeleteAction,\n} from 'drizzle-orm/pg-core'\nimport type { SQLiteColumn, SQLiteTable, SQLiteTransaction } from 'drizzle-orm/sqlite-core'\nimport type { Result } from 'drizzle-orm/sqlite-core/session'\nimport type {\n BaseDatabaseAdapter,\n FlattenedField,\n MigrationData,\n Operator,\n Payload,\n PayloadRequest,\n} from 'payload'\n\nimport type { BuildQueryJoinAliases } from './queries/buildQuery.js'\n\nexport { BuildQueryJoinAliases }\n\nimport type { ResultSet } from '@libsql/client'\nimport type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { SQLiteRaw } from 'drizzle-orm/sqlite-core/query-builders/raw'\nimport type { QueryResult } from 'pg'\n\nimport type { DrizzleResolvedOperator, Operators } from './queries/operatorMap.js'\n\nexport type PostgresDB = NodePgDatabase<Record<string, unknown>>\n\nexport type SQLiteDB = LibSQLDatabase<\n Record<string, GenericRelation | GenericTable> & Record<string, unknown>\n>\n\nexport type GenericPgColumn = PgColumn<\n ColumnBaseConfig<ColumnDataType, string>,\n Record<string, unknown>\n>\n\nexport type GenericColumns<T> = {\n [x: string]: T\n}\n\ntype GenericPgTable = PgTable<{\n columns: GenericColumns<GenericPgColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\ntype GenericSQLiteTable = SQLiteTable<{\n columns: GenericColumns<SQLiteColumn>\n dialect: string\n name: string\n schema: undefined\n}>\n\nexport type GenericColumn = GenericPgColumn | SQLiteColumn\n\nexport type GenericTable = GenericPgTable | GenericSQLiteTable\n\nexport type GenericRelation = Relations<string, Record<string, Relation<string>>>\n\nexport type TransactionSQLite = SQLiteTransaction<\n 'async',\n Result<'async', unknown>,\n Record<string, unknown>,\n { tsName: TableRelationalConfig }\n>\nexport type TransactionPg = PgTransaction<\n NodePgQueryResultHKT,\n Record<string, unknown>,\n ExtractTablesWithRelations<Record<string, unknown>>\n>\n\nexport type DrizzleTransaction = TransactionPg | TransactionSQLite\n\nexport type CountDistinct = (args: {\n column?: PgColumn<any> | SQLiteColumn<any>\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n joins: BuildQueryJoinAliases\n tableName: string\n where: SQL\n}) => Promise<number>\n\nexport type DeleteWhere = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n tableName: string\n where: SQL\n}) => Promise<void>\n\nexport type DropDatabase = (args: { adapter: DrizzleAdapter }) => Promise<void>\n\nexport type Execute<T> = (args: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n drizzle?: LibSQLDatabase | PostgresDB\n raw?: string\n sql?: SQL<unknown>\n}) =>\n | Promise<QueryResult<Record<string, T>>>\n | SQLiteRaw<Promise<{ rows: T[] }>>\n | SQLiteRaw<ResultSet>\n\nexport type Insert = (args: {\n db: DrizzleTransaction | LibSQLDatabase | PostgresDB\n onConflictDoUpdate?: unknown\n tableName: string\n values: Record<string, unknown> | Record<string, unknown>[]\n}) => Promise<Record<string, unknown>[]>\n\nexport type RequireDrizzleKit = () => Promise<{\n generateDrizzleJson: (\n args: Record<string, unknown>,\n ) => DrizzleSnapshotJSON | Promise<DrizzleSnapshotJSON>\n generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>\n pushSchema: (\n schema: Record<string, unknown>,\n drizzle: DrizzleAdapter['drizzle'],\n filterSchema?: string[],\n tablesFilter?: string[],\n extensionsFilter?: string[],\n ) => Promise<{ apply; hasDataLoss; warnings }>\n upSnapshot?: (snapshot: Record<string, unknown>) => DrizzleSnapshotJSON\n}>\n\nexport type Migration = {\n down: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase<Record<string, never>> | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n up: ({\n db,\n payload,\n req,\n }: {\n db?: DrizzleTransaction | LibSQLDatabase | PostgresDB\n payload: Payload\n req: PayloadRequest\n }) => Promise<void>\n} & MigrationData\n\nexport type CreateJSONQueryArgs = {\n column?: Column | string\n operator: string\n pathSegments: string[]\n rawColumn?: SQL<unknown>\n table?: string\n treatAsArray?: string[]\n treatRootAsArray?: boolean\n value: boolean | number | number[] | string | string[]\n}\n\n/**\n * Abstract relation link\n */\nexport type RawRelation =\n | {\n fields: { name: string; table: string }[]\n references: string[]\n relationName?: string\n to: string\n type: 'one'\n }\n | {\n relationName?: string\n to: string\n type: 'many'\n }\n\n/**\n * Abstract SQL table that later gets converted by database specific implementation to Drizzle\n */\nexport type RawTable = {\n columns: Record<string, RawColumn>\n foreignKeys?: Record<string, RawForeignKey>\n indexes?: Record<string, RawIndex>\n name: string\n}\n\n/**\n * Abstract SQL foreign key that later gets converted by database specific implementation to Drizzle\n */\nexport type RawForeignKey = {\n columns: string[]\n foreignColumns: { name: string; table: string }[]\n name: string\n onDelete?: UpdateDeleteAction\n onUpdate?: UpdateDeleteAction\n}\n\n/**\n * Abstract SQL index that later gets converted by database specific implementation to Drizzle\n */\nexport type RawIndex = {\n name: string\n on: string | string[]\n unique?: boolean\n}\n\n/**\n * Abstract SQL column that later gets converted by database specific implementation to Drizzle\n */\nexport type BaseRawColumn = {\n default?: any\n name: string\n notNull?: boolean\n primaryKey?: boolean\n reference?: {\n name: string\n onDelete: UpdateDeleteAction\n table: string\n }\n}\n\n/**\n * Postgres: native timestamp type\n * SQLite: text column, defaultNow achieved through strftime('%Y-%m-%dT%H:%M:%fZ', 'now'). withTimezone/precision have no any effect.\n */\nexport type TimestampRawColumn = {\n defaultNow?: boolean\n mode: 'date' | 'string'\n precision: Precision\n type: 'timestamp'\n withTimezone?: boolean\n} & BaseRawColumn\n\n/**\n * Postgres: native UUID type and db lavel defaultRandom\n * SQLite: text type and defaultRandom in the app level\n */\nexport type UUIDRawColumn = {\n defaultRandom?: boolean\n /** App-side UUID v7 default (Postgres & SQLite); mutually exclusive with defaultRandom in practice */\n defaultV7?: boolean\n type: 'uuid'\n} & BaseRawColumn\n\n/**\n * Accepts either `locale: true` to have options from locales or `options` string array\n * Postgres: native enums\n * SQLite: text column with checks.\n */\nexport type EnumRawColumn = (\n | {\n enumName: string\n options: string[]\n type: 'enum'\n }\n | {\n locale: true\n type: 'enum'\n }\n) &\n BaseRawColumn\n\nexport type IntegerRawColumn = {\n /**\n * SQLite only.\n * Enable [AUTOINCREMENT](https://www.sqlite.org/autoinc.html) for primary key to ensure that the same ID cannot be reused from previously deleted rows.\n */\n autoIncrement?: boolean\n type: 'integer'\n} & BaseRawColumn\n\nexport type VectorRawColumn = {\n dimensions?: number\n type: 'vector'\n} & BaseRawColumn\n\nexport type HalfVecRawColumn = {\n dimensions?: number\n type: 'halfvec'\n} & BaseRawColumn\n\nexport type SparseVecRawColumn = {\n dimensions?: number\n type: 'sparsevec'\n} & BaseRawColumn\n\nexport type BinaryVecRawColumn = {\n dimensions?: number\n type: 'bit'\n} & BaseRawColumn\n\nexport type RawColumn =\n | ({\n type: 'boolean' | 'geometry' | 'jsonb' | 'numeric' | 'serial' | 'text' | 'varchar'\n } & BaseRawColumn)\n | BinaryVecRawColumn\n | EnumRawColumn\n | HalfVecRawColumn\n | IntegerRawColumn\n | SparseVecRawColumn\n | TimestampRawColumn\n | UUIDRawColumn\n | VectorRawColumn\n\nexport type IDType = 'integer' | 'numeric' | 'text' | 'uuid' | 'varchar'\n\nexport type SetColumnID = (args: {\n adapter: DrizzleAdapter\n columns: Record<string, RawColumn>\n fields: FlattenedField[]\n}) => IDType\n\nexport type ColumnToCodeConverter = (args: {\n adapter: DrizzleAdapter\n addEnum: (name: string, options: string[]) => void\n addImport: (from: string, name: string) => void\n circularEdges?: Set<string>\n column: RawColumn\n locales?: string[]\n tableKey: string\n}) => string\n\nexport type BuildDrizzleTable<T extends DrizzleAdapter = DrizzleAdapter> = (args: {\n adapter: T\n locales: string[]\n rawTable: RawTable\n}) => void\n\nexport type BlocksToJsonBlockToMigrate = {\n data: Record<string, unknown> | Record<string, unknown>[]\n fieldAccessor: (number | string)[]\n}\n\nexport interface BaseBlocksToJsonEntityToMigrate {\n blocks: BlocksToJsonBlockToMigrate[]\n originalData: Record<string, any>\n}\n\nexport interface CollectionOrVersionBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n id: number | string\n slug: string\n type: 'collection' | 'collectionVersion' | 'globalVersion'\n}\n\nexport interface GlobalBlocksToJsonEntityToMigrate extends BaseBlocksToJsonEntityToMigrate {\n slug: string\n type: 'global'\n}\n\nexport type BlocksToJsonEntityToMigrate =\n | CollectionOrVersionBlocksToJsonEntityToMigrate\n | GlobalBlocksToJsonEntityToMigrate\n\nexport interface BlocksToJsonMigrator {\n collectAndSaveEntitiesToBatches(\n req: PayloadRequest,\n options?: {\n batchSize?: number\n },\n ): Promise<void>\n getMigrationStatements(): Promise<{\n statements: string\n writeDrizzleSnapshot(filePath: string): void\n }>\n migrateEntitiesFromTempFolder(\n req: PayloadRequest,\n options?: {\n clearBatches?: boolean\n },\n ): Promise<void>\n setTempFolder(tempFolderPath: string): void\n updatePayloadConfigFile(): Promise<void>\n}\n\n/**\n * The information passed to a query-operator handler for one user-facing leaf comparison.\n */\nexport type DrizzleOperatorHandlerContext = {\n adapter: DrizzleAdapter\n column: Column | SQL\n field: FlattenedField\n locale?: string\n /** The operator supplied by the Payload query, before any adapter conversions. */\n originalOperator: Operator\n path: string\n /** The operator actually sent to the database after Payload's existing conversions. */\n resolvedOperator: DrizzleResolvedOperator\n storage: 'column'\n value: unknown\n}\n\n/**\n * Transforms the column and/or value of a matching operator before the default (or replacement)\n * comparison runs. Multiple matching transform handlers compose in configuration order.\n */\nexport type DrizzleOperandTransformHandler = {\n build?: never\n /** Restricts the handler to these Payload field types. Omit to match every field type. */\n fieldTypes?: FlattenedField['type'][]\n name: string\n operators: DrizzleResolvedOperator[]\n transformOperands: (context: DrizzleOperatorHandlerContext) => {\n column: Column | SQL\n value: unknown\n }\n}\n\n/**\n * Replaces the default comparison for a matching operator entirely. Runs after every matching\n * `transformOperands` handler has already run.\n */\nexport type DrizzleOperatorReplacementHandler = {\n build: (context: DrizzleOperatorHandlerContext) => SQL\n /** Restricts the handler to these Payload field types. Omit to match every field type. */\n fieldTypes?: FlattenedField['type'][]\n name: string\n operators: DrizzleResolvedOperator[]\n transformOperands?: never\n}\n\nexport type DrizzleOperatorHandler =\n | DrizzleOperandTransformHandler\n | DrizzleOperatorReplacementHandler\n\nexport type DrizzleQueryConfig = {\n operatorHandlers?: DrizzleOperatorHandler[]\n}\n\nexport interface DrizzleAdapter extends BaseDatabaseAdapter {\n blocksAsJSON?: boolean\n blocksToJsonMigrator?: BlocksToJsonMigrator\n convertPathToJSONTraversal?: (incomingSegments: string[]) => string\n countDistinct: CountDistinct\n createJSONQuery: (args: CreateJSONQueryArgs) => string\n defaultDrizzleSnapshot: Record<string, unknown>\n deleteWhere: DeleteWhere\n drizzle: LibSQLDatabase | PostgresDB\n dropDatabase: DropDatabase\n enums?: never | Record<string, unknown>\n execute: Execute<unknown>\n features: {\n json?: boolean\n }\n /**\n * An object keyed on each table, with a key value pair where the constraint name is the key, followed by the dot-notation field name\n * Used for returning properly formed errors from unique fields\n */\n fieldConstraints: Record<string, Record<string, string>>\n\n foreignKeys: Set<string>\n idType: 'serial' | 'uuid' | 'uuidv7'\n indexes: Set<string>\n initializing: Promise<void>\n insert: Insert\n /**\n * Timestamp (ms) of the last write operation. When read replicas are configured,\n * reads within `readReplicasAfterWriteInterval` ms of this timestamp are routed to the\n * primary to guarantee read-after-write consistency.\n */\n lastWriteTimestamp?: number\n limitedBoundParameters?: boolean\n localesSuffix?: string\n logger: DrizzleConfig['logger']\n operatorHandlers: DrizzleOperatorHandler[]\n operators: Operators\n /**\n * When read replicas are configured, holds the unwrapped primary drizzle instance\n * (before withReplicas wrapping). Used for reads that are part of write operations\n * to avoid replication lag.\n */\n primaryDrizzle?: PostgresDB\n push: boolean\n rawRelations: Record<string, Record<string, RawRelation>>\n rawTables: Record<string, RawTable>\n /**\n * How long (ms) after a write to route reads to the primary instead of a\n * read replica. Avoids stale reads caused by replication lag.\n * @default 2000\n */\n readReplicasAfterWriteInterval: number\n\n rejectInitializing: () => void\n relations: Record<string, GenericRelation>\n relationshipsSuffix?: string\n requireDrizzleKit: RequireDrizzleKit\n resolveInitializing: () => void\n\n schema: Record<string, unknown>\n\n schemaName?: string\n sessions: {\n [id: string]: {\n db: DrizzleTransaction\n reject: () => Promise<void>\n resolve: () => Promise<void>\n }\n }\n tableNameMap: Map<string, string>\n tables: Record<string, any>\n transactionOptions: unknown\n versionsSuffix?: string\n}\n\nexport type RelationMap = Map<\n string,\n {\n localized: boolean\n relationName?: string\n target: string\n type: 'many' | 'one'\n }\n>\n"],"names":[],"mappings":"AAmgBA,WAQC"}
|
|
@@ -426,7 +426,7 @@ class BlocksToJsonMigratorImpl {
|
|
|
426
426
|
this.adapter.payload.logger.info(`Collected total of ${totalCollected} entities across ${batchIndex} batches`);
|
|
427
427
|
}
|
|
428
428
|
async getMigrationStatements() {
|
|
429
|
-
const { generateDrizzleJson, generateMigration } = this.adapter.requireDrizzleKit();
|
|
429
|
+
const { generateDrizzleJson, generateMigration } = await this.adapter.requireDrizzleKit();
|
|
430
430
|
const drizzleJsonBefore = await generateDrizzleJson(this.adapter.schema);
|
|
431
431
|
this.adapter.blocksAsJSON = true;
|
|
432
432
|
this.resetSchema();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/blocksToJsonMigrator.ts"],"sourcesContent":["import type {\n DynamicMigrationTemplate,\n FlattenedField,\n Payload,\n PayloadRequest,\n SanitizedConfig,\n} from 'payload'\nimport type tsTypes from 'typescript'\n\nimport { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'fs'\nimport path from 'path'\nimport {\n APIError,\n buildVersionCollectionFields,\n buildVersionGlobalFields,\n dynamicImport,\n} from 'payload'\nimport { findConfig } from 'payload/node'\nimport { fieldShouldBeLocalized } from 'payload/shared'\n\nimport type {\n BlocksToJsonBlockToMigrate,\n BlocksToJsonEntityToMigrate,\n BlocksToJsonMigrator,\n DrizzleAdapter,\n} from '../types.js'\n\nimport { formatGeneratedFile } from './formatGeneratedFile.js'\nimport { getTransaction } from './getTransaction.js'\n\nconst DEFAULT_BATCH_SIZE = 100\nconst TEMP_FOLDER_NAME = '.payload-blocks-migration'\n\nconst writeEntitiesToTempFile = (\n entities: BlocksToJsonEntityToMigrate[],\n tempFolderPath: string,\n batchIndex: number,\n): void => {\n const filePath = path.join(tempFolderPath, `entities-batch-${batchIndex}.json`)\n writeFileSync(filePath, JSON.stringify(entities, null, 2), 'utf-8')\n}\n\nconst acceptDrizzlePrompts = async <T>(\n callPrompt: () => Promise<T> | T,\n {\n silenceLogs = false,\n }: {\n silenceLogs?: boolean\n } = {},\n): Promise<T> => {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const write = process.stdout.write\n\n if (silenceLogs) {\n process.stdout.write = () => true\n }\n\n const promise = callPrompt()\n\n const interval = setInterval(\n () =>\n process.stdin.emit('keypress', '\\n', {\n name: 'return',\n ctrl: false,\n }),\n 25,\n )\n\n const res = await promise\n\n if (silenceLogs) {\n process.stdout.write = write\n }\n\n clearInterval(interval)\n\n return res\n}\n\nconst entityHasBlocksField = (entity: { flattenedFields: FlattenedField[] }): boolean => {\n for (const field of entity.flattenedFields) {\n if (field.type === 'blocks') {\n return true\n }\n\n if (\n 'flattenedFields' in field &&\n entityHasBlocksField({ flattenedFields: field.flattenedFields })\n ) {\n return true\n }\n }\n\n return false\n}\n\nconst collectBlocksToMigrate = ({\n config,\n data,\n fields,\n parentAccessor,\n parentIsLocalized,\n}: {\n config: SanitizedConfig\n data: any\n fields: FlattenedField[]\n parentAccessor: (number | string)[]\n parentIsLocalized: boolean\n}): BlocksToJsonBlockToMigrate[] => {\n const result: BlocksToJsonBlockToMigrate[] = []\n\n for (const field of fields) {\n switch (field.type) {\n case 'array': {\n const arrayData = data[field.name]\n\n if (!Array.isArray(arrayData)) {\n continue\n }\n\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: arrayData,\n fields: config.localization.localeCodes.map((code) => ({\n ...field,\n name: code,\n localized: false,\n })),\n parentAccessor: [...parentAccessor, field.name],\n parentIsLocalized: true,\n }),\n )\n\n continue\n }\n\n for (const [index, row] of arrayData.entries()) {\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: row,\n fields: field.flattenedFields,\n parentAccessor: [...parentAccessor, field.name, index],\n parentIsLocalized,\n }),\n )\n }\n break\n }\n case 'blocks': {\n result.push({\n data: data[field.name],\n fieldAccessor: [...parentAccessor, field.name],\n })\n break\n }\n case 'group':\n case 'tab': {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: data[field.name],\n fields: config.localization.localeCodes.map((code) => ({\n ...field,\n name: code,\n localized: false,\n })),\n parentAccessor: [...parentAccessor, field.name],\n parentIsLocalized: true,\n }),\n )\n\n continue\n }\n\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: data[field.name],\n fields: field.flattenedFields,\n parentAccessor: [...parentAccessor, field.name],\n parentIsLocalized,\n }),\n )\n break\n }\n default: {\n continue\n }\n }\n }\n\n return result\n}\n\nclass BlocksToJsonMigratorImpl implements BlocksToJsonMigrator {\n private readonly batchSize: number\n private tempFolderPath: string\n\n constructor(\n private readonly adapter: DrizzleAdapter,\n private readonly sanitizeStatements: (args: {\n sqlExecute: string\n statements: string[]\n }) => string,\n private readonly executeMethod: string,\n batchSize?: number,\n ) {\n this.batchSize = batchSize || DEFAULT_BATCH_SIZE\n this.tempFolderPath = path.resolve(this.adapter.migrationDir, TEMP_FOLDER_NAME)\n }\n\n private ensureTempFolder(): void {\n if (!existsSync(this.tempFolderPath)) {\n mkdirSync(this.tempFolderPath, { recursive: true })\n }\n }\n\n private *fetchEntitiesFromJsonBatches(): IterableIterator<BlocksToJsonEntityToMigrate[]> {\n if (!existsSync(this.tempFolderPath)) {\n return\n }\n\n const files = readdirSync(this.tempFolderPath)\n .filter((file) => file.startsWith('entities-batch-') && file.endsWith('.json'))\n .sort((a, b) => {\n const aNum = parseInt(a.match(/\\d+/)?.[0] || '0', 10)\n const bNum = parseInt(b.match(/\\d+/)?.[0] || '0', 10)\n return aNum - bNum\n })\n\n for (const file of files) {\n const filePath = path.join(this.tempFolderPath, file)\n const fileContent = readFileSync(filePath, 'utf-8')\n const batchEntities = JSON.parse(fileContent) as BlocksToJsonEntityToMigrate[]\n yield batchEntities\n }\n }\n\n private async migrateEntities(\n entities: BlocksToJsonEntityToMigrate[],\n req: PayloadRequest,\n ): Promise<void> {\n this.adapter.blocksAsJSON = true\n this.resetSchema()\n await this.adapter.init()\n await this.adapter.connect()\n\n await this.syncTransactionDrizzleInstance(req)\n\n const totalEntities = entities.length\n let processed = 0\n\n for (const entity of entities) {\n switch (entity.type) {\n case 'collection': {\n await this.adapter.updateOne({\n collection: entity.slug,\n data: entity.originalData,\n joins: false,\n req,\n where: {\n id: {\n equals: entity.id,\n },\n },\n })\n break\n }\n case 'collectionVersion': {\n await this.adapter.updateVersion({\n id: entity.id,\n collection: entity.slug,\n req,\n versionData: entity.originalData as any,\n })\n\n break\n }\n case 'global': {\n await this.adapter.updateGlobal({\n slug: entity.slug,\n data: entity.originalData,\n req,\n })\n break\n }\n case 'globalVersion': {\n await this.adapter.updateGlobalVersion({\n id: entity.id,\n global: entity.slug,\n req,\n versionData: entity.originalData as any,\n })\n break\n }\n }\n\n processed++\n if (processed % this.batchSize === 0 || processed === totalEntities) {\n this.adapter.payload.logger.info(\n `Migrated ${processed}/${totalEntities} entities (${Math.round((processed / totalEntities) * 100)}%)`,\n )\n }\n }\n }\n\n private resetSchema() {\n this.adapter.schema = {}\n this.adapter.tables = {}\n this.adapter.indexes = new Set()\n this.adapter.foreignKeys = new Set()\n this.adapter.relations = {}\n this.adapter.rawTables = {}\n this.adapter.rawRelations = {}\n this.adapter.tableNameMap = new Map()\n this.adapter.enums = {}\n }\n\n private async syncTransactionDrizzleInstance(req: PayloadRequest) {\n const tsx = (await getTransaction(this.adapter, req)) as any\n\n tsx._ = this.adapter.drizzle._\n tsx.schema = this.adapter.drizzle._\n tsx.session.schema = (this.adapter.drizzle as any).session.schema\n }\n\n cleanupTempFolder(): void {\n rmSync(this.tempFolderPath, { force: true, recursive: true })\n\n this.adapter.payload.logger.info(`Cleaned up temp folder at ${this.tempFolderPath}`)\n }\n\n async collectAndSaveEntitiesToBatches(\n req: PayloadRequest,\n options?: {\n batchSize?: number\n },\n ): Promise<void> {\n const batchSize = options?.batchSize ?? this.batchSize\n\n this.cleanupTempFolder()\n this.ensureTempFolder()\n\n this.adapter.blocksAsJSON = false\n this.resetSchema()\n await this.adapter.init()\n await this.adapter.connect()\n\n // Count total entities to migrate\n let totalExpected = 0\n for (const collection of this.adapter.payload.config.collections.filter(entityHasBlocksField)) {\n const { totalDocs } = await this.adapter.count({ collection: collection.slug })\n totalExpected += totalDocs\n\n if (collection.versions) {\n const { totalDocs: totalVersions } = await this.adapter.countVersions({\n collection: collection.slug,\n })\n totalExpected += totalVersions\n }\n }\n\n for (const globalConfig of this.adapter.payload.config.globals.filter(entityHasBlocksField)) {\n totalExpected += 1 // Global itself\n\n if (globalConfig.versions) {\n const { totalDocs: totalGlobalVersions } = await this.adapter.countGlobalVersions({\n global: globalConfig.slug,\n })\n totalExpected += totalGlobalVersions\n }\n }\n\n this.adapter.payload.logger.info(\n `Found ${totalExpected} total entities to collect and save to batches`,\n )\n\n let batchIndex = 0\n let currentBatch: BlocksToJsonEntityToMigrate[] = []\n let totalCollected = 0\n\n const flushBatch = () => {\n if (currentBatch.length > 0) {\n writeEntitiesToTempFile(currentBatch, this.tempFolderPath, batchIndex)\n const percentage =\n totalExpected > 0 ? Math.round((totalCollected / totalExpected) * 100) : 0\n this.adapter.payload.logger.info(\n `Saved batch ${batchIndex} with ${currentBatch.length} entities (${totalCollected}/${totalExpected} - ${percentage}%)`,\n )\n batchIndex++\n currentBatch = []\n }\n }\n\n const addEntity = (entity: BlocksToJsonEntityToMigrate) => {\n currentBatch.push(entity)\n totalCollected++\n if (currentBatch.length >= batchSize) {\n flushBatch()\n }\n }\n\n for (const collection of this.adapter.payload.config.collections.filter(entityHasBlocksField)) {\n let page = 1\n let hasMore = true\n\n while (hasMore) {\n const { docs, hasNextPage } = await this.adapter.find({\n collection: collection.slug,\n limit: batchSize,\n page,\n })\n\n for (const doc of docs) {\n const entity: BlocksToJsonEntityToMigrate = {\n id: doc.id,\n slug: collection.slug,\n type: 'collection',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: doc,\n fields: collection.flattenedFields,\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: doc,\n }\n\n addEntity(entity)\n }\n\n this.adapter.payload.logger.info(\n `Collected ${docs.length} entries from ${collection.slug} (page ${page})`,\n )\n\n hasMore = hasNextPage\n page++\n }\n\n if (collection.versions) {\n let versionPage = 1\n let hasMoreVersions = true\n\n while (hasMoreVersions) {\n const { docs: versionDocs, hasNextPage: hasNextVersionPage } =\n await this.adapter.findVersions({\n collection: collection.slug,\n limit: batchSize,\n page: versionPage,\n })\n\n for (const versionDoc of versionDocs) {\n const entity: BlocksToJsonEntityToMigrate = {\n id: versionDoc.id,\n slug: collection.slug,\n type: 'collectionVersion',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: versionDoc,\n fields: buildVersionCollectionFields(this.adapter.payload.config, collection, true),\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: versionDoc,\n }\n\n addEntity(entity)\n }\n\n this.adapter.payload.logger.info(\n `Collected ${versionDocs.length} versions from ${collection.slug} (page ${versionPage})`,\n )\n\n hasMoreVersions = hasNextVersionPage\n versionPage++\n }\n }\n }\n\n for (const globalConfig of this.adapter.payload.config.globals.filter(entityHasBlocksField)) {\n const globalDoc = await this.adapter.findGlobal({ slug: globalConfig.slug })\n\n const entity: BlocksToJsonEntityToMigrate = {\n slug: globalConfig.slug,\n type: 'global',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: globalDoc,\n fields: globalConfig.flattenedFields,\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: globalDoc,\n }\n\n addEntity(entity)\n this.adapter.payload.logger.info(`Collected global ${globalConfig.slug}`)\n\n if (globalConfig.versions) {\n let globalVersionPage = 1\n let hasMoreGlobalVersions = true\n\n while (hasMoreGlobalVersions) {\n const { docs: globalVersionDocs, hasNextPage: hasNextGlobalVersionPage } =\n await this.adapter.findGlobalVersions({\n global: globalConfig.slug,\n limit: batchSize,\n page: globalVersionPage,\n })\n\n for (const globalVersionDoc of globalVersionDocs) {\n const entity: BlocksToJsonEntityToMigrate = {\n id: globalVersionDoc.id,\n slug: globalConfig.slug,\n type: 'globalVersion',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: globalVersionDoc,\n fields: buildVersionGlobalFields(this.adapter.payload.config, globalConfig, true),\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: globalVersionDoc,\n }\n\n addEntity(entity)\n }\n\n this.adapter.payload.logger.info(\n `Collected ${globalVersionDocs.length} versions from global ${globalConfig.slug} (page ${globalVersionPage})`,\n )\n\n hasMoreGlobalVersions = hasNextGlobalVersionPage\n globalVersionPage++\n }\n }\n }\n\n flushBatch()\n\n this.adapter.payload.logger.info(\n `Collected total of ${totalCollected} entities across ${batchIndex} batches`,\n )\n }\n\n async getMigrationStatements(): Promise<{\n statements: string\n writeDrizzleSnapshot(filePath: string): void\n }> {\n const { generateDrizzleJson, generateMigration } = this.adapter.requireDrizzleKit()\n\n const drizzleJsonBefore = await generateDrizzleJson(this.adapter.schema)\n this.adapter.blocksAsJSON = true\n this.resetSchema()\n\n await this.adapter.init()\n const drizzleJsonAfter = await generateDrizzleJson(this.adapter.schema)\n this.adapter.blocksAsJSON = false\n this.resetSchema()\n await this.adapter.init()\n\n const statements = await acceptDrizzlePrompts(\n () => generateMigration(drizzleJsonBefore, drizzleJsonAfter),\n {\n silenceLogs: true,\n },\n )\n\n const sqlExecute = `await db.${this.executeMethod}(` + 'sql`'\n\n return {\n statements: this.sanitizeStatements({\n sqlExecute,\n statements,\n }),\n writeDrizzleSnapshot(filePath) {\n writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n },\n }\n }\n\n async migrateEntitiesFromTempFolder(\n req: PayloadRequest,\n options?: {\n clearBatches?: boolean\n },\n ): Promise<void> {\n const clearBatches = options?.clearBatches ?? true\n\n let totalEntities = 0\n let hasEntities = false\n\n for (const entities of this.fetchEntitiesFromJsonBatches()) {\n hasEntities = true\n totalEntities += entities.length\n\n this.adapter.payload.logger.info(\n `Migrating batch with ${entities.length} entities (total: ${totalEntities})`,\n )\n\n await this.migrateEntities(entities, req)\n }\n\n if (!hasEntities) {\n this.adapter.payload.logger.warn('No entities found in temp folder to migrate')\n return\n }\n\n this.adapter.payload.logger.info(\n `Completed migration of ${totalEntities} entities from temp folder`,\n )\n\n if (clearBatches) {\n this.cleanupTempFolder()\n } else {\n this.adapter.payload.logger.info(\n `Temp folder preserved at ${this.tempFolderPath} (clearBatches: false)`,\n )\n }\n }\n\n setTempFolder(tempFolderPath: string): void {\n this.tempFolderPath = tempFolderPath\n }\n\n async updatePayloadConfigFile(): Promise<void> {\n let configPath: string\n\n try {\n configPath = findConfig()\n } catch {\n this.adapter.payload.logger.info(\n 'updatePayloadConfigFile failed - could not find the payload config. Please set the blocksAsJSON DB adapter property manually to \"true\"',\n )\n return\n }\n\n const configFile = readFileSync(configPath, 'utf-8')\n\n const ts = await dynamicImport<typeof tsTypes>('typescript')\n\n const source = ts.createSourceFile(configPath, configFile, ts.ScriptTarget.ESNext)\n\n let hadChanges = false\n\n const result = ts.transform(source, [\n (ctx) => (sourceFile) => {\n const factory = ctx.factory\n\n const visit: tsTypes.Visitor = (node) => {\n if (\n ts.isPropertyAssignment(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === 'db' &&\n ts.isCallExpression(node.initializer) &&\n node.initializer.arguments.length > 0 &&\n ts.isObjectLiteralExpression(node.initializer.arguments[0])\n ) {\n const call = node.initializer\n const obj = node.initializer.arguments[0]\n\n const filteredProps = obj.properties.filter((prop) => {\n if (!ts.isPropertyAssignment(prop)) {\n return true\n }\n\n return !(ts.isIdentifier(prop.name) && prop.name.text === 'blocksAsJSON')\n })\n\n const newProperty = factory.createPropertyAssignment(\n 'blocksAsJSON',\n factory.createTrue(),\n )\n hadChanges = true\n const newObject = factory.updateObjectLiteralExpression(obj, [\n ...filteredProps,\n newProperty,\n ])\n\n const newCall = factory.updateCallExpression(\n call,\n call.expression,\n call.typeArguments,\n [newObject],\n )\n\n return factory.updatePropertyAssignment(node, node.name, newCall)\n }\n\n return ts.visitEachChild(node, visit, ctx)\n }\n\n return ts.visitNode(sourceFile, visit) as tsTypes.SourceFile\n },\n ])\n\n if (!hadChanges) {\n this.adapter.payload.logger.info(\n 'No changes made to payload config. Set blocksAsJSON to true manually.',\n )\n return\n }\n\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n writeFileSync(configPath, printer.printFile(result.transformed[0]), 'utf-8')\n await formatGeneratedFile({ filePath: configPath, logger: this.adapter.payload.logger })\n\n this.adapter.payload.logger.info(`Updated ${configPath} with blocksAsJSON: true`)\n }\n}\n\nexport const createBlocksToJsonMigrator = ({\n adapter,\n executeMethod,\n sanitizeStatements,\n}: {\n adapter: DrizzleAdapter\n executeMethod: string\n sanitizeStatements: (args: { sqlExecute: string; statements: string[] }) => string\n}): BlocksToJsonMigrator => {\n return new BlocksToJsonMigratorImpl(adapter, sanitizeStatements, executeMethod)\n}\n\nexport const getBlocksToJsonMigrator = (payload: Payload): BlocksToJsonMigrator => {\n const migrator = (payload.db as DrizzleAdapter).blocksToJsonMigrator\n\n if (!migrator) {\n throw new APIError(`blocksToJsonMigrator is not defined for ${payload.db.packageName}`)\n }\n\n return migrator\n}\n\nexport const buildDynamicPredefinedBlocksToJsonMigration = ({\n packageName,\n}: {\n packageName: string\n}): DynamicMigrationTemplate => {\n return async ({ filePath, payload }) => {\n const migrator = getBlocksToJsonMigrator(payload)\n\n const migrationStatements = await migrator.getMigrationStatements()\n\n migrationStatements.writeDrizzleSnapshot(filePath)\n\n await migrator.updatePayloadConfigFile()\n const upSQL = `\nconst migrator = getBlocksToJsonMigrator(payload)\nmigrator.setTempFolder(TEMP_FOLDER)\nawait migrator.collectAndSaveEntitiesToBatches(req, { batchSize: BATCH_SIZE })\n\n${migrationStatements.statements}\npayload.logger.info(\"Executed blocks to JSON migration statements.\")\n\nawait migrator.migrateEntitiesFromTempFolder(req, { clearBatches: true })\n `\n\n return {\n imports: `\nimport { getBlocksToJsonMigrator } from '${packageName}/migration-utils'\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\n// Configure migration options (optional)\nconst BATCH_SIZE = 100 // Number of entities to process per batch\nconst TEMP_FOLDER = path.resolve(dirname, '${TEMP_FOLDER_NAME}') // Folder path to store migration batch\n`,\n upSQL,\n }\n }\n}\n"],"names":["existsSync","mkdirSync","readdirSync","readFileSync","rmSync","writeFileSync","path","APIError","buildVersionCollectionFields","buildVersionGlobalFields","dynamicImport","findConfig","fieldShouldBeLocalized","formatGeneratedFile","getTransaction","DEFAULT_BATCH_SIZE","TEMP_FOLDER_NAME","writeEntitiesToTempFile","entities","tempFolderPath","batchIndex","filePath","join","JSON","stringify","acceptDrizzlePrompts","callPrompt","silenceLogs","write","process","stdout","promise","interval","setInterval","stdin","emit","name","ctrl","res","clearInterval","entityHasBlocksField","entity","field","flattenedFields","type","collectBlocksToMigrate","config","data","fields","parentAccessor","parentIsLocalized","result","arrayData","Array","isArray","localization","push","localeCodes","map","code","localized","index","row","entries","fieldAccessor","BlocksToJsonMigratorImpl","batchSize","adapter","sanitizeStatements","executeMethod","resolve","migrationDir","ensureTempFolder","recursive","fetchEntitiesFromJsonBatches","files","filter","file","startsWith","endsWith","sort","a","b","aNum","parseInt","match","bNum","fileContent","batchEntities","parse","migrateEntities","req","blocksAsJSON","resetSchema","init","connect","syncTransactionDrizzleInstance","totalEntities","length","processed","updateOne","collection","slug","originalData","joins","where","id","equals","updateVersion","versionData","updateGlobal","updateGlobalVersion","global","payload","logger","info","Math","round","schema","tables","indexes","Set","foreignKeys","relations","rawTables","rawRelations","tableNameMap","Map","enums","tsx","_","drizzle","session","cleanupTempFolder","force","collectAndSaveEntitiesToBatches","options","totalExpected","collections","totalDocs","count","versions","totalVersions","countVersions","globalConfig","globals","totalGlobalVersions","countGlobalVersions","currentBatch","totalCollected","flushBatch","percentage","addEntity","page","hasMore","docs","hasNextPage","find","limit","doc","blocks","versionPage","hasMoreVersions","versionDocs","hasNextVersionPage","findVersions","versionDoc","globalDoc","findGlobal","globalVersionPage","hasMoreGlobalVersions","globalVersionDocs","hasNextGlobalVersionPage","findGlobalVersions","globalVersionDoc","getMigrationStatements","generateDrizzleJson","generateMigration","requireDrizzleKit","drizzleJsonBefore","drizzleJsonAfter","statements","sqlExecute","writeDrizzleSnapshot","migrateEntitiesFromTempFolder","clearBatches","hasEntities","warn","setTempFolder","updatePayloadConfigFile","configPath","configFile","ts","source","createSourceFile","ScriptTarget","ESNext","hadChanges","transform","ctx","sourceFile","factory","visit","node","isPropertyAssignment","isIdentifier","text","isCallExpression","initializer","arguments","isObjectLiteralExpression","call","obj","filteredProps","properties","prop","newProperty","createPropertyAssignment","createTrue","newObject","updateObjectLiteralExpression","newCall","updateCallExpression","expression","typeArguments","updatePropertyAssignment","visitEachChild","visitNode","printer","createPrinter","newLine","NewLineKind","LineFeed","printFile","transformed","createBlocksToJsonMigrator","getBlocksToJsonMigrator","migrator","db","blocksToJsonMigrator","packageName","buildDynamicPredefinedBlocksToJsonMigration","migrationStatements","upSQL","imports"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/blocksToJsonMigrator.ts"],"sourcesContent":["import type {\n DynamicMigrationTemplate,\n FlattenedField,\n Payload,\n PayloadRequest,\n SanitizedConfig,\n} from 'payload'\nimport type tsTypes from 'typescript'\n\nimport { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'fs'\nimport path from 'path'\nimport {\n APIError,\n buildVersionCollectionFields,\n buildVersionGlobalFields,\n dynamicImport,\n} from 'payload'\nimport { findConfig } from 'payload/node'\nimport { fieldShouldBeLocalized } from 'payload/shared'\n\nimport type {\n BlocksToJsonBlockToMigrate,\n BlocksToJsonEntityToMigrate,\n BlocksToJsonMigrator,\n DrizzleAdapter,\n} from '../types.js'\n\nimport { formatGeneratedFile } from './formatGeneratedFile.js'\nimport { getTransaction } from './getTransaction.js'\n\nconst DEFAULT_BATCH_SIZE = 100\nconst TEMP_FOLDER_NAME = '.payload-blocks-migration'\n\nconst writeEntitiesToTempFile = (\n entities: BlocksToJsonEntityToMigrate[],\n tempFolderPath: string,\n batchIndex: number,\n): void => {\n const filePath = path.join(tempFolderPath, `entities-batch-${batchIndex}.json`)\n writeFileSync(filePath, JSON.stringify(entities, null, 2), 'utf-8')\n}\n\nconst acceptDrizzlePrompts = async <T>(\n callPrompt: () => Promise<T> | T,\n {\n silenceLogs = false,\n }: {\n silenceLogs?: boolean\n } = {},\n): Promise<T> => {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const write = process.stdout.write\n\n if (silenceLogs) {\n process.stdout.write = () => true\n }\n\n const promise = callPrompt()\n\n const interval = setInterval(\n () =>\n process.stdin.emit('keypress', '\\n', {\n name: 'return',\n ctrl: false,\n }),\n 25,\n )\n\n const res = await promise\n\n if (silenceLogs) {\n process.stdout.write = write\n }\n\n clearInterval(interval)\n\n return res\n}\n\nconst entityHasBlocksField = (entity: { flattenedFields: FlattenedField[] }): boolean => {\n for (const field of entity.flattenedFields) {\n if (field.type === 'blocks') {\n return true\n }\n\n if (\n 'flattenedFields' in field &&\n entityHasBlocksField({ flattenedFields: field.flattenedFields })\n ) {\n return true\n }\n }\n\n return false\n}\n\nconst collectBlocksToMigrate = ({\n config,\n data,\n fields,\n parentAccessor,\n parentIsLocalized,\n}: {\n config: SanitizedConfig\n data: any\n fields: FlattenedField[]\n parentAccessor: (number | string)[]\n parentIsLocalized: boolean\n}): BlocksToJsonBlockToMigrate[] => {\n const result: BlocksToJsonBlockToMigrate[] = []\n\n for (const field of fields) {\n switch (field.type) {\n case 'array': {\n const arrayData = data[field.name]\n\n if (!Array.isArray(arrayData)) {\n continue\n }\n\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: arrayData,\n fields: config.localization.localeCodes.map((code) => ({\n ...field,\n name: code,\n localized: false,\n })),\n parentAccessor: [...parentAccessor, field.name],\n parentIsLocalized: true,\n }),\n )\n\n continue\n }\n\n for (const [index, row] of arrayData.entries()) {\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: row,\n fields: field.flattenedFields,\n parentAccessor: [...parentAccessor, field.name, index],\n parentIsLocalized,\n }),\n )\n }\n break\n }\n case 'blocks': {\n result.push({\n data: data[field.name],\n fieldAccessor: [...parentAccessor, field.name],\n })\n break\n }\n case 'group':\n case 'tab': {\n if (config.localization && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: data[field.name],\n fields: config.localization.localeCodes.map((code) => ({\n ...field,\n name: code,\n localized: false,\n })),\n parentAccessor: [...parentAccessor, field.name],\n parentIsLocalized: true,\n }),\n )\n\n continue\n }\n\n result.push(\n ...collectBlocksToMigrate({\n config,\n data: data[field.name],\n fields: field.flattenedFields,\n parentAccessor: [...parentAccessor, field.name],\n parentIsLocalized,\n }),\n )\n break\n }\n default: {\n continue\n }\n }\n }\n\n return result\n}\n\nclass BlocksToJsonMigratorImpl implements BlocksToJsonMigrator {\n private readonly batchSize: number\n private tempFolderPath: string\n\n constructor(\n private readonly adapter: DrizzleAdapter,\n private readonly sanitizeStatements: (args: {\n sqlExecute: string\n statements: string[]\n }) => string,\n private readonly executeMethod: string,\n batchSize?: number,\n ) {\n this.batchSize = batchSize || DEFAULT_BATCH_SIZE\n this.tempFolderPath = path.resolve(this.adapter.migrationDir, TEMP_FOLDER_NAME)\n }\n\n private ensureTempFolder(): void {\n if (!existsSync(this.tempFolderPath)) {\n mkdirSync(this.tempFolderPath, { recursive: true })\n }\n }\n\n private *fetchEntitiesFromJsonBatches(): IterableIterator<BlocksToJsonEntityToMigrate[]> {\n if (!existsSync(this.tempFolderPath)) {\n return\n }\n\n const files = readdirSync(this.tempFolderPath)\n .filter((file) => file.startsWith('entities-batch-') && file.endsWith('.json'))\n .sort((a, b) => {\n const aNum = parseInt(a.match(/\\d+/)?.[0] || '0', 10)\n const bNum = parseInt(b.match(/\\d+/)?.[0] || '0', 10)\n return aNum - bNum\n })\n\n for (const file of files) {\n const filePath = path.join(this.tempFolderPath, file)\n const fileContent = readFileSync(filePath, 'utf-8')\n const batchEntities = JSON.parse(fileContent) as BlocksToJsonEntityToMigrate[]\n yield batchEntities\n }\n }\n\n private async migrateEntities(\n entities: BlocksToJsonEntityToMigrate[],\n req: PayloadRequest,\n ): Promise<void> {\n this.adapter.blocksAsJSON = true\n this.resetSchema()\n await this.adapter.init()\n await this.adapter.connect()\n\n await this.syncTransactionDrizzleInstance(req)\n\n const totalEntities = entities.length\n let processed = 0\n\n for (const entity of entities) {\n switch (entity.type) {\n case 'collection': {\n await this.adapter.updateOne({\n collection: entity.slug,\n data: entity.originalData,\n joins: false,\n req,\n where: {\n id: {\n equals: entity.id,\n },\n },\n })\n break\n }\n case 'collectionVersion': {\n await this.adapter.updateVersion({\n id: entity.id,\n collection: entity.slug,\n req,\n versionData: entity.originalData as any,\n })\n\n break\n }\n case 'global': {\n await this.adapter.updateGlobal({\n slug: entity.slug,\n data: entity.originalData,\n req,\n })\n break\n }\n case 'globalVersion': {\n await this.adapter.updateGlobalVersion({\n id: entity.id,\n global: entity.slug,\n req,\n versionData: entity.originalData as any,\n })\n break\n }\n }\n\n processed++\n if (processed % this.batchSize === 0 || processed === totalEntities) {\n this.adapter.payload.logger.info(\n `Migrated ${processed}/${totalEntities} entities (${Math.round((processed / totalEntities) * 100)}%)`,\n )\n }\n }\n }\n\n private resetSchema() {\n this.adapter.schema = {}\n this.adapter.tables = {}\n this.adapter.indexes = new Set()\n this.adapter.foreignKeys = new Set()\n this.adapter.relations = {}\n this.adapter.rawTables = {}\n this.adapter.rawRelations = {}\n this.adapter.tableNameMap = new Map()\n this.adapter.enums = {}\n }\n\n private async syncTransactionDrizzleInstance(req: PayloadRequest) {\n const tsx = (await getTransaction(this.adapter, req)) as any\n\n tsx._ = this.adapter.drizzle._\n tsx.schema = this.adapter.drizzle._\n tsx.session.schema = (this.adapter.drizzle as any).session.schema\n }\n\n cleanupTempFolder(): void {\n rmSync(this.tempFolderPath, { force: true, recursive: true })\n\n this.adapter.payload.logger.info(`Cleaned up temp folder at ${this.tempFolderPath}`)\n }\n\n async collectAndSaveEntitiesToBatches(\n req: PayloadRequest,\n options?: {\n batchSize?: number\n },\n ): Promise<void> {\n const batchSize = options?.batchSize ?? this.batchSize\n\n this.cleanupTempFolder()\n this.ensureTempFolder()\n\n this.adapter.blocksAsJSON = false\n this.resetSchema()\n await this.adapter.init()\n await this.adapter.connect()\n\n // Count total entities to migrate\n let totalExpected = 0\n for (const collection of this.adapter.payload.config.collections.filter(entityHasBlocksField)) {\n const { totalDocs } = await this.adapter.count({ collection: collection.slug })\n totalExpected += totalDocs\n\n if (collection.versions) {\n const { totalDocs: totalVersions } = await this.adapter.countVersions({\n collection: collection.slug,\n })\n totalExpected += totalVersions\n }\n }\n\n for (const globalConfig of this.adapter.payload.config.globals.filter(entityHasBlocksField)) {\n totalExpected += 1 // Global itself\n\n if (globalConfig.versions) {\n const { totalDocs: totalGlobalVersions } = await this.adapter.countGlobalVersions({\n global: globalConfig.slug,\n })\n totalExpected += totalGlobalVersions\n }\n }\n\n this.adapter.payload.logger.info(\n `Found ${totalExpected} total entities to collect and save to batches`,\n )\n\n let batchIndex = 0\n let currentBatch: BlocksToJsonEntityToMigrate[] = []\n let totalCollected = 0\n\n const flushBatch = () => {\n if (currentBatch.length > 0) {\n writeEntitiesToTempFile(currentBatch, this.tempFolderPath, batchIndex)\n const percentage =\n totalExpected > 0 ? Math.round((totalCollected / totalExpected) * 100) : 0\n this.adapter.payload.logger.info(\n `Saved batch ${batchIndex} with ${currentBatch.length} entities (${totalCollected}/${totalExpected} - ${percentage}%)`,\n )\n batchIndex++\n currentBatch = []\n }\n }\n\n const addEntity = (entity: BlocksToJsonEntityToMigrate) => {\n currentBatch.push(entity)\n totalCollected++\n if (currentBatch.length >= batchSize) {\n flushBatch()\n }\n }\n\n for (const collection of this.adapter.payload.config.collections.filter(entityHasBlocksField)) {\n let page = 1\n let hasMore = true\n\n while (hasMore) {\n const { docs, hasNextPage } = await this.adapter.find({\n collection: collection.slug,\n limit: batchSize,\n page,\n })\n\n for (const doc of docs) {\n const entity: BlocksToJsonEntityToMigrate = {\n id: doc.id,\n slug: collection.slug,\n type: 'collection',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: doc,\n fields: collection.flattenedFields,\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: doc,\n }\n\n addEntity(entity)\n }\n\n this.adapter.payload.logger.info(\n `Collected ${docs.length} entries from ${collection.slug} (page ${page})`,\n )\n\n hasMore = hasNextPage\n page++\n }\n\n if (collection.versions) {\n let versionPage = 1\n let hasMoreVersions = true\n\n while (hasMoreVersions) {\n const { docs: versionDocs, hasNextPage: hasNextVersionPage } =\n await this.adapter.findVersions({\n collection: collection.slug,\n limit: batchSize,\n page: versionPage,\n })\n\n for (const versionDoc of versionDocs) {\n const entity: BlocksToJsonEntityToMigrate = {\n id: versionDoc.id,\n slug: collection.slug,\n type: 'collectionVersion',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: versionDoc,\n fields: buildVersionCollectionFields(this.adapter.payload.config, collection, true),\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: versionDoc,\n }\n\n addEntity(entity)\n }\n\n this.adapter.payload.logger.info(\n `Collected ${versionDocs.length} versions from ${collection.slug} (page ${versionPage})`,\n )\n\n hasMoreVersions = hasNextVersionPage\n versionPage++\n }\n }\n }\n\n for (const globalConfig of this.adapter.payload.config.globals.filter(entityHasBlocksField)) {\n const globalDoc = await this.adapter.findGlobal({ slug: globalConfig.slug })\n\n const entity: BlocksToJsonEntityToMigrate = {\n slug: globalConfig.slug,\n type: 'global',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: globalDoc,\n fields: globalConfig.flattenedFields,\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: globalDoc,\n }\n\n addEntity(entity)\n this.adapter.payload.logger.info(`Collected global ${globalConfig.slug}`)\n\n if (globalConfig.versions) {\n let globalVersionPage = 1\n let hasMoreGlobalVersions = true\n\n while (hasMoreGlobalVersions) {\n const { docs: globalVersionDocs, hasNextPage: hasNextGlobalVersionPage } =\n await this.adapter.findGlobalVersions({\n global: globalConfig.slug,\n limit: batchSize,\n page: globalVersionPage,\n })\n\n for (const globalVersionDoc of globalVersionDocs) {\n const entity: BlocksToJsonEntityToMigrate = {\n id: globalVersionDoc.id,\n slug: globalConfig.slug,\n type: 'globalVersion',\n blocks: collectBlocksToMigrate({\n config: this.adapter.payload.config,\n data: globalVersionDoc,\n fields: buildVersionGlobalFields(this.adapter.payload.config, globalConfig, true),\n parentAccessor: [],\n parentIsLocalized: false,\n }),\n originalData: globalVersionDoc,\n }\n\n addEntity(entity)\n }\n\n this.adapter.payload.logger.info(\n `Collected ${globalVersionDocs.length} versions from global ${globalConfig.slug} (page ${globalVersionPage})`,\n )\n\n hasMoreGlobalVersions = hasNextGlobalVersionPage\n globalVersionPage++\n }\n }\n }\n\n flushBatch()\n\n this.adapter.payload.logger.info(\n `Collected total of ${totalCollected} entities across ${batchIndex} batches`,\n )\n }\n\n async getMigrationStatements(): Promise<{\n statements: string\n writeDrizzleSnapshot(filePath: string): void\n }> {\n const { generateDrizzleJson, generateMigration } = await this.adapter.requireDrizzleKit()\n\n const drizzleJsonBefore = await generateDrizzleJson(this.adapter.schema)\n this.adapter.blocksAsJSON = true\n this.resetSchema()\n\n await this.adapter.init()\n const drizzleJsonAfter = await generateDrizzleJson(this.adapter.schema)\n this.adapter.blocksAsJSON = false\n this.resetSchema()\n await this.adapter.init()\n\n const statements = await acceptDrizzlePrompts(\n () => generateMigration(drizzleJsonBefore, drizzleJsonAfter),\n {\n silenceLogs: true,\n },\n )\n\n const sqlExecute = `await db.${this.executeMethod}(` + 'sql`'\n\n return {\n statements: this.sanitizeStatements({\n sqlExecute,\n statements,\n }),\n writeDrizzleSnapshot(filePath) {\n writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n },\n }\n }\n\n async migrateEntitiesFromTempFolder(\n req: PayloadRequest,\n options?: {\n clearBatches?: boolean\n },\n ): Promise<void> {\n const clearBatches = options?.clearBatches ?? true\n\n let totalEntities = 0\n let hasEntities = false\n\n for (const entities of this.fetchEntitiesFromJsonBatches()) {\n hasEntities = true\n totalEntities += entities.length\n\n this.adapter.payload.logger.info(\n `Migrating batch with ${entities.length} entities (total: ${totalEntities})`,\n )\n\n await this.migrateEntities(entities, req)\n }\n\n if (!hasEntities) {\n this.adapter.payload.logger.warn('No entities found in temp folder to migrate')\n return\n }\n\n this.adapter.payload.logger.info(\n `Completed migration of ${totalEntities} entities from temp folder`,\n )\n\n if (clearBatches) {\n this.cleanupTempFolder()\n } else {\n this.adapter.payload.logger.info(\n `Temp folder preserved at ${this.tempFolderPath} (clearBatches: false)`,\n )\n }\n }\n\n setTempFolder(tempFolderPath: string): void {\n this.tempFolderPath = tempFolderPath\n }\n\n async updatePayloadConfigFile(): Promise<void> {\n let configPath: string\n\n try {\n configPath = findConfig()\n } catch {\n this.adapter.payload.logger.info(\n 'updatePayloadConfigFile failed - could not find the payload config. Please set the blocksAsJSON DB adapter property manually to \"true\"',\n )\n return\n }\n\n const configFile = readFileSync(configPath, 'utf-8')\n\n const ts = await dynamicImport<typeof tsTypes>('typescript')\n\n const source = ts.createSourceFile(configPath, configFile, ts.ScriptTarget.ESNext)\n\n let hadChanges = false\n\n const result = ts.transform(source, [\n (ctx) => (sourceFile) => {\n const factory = ctx.factory\n\n const visit: tsTypes.Visitor = (node) => {\n if (\n ts.isPropertyAssignment(node) &&\n ts.isIdentifier(node.name) &&\n node.name.text === 'db' &&\n ts.isCallExpression(node.initializer) &&\n node.initializer.arguments.length > 0 &&\n ts.isObjectLiteralExpression(node.initializer.arguments[0])\n ) {\n const call = node.initializer\n const obj = node.initializer.arguments[0]\n\n const filteredProps = obj.properties.filter((prop) => {\n if (!ts.isPropertyAssignment(prop)) {\n return true\n }\n\n return !(ts.isIdentifier(prop.name) && prop.name.text === 'blocksAsJSON')\n })\n\n const newProperty = factory.createPropertyAssignment(\n 'blocksAsJSON',\n factory.createTrue(),\n )\n hadChanges = true\n const newObject = factory.updateObjectLiteralExpression(obj, [\n ...filteredProps,\n newProperty,\n ])\n\n const newCall = factory.updateCallExpression(\n call,\n call.expression,\n call.typeArguments,\n [newObject],\n )\n\n return factory.updatePropertyAssignment(node, node.name, newCall)\n }\n\n return ts.visitEachChild(node, visit, ctx)\n }\n\n return ts.visitNode(sourceFile, visit) as tsTypes.SourceFile\n },\n ])\n\n if (!hadChanges) {\n this.adapter.payload.logger.info(\n 'No changes made to payload config. Set blocksAsJSON to true manually.',\n )\n return\n }\n\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n writeFileSync(configPath, printer.printFile(result.transformed[0]), 'utf-8')\n await formatGeneratedFile({ filePath: configPath, logger: this.adapter.payload.logger })\n\n this.adapter.payload.logger.info(`Updated ${configPath} with blocksAsJSON: true`)\n }\n}\n\nexport const createBlocksToJsonMigrator = ({\n adapter,\n executeMethod,\n sanitizeStatements,\n}: {\n adapter: DrizzleAdapter\n executeMethod: string\n sanitizeStatements: (args: { sqlExecute: string; statements: string[] }) => string\n}): BlocksToJsonMigrator => {\n return new BlocksToJsonMigratorImpl(adapter, sanitizeStatements, executeMethod)\n}\n\nexport const getBlocksToJsonMigrator = (payload: Payload): BlocksToJsonMigrator => {\n const migrator = (payload.db as DrizzleAdapter).blocksToJsonMigrator\n\n if (!migrator) {\n throw new APIError(`blocksToJsonMigrator is not defined for ${payload.db.packageName}`)\n }\n\n return migrator\n}\n\nexport const buildDynamicPredefinedBlocksToJsonMigration = ({\n packageName,\n}: {\n packageName: string\n}): DynamicMigrationTemplate => {\n return async ({ filePath, payload }) => {\n const migrator = getBlocksToJsonMigrator(payload)\n\n const migrationStatements = await migrator.getMigrationStatements()\n\n migrationStatements.writeDrizzleSnapshot(filePath)\n\n await migrator.updatePayloadConfigFile()\n const upSQL = `\nconst migrator = getBlocksToJsonMigrator(payload)\nmigrator.setTempFolder(TEMP_FOLDER)\nawait migrator.collectAndSaveEntitiesToBatches(req, { batchSize: BATCH_SIZE })\n\n${migrationStatements.statements}\npayload.logger.info(\"Executed blocks to JSON migration statements.\")\n\nawait migrator.migrateEntitiesFromTempFolder(req, { clearBatches: true })\n `\n\n return {\n imports: `\nimport { getBlocksToJsonMigrator } from '${packageName}/migration-utils'\nimport { fileURLToPath } from 'url'\nimport path from 'path'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\n// Configure migration options (optional)\nconst BATCH_SIZE = 100 // Number of entities to process per batch\nconst TEMP_FOLDER = path.resolve(dirname, '${TEMP_FOLDER_NAME}') // Folder path to store migration batch\n`,\n upSQL,\n }\n }\n}\n"],"names":["existsSync","mkdirSync","readdirSync","readFileSync","rmSync","writeFileSync","path","APIError","buildVersionCollectionFields","buildVersionGlobalFields","dynamicImport","findConfig","fieldShouldBeLocalized","formatGeneratedFile","getTransaction","DEFAULT_BATCH_SIZE","TEMP_FOLDER_NAME","writeEntitiesToTempFile","entities","tempFolderPath","batchIndex","filePath","join","JSON","stringify","acceptDrizzlePrompts","callPrompt","silenceLogs","write","process","stdout","promise","interval","setInterval","stdin","emit","name","ctrl","res","clearInterval","entityHasBlocksField","entity","field","flattenedFields","type","collectBlocksToMigrate","config","data","fields","parentAccessor","parentIsLocalized","result","arrayData","Array","isArray","localization","push","localeCodes","map","code","localized","index","row","entries","fieldAccessor","BlocksToJsonMigratorImpl","batchSize","adapter","sanitizeStatements","executeMethod","resolve","migrationDir","ensureTempFolder","recursive","fetchEntitiesFromJsonBatches","files","filter","file","startsWith","endsWith","sort","a","b","aNum","parseInt","match","bNum","fileContent","batchEntities","parse","migrateEntities","req","blocksAsJSON","resetSchema","init","connect","syncTransactionDrizzleInstance","totalEntities","length","processed","updateOne","collection","slug","originalData","joins","where","id","equals","updateVersion","versionData","updateGlobal","updateGlobalVersion","global","payload","logger","info","Math","round","schema","tables","indexes","Set","foreignKeys","relations","rawTables","rawRelations","tableNameMap","Map","enums","tsx","_","drizzle","session","cleanupTempFolder","force","collectAndSaveEntitiesToBatches","options","totalExpected","collections","totalDocs","count","versions","totalVersions","countVersions","globalConfig","globals","totalGlobalVersions","countGlobalVersions","currentBatch","totalCollected","flushBatch","percentage","addEntity","page","hasMore","docs","hasNextPage","find","limit","doc","blocks","versionPage","hasMoreVersions","versionDocs","hasNextVersionPage","findVersions","versionDoc","globalDoc","findGlobal","globalVersionPage","hasMoreGlobalVersions","globalVersionDocs","hasNextGlobalVersionPage","findGlobalVersions","globalVersionDoc","getMigrationStatements","generateDrizzleJson","generateMigration","requireDrizzleKit","drizzleJsonBefore","drizzleJsonAfter","statements","sqlExecute","writeDrizzleSnapshot","migrateEntitiesFromTempFolder","clearBatches","hasEntities","warn","setTempFolder","updatePayloadConfigFile","configPath","configFile","ts","source","createSourceFile","ScriptTarget","ESNext","hadChanges","transform","ctx","sourceFile","factory","visit","node","isPropertyAssignment","isIdentifier","text","isCallExpression","initializer","arguments","isObjectLiteralExpression","call","obj","filteredProps","properties","prop","newProperty","createPropertyAssignment","createTrue","newObject","updateObjectLiteralExpression","newCall","updateCallExpression","expression","typeArguments","updatePropertyAssignment","visitEachChild","visitNode","printer","createPrinter","newLine","NewLineKind","LineFeed","printFile","transformed","createBlocksToJsonMigrator","getBlocksToJsonMigrator","migrator","db","blocksToJsonMigrator","packageName","buildDynamicPredefinedBlocksToJsonMigration","migrationStatements","upSQL","imports"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export const buildCreateMigration = ({ executeMethod, filename, sanitizeStatemen
|
|
|
10
10
|
if (!fs.existsSync(dir)) {
|
|
11
11
|
fs.mkdirSync(dir);
|
|
12
12
|
}
|
|
13
|
-
const { generateDrizzleJson, generateMigration, upSnapshot } = this.requireDrizzleKit();
|
|
13
|
+
const { generateDrizzleJson, generateMigration, upSnapshot } = await this.requireDrizzleKit();
|
|
14
14
|
const drizzleJsonAfter = await generateDrizzleJson(this.schema);
|
|
15
15
|
const [yyymmdd, hhmmss] = new Date().toISOString().split('T');
|
|
16
16
|
const formattedDate = yyymmdd.replace(/\D/g, '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/buildCreateMigration.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nexport const buildCreateMigration = ({\n executeMethod,\n filename,\n sanitizeStatements,\n}: {\n executeMethod: string\n filename: string\n sanitizeStatements: (args: { sqlExecute: string; statements: string[] }) => string\n}): CreateMigration => {\n const dirname = path.dirname(filename)\n return async function createMigration(\n this: DrizzleAdapter,\n { file, forceAcceptWarning, migrationName, payload, shouldPrompt = true, skipEmpty },\n ) {\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n\n const { generateDrizzleJson, generateMigration, upSnapshot } = this.requireDrizzleKit()\n\n const drizzleJsonAfter = await generateDrizzleJson(this.schema)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n\n const predefinedMigration = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n })\n\n imports = predefinedMigration.imports\n downSQL = predefinedMigration.downSQL\n upSQL = predefinedMigration.upSQL\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n if (typeof predefinedMigration.dynamic === 'function') {\n const dynamicResult = await predefinedMigration.dynamic({ filePath, payload })\n\n if (dynamicResult.upSQL) {\n upSQL = dynamicResult.upSQL\n }\n\n if (dynamicResult.downSQL) {\n downSQL = dynamicResult.downSQL\n }\n\n if (dynamicResult.imports) {\n imports = dynamicResult.imports\n }\n }\n\n let drizzleJsonBefore = this.defaultDrizzleSnapshot as DrizzleSnapshotJSON\n\n if (this.schemaName) {\n drizzleJsonBefore.schemas = {\n [this.schemaName]: this.schemaName,\n }\n }\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'))\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\n }\n\n payload.logger.info('Starting migration: generating UP statements...')\n const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n payload.logger.info('Migration UP complete. Generating DOWN statements...')\n const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore)\n\n payload.logger.info('Migration DOWN statements generation complete.')\n\n const sqlExecute = `await db.${executeMethod}(` + 'sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = sanitizeStatements({ sqlExecute, statements: sqlStatementsUp })\n }\n if (sqlStatementsDown?.length) {\n downSQL = sanitizeStatements({ sqlExecute, statements: sqlStatementsDown })\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {\n if (skipEmpty || !shouldPrompt) {\n return { created: false }\n }\n\n const { confirm: shouldCreateBlankMigration } = await prompts({\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n })\n\n if (!shouldCreateBlankMigration) {\n return { created: false }\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n const data = getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n packageName: payload.db.packageName,\n upSQL: upSQL || ` // Migration code`,\n })\n\n const fullPath = `${filePath}.ts`\n\n // write migration\n fs.writeFileSync(fullPath, data)\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${fullPath}` })\n\n return { created: true, path: fullPath }\n }\n}\n"],"names":["fs","path","getPredefinedMigration","writeMigrationIndex","prompts","getMigrationTemplate","buildCreateMigration","executeMethod","filename","sanitizeStatements","dirname","createMigration","file","forceAcceptWarning","migrationName","payload","shouldPrompt","skipEmpty","dir","db","migrationDir","existsSync","mkdirSync","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","predefinedMigration","timestamp","name","slice","join","fileName","filePath","dynamic","dynamicResult","drizzleJsonBefore","defaultDrizzleSnapshot","schemaName","schemas","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","version","logger","info","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","statements","created","confirm","shouldCreateBlankMigration","type","initial","message","writeFileSync","stringify","data","packageName","fullPath","migrationsDir","msg"],"mappings":"AAGA,OAAOA,QAAQ,KAAI;AACnB,OAAOC,UAAU,OAAM;AACvB,SAASC,sBAAsB,EAAEC,mBAAmB,QAAQ,UAAS;AACrE,OAAOC,aAAa,UAAS;AAI7B,SAASC,oBAAoB,QAAQ,4BAA2B;AAEhE,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,aAAa,EACbC,QAAQ,EACRC,kBAAkB,EAKnB;IACC,MAAMC,UAAUT,KAAKS,OAAO,CAACF;IAC7B,OAAO,eAAeG,gBAEpB,EAAEC,IAAI,EAAEC,kBAAkB,EAAEC,aAAa,EAAEC,OAAO,EAAEC,eAAe,IAAI,EAAEC,SAAS,EAAE;QAEpF,MAAMC,MAAMH,QAAQI,EAAE,CAACC,YAAY;QACnC,IAAI,CAACpB,GAAGqB,UAAU,CAACH,MAAM;YACvBlB,GAAGsB,SAAS,CAACJ;QACf;QAEA,MAAM,EAAEK,mBAAmB,EAAEC,iBAAiB,EAAEC,UAAU,EAAE,GAAG,IAAI,CAACC,iBAAiB;
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/buildCreateMigration.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nexport const buildCreateMigration = ({\n executeMethod,\n filename,\n sanitizeStatements,\n}: {\n executeMethod: string\n filename: string\n sanitizeStatements: (args: { sqlExecute: string; statements: string[] }) => string\n}): CreateMigration => {\n const dirname = path.dirname(filename)\n return async function createMigration(\n this: DrizzleAdapter,\n { file, forceAcceptWarning, migrationName, payload, shouldPrompt = true, skipEmpty },\n ) {\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n\n const { generateDrizzleJson, generateMigration, upSnapshot } = await this.requireDrizzleKit()\n\n const drizzleJsonAfter = await generateDrizzleJson(this.schema)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n\n const predefinedMigration = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n })\n\n imports = predefinedMigration.imports\n downSQL = predefinedMigration.downSQL\n upSQL = predefinedMigration.upSQL\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n if (typeof predefinedMigration.dynamic === 'function') {\n const dynamicResult = await predefinedMigration.dynamic({ filePath, payload })\n\n if (dynamicResult.upSQL) {\n upSQL = dynamicResult.upSQL\n }\n\n if (dynamicResult.downSQL) {\n downSQL = dynamicResult.downSQL\n }\n\n if (dynamicResult.imports) {\n imports = dynamicResult.imports\n }\n }\n\n let drizzleJsonBefore = this.defaultDrizzleSnapshot as DrizzleSnapshotJSON\n\n if (this.schemaName) {\n drizzleJsonBefore.schemas = {\n [this.schemaName]: this.schemaName,\n }\n }\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'))\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\n }\n\n payload.logger.info('Starting migration: generating UP statements...')\n const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n\n payload.logger.info('Migration UP complete. Generating DOWN statements...')\n const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore)\n\n payload.logger.info('Migration DOWN statements generation complete.')\n\n const sqlExecute = `await db.${executeMethod}(` + 'sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = sanitizeStatements({ sqlExecute, statements: sqlStatementsUp })\n }\n if (sqlStatementsDown?.length) {\n downSQL = sanitizeStatements({ sqlExecute, statements: sqlStatementsDown })\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {\n if (skipEmpty || !shouldPrompt) {\n return { created: false }\n }\n\n const { confirm: shouldCreateBlankMigration } = await prompts({\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n })\n\n if (!shouldCreateBlankMigration) {\n return { created: false }\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n const data = getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n packageName: payload.db.packageName,\n upSQL: upSQL || ` // Migration code`,\n })\n\n const fullPath = `${filePath}.ts`\n\n // write migration\n fs.writeFileSync(fullPath, data)\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${fullPath}` })\n\n return { created: true, path: fullPath }\n }\n}\n"],"names":["fs","path","getPredefinedMigration","writeMigrationIndex","prompts","getMigrationTemplate","buildCreateMigration","executeMethod","filename","sanitizeStatements","dirname","createMigration","file","forceAcceptWarning","migrationName","payload","shouldPrompt","skipEmpty","dir","db","migrationDir","existsSync","mkdirSync","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","predefinedMigration","timestamp","name","slice","join","fileName","filePath","dynamic","dynamicResult","drizzleJsonBefore","defaultDrizzleSnapshot","schemaName","schemas","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","version","logger","info","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","statements","created","confirm","shouldCreateBlankMigration","type","initial","message","writeFileSync","stringify","data","packageName","fullPath","migrationsDir","msg"],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ import { findSizesToVariantsFieldCollision, getSizesToVariantsRenames } from './
|
|
|
39
39
|
if (!latestSnapshotFile) {
|
|
40
40
|
return undefined;
|
|
41
41
|
}
|
|
42
|
-
const { generateDrizzleJson, upSnapshot } = adapter.requireDrizzleKit();
|
|
42
|
+
const { generateDrizzleJson, upSnapshot } = await adapter.requireDrizzleKit();
|
|
43
43
|
const currentVersion = (await generateDrizzleJson(adapter.schema)).version;
|
|
44
44
|
const snapshot = JSON.parse(readFileSync(`${dir}/${latestSnapshotFile}`, 'utf8'));
|
|
45
45
|
return upSnapshot && snapshot.version < currentVersion ? upSnapshot(snapshot) : snapshot;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/buildDynamicPredefinedSizesToVariantsMigration.ts"],"sourcesContent":["import type { DynamicMigrationTemplate } from 'payload'\n\nimport { randomUUID } from 'crypto'\nimport { readdirSync, readFileSync, writeFileSync } from 'fs'\n\nimport type { DrizzleAdapter } from '../types.js'\nimport type { SizesToVariantsTableRenames } from './getSizesToVariantsRenames.js'\n\nimport {\n findSizesToVariantsFieldCollision,\n getSizesToVariantsRenames,\n} from './getSizesToVariantsRenames.js'\n\ntype SnapshotIndex = {\n columns: ({ expression: string } | string)[]\n name: string\n}\n\ntype SnapshotTable = {\n columns: Record<string, { name: string }>\n indexes?: Record<string, SnapshotIndex>\n name: string\n}\n\ntype Snapshot = {\n id?: string\n prevId?: string\n tables: Record<string, SnapshotTable>\n version: string\n}\n\n/**\n * Builds the `sizes-to-variants` predefined migration for a SQL adapter. The migration renames\n * columns rather than letting drizzle-kit diff the schema (which would drop and re-add them,\n * losing every stored image size).\n *\n * It also writes a schema snapshot: the project's previous snapshot with only these renames\n * applied. The next generated migration then diffs from the renamed columns instead of dropping\n * them, and still picks up every other schema change the upgrade brings. Without a previous\n * snapshot (a project that has only ever used `push`) there's nothing to update, so none is written.\n */\nexport const buildDynamicPredefinedSizesToVariantsMigration = ({\n packageName,\n}: {\n packageName: string\n}): DynamicMigrationTemplate => {\n return async ({ filePath, payload }) => {\n const adapter = payload.db as unknown as DrizzleAdapter\n const previousSnapshot = await readLatestSnapshot({ adapter })\n\n if (previousSnapshot) {\n const renamedSnapshot = applySizesToVariantsRenames({\n plan: getSizesToVariantsRenames({ adapter, direction: 'up' }),\n snapshot: previousSnapshot,\n })\n\n writeFileSync(`${filePath}.json`, JSON.stringify(renamedSnapshot, null, 2))\n }\n\n return {\n downSQL: ` await migrateSizesToVariants({ db, direction: 'down', payload })`,\n imports: `import { migrateSizesToVariants } from '${packageName}/migration-utils'`,\n upSQL: ` await migrateSizesToVariants({ db, payload })`,\n }\n }\n}\n\n/** The latest snapshot in the migrations directory, upgraded to drizzle-kit's current format. */\nasync function readLatestSnapshot({\n adapter,\n}: {\n adapter: DrizzleAdapter\n}): Promise<Snapshot | undefined> {\n const dir = adapter.migrationDir\n const latestSnapshotFile = readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()[0]\n\n if (!latestSnapshotFile) {\n return undefined\n }\n\n const { generateDrizzleJson, upSnapshot } = adapter.requireDrizzleKit()\n const currentVersion = (await generateDrizzleJson(adapter.schema)).version\n const snapshot = JSON.parse(readFileSync(`${dir}/${latestSnapshotFile}`, 'utf8')) as Snapshot\n\n return upSnapshot && snapshot.version < currentVersion ? upSnapshot(snapshot) : snapshot\n}\n\nfunction applySizesToVariantsRenames({\n plan,\n snapshot,\n}: {\n plan: SizesToVariantsTableRenames[]\n snapshot: Snapshot\n}): Snapshot {\n const renamed: Snapshot = structuredClone(snapshot)\n\n for (const { columns, indexes, tableName } of plan) {\n const table = Object.values(renamed.tables).find(({ name }) => name === tableName)\n\n if (!table) {\n continue\n }\n\n const existingColumns = new Set(Object.values(table.columns).map(({ name }) => name))\n\n for (const { from, to } of columns) {\n if (existingColumns.has(from) && existingColumns.has(to)) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both \"${from}\" and \"${to}\". Move or rename the existing destination data before creating this migration.`,\n )\n }\n }\n\n const fieldCollision = findSizesToVariantsFieldCollision({ columns, existingColumns })\n\n if (fieldCollision) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both the \"${fieldCollision.from}\" and \"${fieldCollision.to}\" fields. Move or rename the existing destination data before creating this migration.`,\n )\n }\n\n for (const { from, to } of columns) {\n const column = table.columns[from]\n\n if (column) {\n if (table.columns[to]) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both \"${from}\" and \"${to}\". Move or rename the existing destination data before creating this migration.`,\n )\n }\n\n delete table.columns[from]\n table.columns[to] = { ...column, name: to }\n }\n }\n\n for (const [key, index] of Object.entries(table.indexes ?? {})) {\n const indexColumns = index.columns.map((column) => {\n const name = typeof column === 'string' ? column : column.expression\n const renamedName = columns.find(({ from }) => from === name)?.to ?? name\n\n return typeof column === 'string' ? renamedName : { ...column, expression: renamedName }\n })\n const indexColumnNames = indexColumns.map((column) =>\n typeof column === 'string' ? column : column.expression,\n )\n const target = indexes.find(\n (planned) => planned.columns.join(',') === indexColumnNames.join(','),\n )\n\n if (!target) {\n continue\n }\n\n if (key !== target.to && table.indexes?.[target.to]) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both indexes \"${key}\" and \"${target.to}\". Move or rename the existing destination index before creating this migration.`,\n )\n }\n\n delete table.indexes[key]\n table.indexes[target.to] = { ...index, name: target.to, columns: indexColumns }\n }\n }\n\n renamed.prevId = snapshot.id\n renamed.id = randomUUID()\n\n return renamed\n}\n"],"names":["randomUUID","readdirSync","readFileSync","writeFileSync","findSizesToVariantsFieldCollision","getSizesToVariantsRenames","buildDynamicPredefinedSizesToVariantsMigration","packageName","filePath","payload","adapter","db","previousSnapshot","readLatestSnapshot","renamedSnapshot","applySizesToVariantsRenames","plan","direction","snapshot","JSON","stringify","downSQL","imports","upSQL","dir","migrationDir","latestSnapshotFile","filter","file","endsWith","sort","reverse","undefined","generateDrizzleJson","upSnapshot","requireDrizzleKit","currentVersion","schema","version","parse","renamed","structuredClone","columns","indexes","tableName","table","Object","values","tables","find","name","existingColumns","Set","map","from","to","has","Error","fieldCollision","column","key","index","entries","indexColumns","expression","renamedName","indexColumnNames","target","planned","join","prevId","id"],"mappings":"AAEA,SAASA,UAAU,QAAQ,SAAQ;AACnC,SAASC,WAAW,EAAEC,YAAY,EAAEC,aAAa,QAAQ,KAAI;AAK7D,SACEC,iCAAiC,EACjCC,yBAAyB,QACpB,iCAAgC;AAoBvC;;;;;;;;;CASC,GACD,OAAO,MAAMC,iDAAiD,CAAC,EAC7DC,WAAW,EAGZ;IACC,OAAO,OAAO,EAAEC,QAAQ,EAAEC,OAAO,EAAE;QACjC,MAAMC,UAAUD,QAAQE,EAAE;QAC1B,MAAMC,mBAAmB,MAAMC,mBAAmB;YAAEH;QAAQ;QAE5D,IAAIE,kBAAkB;YACpB,MAAME,kBAAkBC,4BAA4B;gBAClDC,MAAMX,0BAA0B;oBAAEK;oBAASO,WAAW;gBAAK;gBAC3DC,UAAUN;YACZ;YAEAT,cAAc,GAAGK,SAAS,KAAK,CAAC,EAAEW,KAAKC,SAAS,CAACN,iBAAiB,MAAM;QAC1E;QAEA,OAAO;YACLO,SAAS,CAAC,kEAAkE,CAAC;YAC7EC,SAAS,CAAC,wCAAwC,EAAEf,YAAY,iBAAiB,CAAC;YAClFgB,OAAO,CAAC,+CAA+C,CAAC;QAC1D;IACF;AACF,EAAC;AAED,+FAA+F,GAC/F,eAAeV,mBAAmB,EAChCH,OAAO,EAGR;IACC,MAAMc,MAAMd,QAAQe,YAAY;IAChC,MAAMC,qBAAqBzB,YAAYuB,KACpCG,MAAM,CAAC,CAACC,OAASA,KAAKC,QAAQ,CAAC,UAC/BC,IAAI,GACJC,OAAO,EAAE,CAAC,EAAE;IAEf,IAAI,CAACL,oBAAoB;QACvB,OAAOM;IACT;IAEA,MAAM,EAAEC,mBAAmB,EAAEC,UAAU,EAAE,GAAGxB,QAAQyB,iBAAiB;IACrE,MAAMC,iBAAiB,AAAC,CAAA,MAAMH,oBAAoBvB,QAAQ2B,MAAM,CAAA,EAAGC,OAAO;IAC1E,MAAMpB,WAAWC,KAAKoB,KAAK,CAACrC,aAAa,GAAGsB,IAAI,CAAC,EAAEE,oBAAoB,EAAE;IAEzE,OAAOQ,cAAchB,SAASoB,OAAO,GAAGF,iBAAiBF,WAAWhB,YAAYA;AAClF;AAEA,SAASH,4BAA4B,EACnCC,IAAI,EACJE,QAAQ,EAIT;IACC,MAAMsB,UAAoBC,gBAAgBvB;IAE1C,KAAK,MAAM,EAAEwB,OAAO,EAAEC,OAAO,EAAEC,SAAS,EAAE,IAAI5B,KAAM;QAClD,MAAM6B,QAAQC,OAAOC,MAAM,CAACP,QAAQQ,MAAM,EAAEC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASN;QAExE,IAAI,CAACC,OAAO;YACV;QACF;QAEA,MAAMM,kBAAkB,IAAIC,IAAIN,OAAOC,MAAM,CAACF,MAAMH,OAAO,EAAEW,GAAG,CAAC,CAAC,EAAEH,IAAI,EAAE,GAAKA;QAE/E,KAAK,MAAM,EAAEI,IAAI,EAAEC,EAAE,EAAE,IAAIb,QAAS;YAClC,IAAIS,gBAAgBK,GAAG,CAACF,SAASH,gBAAgBK,GAAG,CAACD,KAAK;gBACxD,MAAM,IAAIE,MACR,CAAC,sEAAsE,EAAEb,UAAU,iBAAiB,EAAEU,KAAK,OAAO,EAAEC,GAAG,+EAA+E,CAAC;YAE3M;QACF;QAEA,MAAMG,iBAAiBtD,kCAAkC;YAAEsC;YAASS;QAAgB;QAEpF,IAAIO,gBAAgB;YAClB,MAAM,IAAID,MACR,CAAC,sEAAsE,EAAEb,UAAU,qBAAqB,EAAEc,eAAeJ,IAAI,CAAC,OAAO,EAAEI,eAAeH,EAAE,CAAC,sFAAsF,CAAC;QAEpP;QAEA,KAAK,MAAM,EAAED,IAAI,EAAEC,EAAE,EAAE,IAAIb,QAAS;YAClC,MAAMiB,SAASd,MAAMH,OAAO,CAACY,KAAK;YAElC,IAAIK,QAAQ;gBACV,IAAId,MAAMH,OAAO,CAACa,GAAG,EAAE;oBACrB,MAAM,IAAIE,MACR,CAAC,sEAAsE,EAAEb,UAAU,iBAAiB,EAAEU,KAAK,OAAO,EAAEC,GAAG,+EAA+E,CAAC;gBAE3M;gBAEA,OAAOV,MAAMH,OAAO,CAACY,KAAK;gBAC1BT,MAAMH,OAAO,CAACa,GAAG,GAAG;oBAAE,GAAGI,MAAM;oBAAET,MAAMK;gBAAG;YAC5C;QACF;QAEA,KAAK,MAAM,CAACK,KAAKC,MAAM,IAAIf,OAAOgB,OAAO,CAACjB,MAAMF,OAAO,IAAI,CAAC,GAAI;YAC9D,MAAMoB,eAAeF,MAAMnB,OAAO,CAACW,GAAG,CAAC,CAACM;gBACtC,MAAMT,OAAO,OAAOS,WAAW,WAAWA,SAASA,OAAOK,UAAU;gBACpE,MAAMC,cAAcvB,QAAQO,IAAI,CAAC,CAAC,EAAEK,IAAI,EAAE,GAAKA,SAASJ,OAAOK,MAAML;gBAErE,OAAO,OAAOS,WAAW,WAAWM,cAAc;oBAAE,GAAGN,MAAM;oBAAEK,YAAYC;gBAAY;YACzF;YACA,MAAMC,mBAAmBH,aAAaV,GAAG,CAAC,CAACM,SACzC,OAAOA,WAAW,WAAWA,SAASA,OAAOK,UAAU;YAEzD,MAAMG,SAASxB,QAAQM,IAAI,CACzB,CAACmB,UAAYA,QAAQ1B,OAAO,CAAC2B,IAAI,CAAC,SAASH,iBAAiBG,IAAI,CAAC;YAGnE,IAAI,CAACF,QAAQ;gBACX;YACF;YAEA,IAAIP,QAAQO,OAAOZ,EAAE,IAAIV,MAAMF,OAAO,EAAE,CAACwB,OAAOZ,EAAE,CAAC,EAAE;gBACnD,MAAM,IAAIE,MACR,CAAC,sEAAsE,EAAEb,UAAU,yBAAyB,EAAEgB,IAAI,OAAO,EAAEO,OAAOZ,EAAE,CAAC,gFAAgF,CAAC;YAE1N;YAEA,OAAOV,MAAMF,OAAO,CAACiB,IAAI;YACzBf,MAAMF,OAAO,CAACwB,OAAOZ,EAAE,CAAC,GAAG;gBAAE,GAAGM,KAAK;gBAAEX,MAAMiB,OAAOZ,EAAE;gBAAEb,SAASqB;YAAa;QAChF;IACF;IAEAvB,QAAQ8B,MAAM,GAAGpD,SAASqD,EAAE;IAC5B/B,QAAQ+B,EAAE,GAAGvE;IAEb,OAAOwC;AACT"}
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/buildDynamicPredefinedSizesToVariantsMigration.ts"],"sourcesContent":["import type { DynamicMigrationTemplate } from 'payload'\n\nimport { randomUUID } from 'crypto'\nimport { readdirSync, readFileSync, writeFileSync } from 'fs'\n\nimport type { DrizzleAdapter } from '../types.js'\nimport type { SizesToVariantsTableRenames } from './getSizesToVariantsRenames.js'\n\nimport {\n findSizesToVariantsFieldCollision,\n getSizesToVariantsRenames,\n} from './getSizesToVariantsRenames.js'\n\ntype SnapshotIndex = {\n columns: ({ expression: string } | string)[]\n name: string\n}\n\ntype SnapshotTable = {\n columns: Record<string, { name: string }>\n indexes?: Record<string, SnapshotIndex>\n name: string\n}\n\ntype Snapshot = {\n id?: string\n prevId?: string\n tables: Record<string, SnapshotTable>\n version: string\n}\n\n/**\n * Builds the `sizes-to-variants` predefined migration for a SQL adapter. The migration renames\n * columns rather than letting drizzle-kit diff the schema (which would drop and re-add them,\n * losing every stored image size).\n *\n * It also writes a schema snapshot: the project's previous snapshot with only these renames\n * applied. The next generated migration then diffs from the renamed columns instead of dropping\n * them, and still picks up every other schema change the upgrade brings. Without a previous\n * snapshot (a project that has only ever used `push`) there's nothing to update, so none is written.\n */\nexport const buildDynamicPredefinedSizesToVariantsMigration = ({\n packageName,\n}: {\n packageName: string\n}): DynamicMigrationTemplate => {\n return async ({ filePath, payload }) => {\n const adapter = payload.db as unknown as DrizzleAdapter\n const previousSnapshot = await readLatestSnapshot({ adapter })\n\n if (previousSnapshot) {\n const renamedSnapshot = applySizesToVariantsRenames({\n plan: getSizesToVariantsRenames({ adapter, direction: 'up' }),\n snapshot: previousSnapshot,\n })\n\n writeFileSync(`${filePath}.json`, JSON.stringify(renamedSnapshot, null, 2))\n }\n\n return {\n downSQL: ` await migrateSizesToVariants({ db, direction: 'down', payload })`,\n imports: `import { migrateSizesToVariants } from '${packageName}/migration-utils'`,\n upSQL: ` await migrateSizesToVariants({ db, payload })`,\n }\n }\n}\n\n/** The latest snapshot in the migrations directory, upgraded to drizzle-kit's current format. */\nasync function readLatestSnapshot({\n adapter,\n}: {\n adapter: DrizzleAdapter\n}): Promise<Snapshot | undefined> {\n const dir = adapter.migrationDir\n const latestSnapshotFile = readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()[0]\n\n if (!latestSnapshotFile) {\n return undefined\n }\n\n const { generateDrizzleJson, upSnapshot } = await adapter.requireDrizzleKit()\n const currentVersion = (await generateDrizzleJson(adapter.schema)).version\n const snapshot = JSON.parse(readFileSync(`${dir}/${latestSnapshotFile}`, 'utf8')) as Snapshot\n\n return upSnapshot && snapshot.version < currentVersion ? upSnapshot(snapshot) : snapshot\n}\n\nfunction applySizesToVariantsRenames({\n plan,\n snapshot,\n}: {\n plan: SizesToVariantsTableRenames[]\n snapshot: Snapshot\n}): Snapshot {\n const renamed: Snapshot = structuredClone(snapshot)\n\n for (const { columns, indexes, tableName } of plan) {\n const table = Object.values(renamed.tables).find(({ name }) => name === tableName)\n\n if (!table) {\n continue\n }\n\n const existingColumns = new Set(Object.values(table.columns).map(({ name }) => name))\n\n for (const { from, to } of columns) {\n if (existingColumns.has(from) && existingColumns.has(to)) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both \"${from}\" and \"${to}\". Move or rename the existing destination data before creating this migration.`,\n )\n }\n }\n\n const fieldCollision = findSizesToVariantsFieldCollision({ columns, existingColumns })\n\n if (fieldCollision) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both the \"${fieldCollision.from}\" and \"${fieldCollision.to}\" fields. Move or rename the existing destination data before creating this migration.`,\n )\n }\n\n for (const { from, to } of columns) {\n const column = table.columns[from]\n\n if (column) {\n if (table.columns[to]) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both \"${from}\" and \"${to}\". Move or rename the existing destination data before creating this migration.`,\n )\n }\n\n delete table.columns[from]\n table.columns[to] = { ...column, name: to }\n }\n }\n\n for (const [key, index] of Object.entries(table.indexes ?? {})) {\n const indexColumns = index.columns.map((column) => {\n const name = typeof column === 'string' ? column : column.expression\n const renamedName = columns.find(({ from }) => from === name)?.to ?? name\n\n return typeof column === 'string' ? renamedName : { ...column, expression: renamedName }\n })\n const indexColumnNames = indexColumns.map((column) =>\n typeof column === 'string' ? column : column.expression,\n )\n const target = indexes.find(\n (planned) => planned.columns.join(',') === indexColumnNames.join(','),\n )\n\n if (!target) {\n continue\n }\n\n if (key !== target.to && table.indexes?.[target.to]) {\n throw new Error(\n `Cannot create the sizes-to-variants migration because snapshot table \"${tableName}\" contains both indexes \"${key}\" and \"${target.to}\". Move or rename the existing destination index before creating this migration.`,\n )\n }\n\n delete table.indexes[key]\n table.indexes[target.to] = { ...index, name: target.to, columns: indexColumns }\n }\n }\n\n renamed.prevId = snapshot.id\n renamed.id = randomUUID()\n\n return renamed\n}\n"],"names":["randomUUID","readdirSync","readFileSync","writeFileSync","findSizesToVariantsFieldCollision","getSizesToVariantsRenames","buildDynamicPredefinedSizesToVariantsMigration","packageName","filePath","payload","adapter","db","previousSnapshot","readLatestSnapshot","renamedSnapshot","applySizesToVariantsRenames","plan","direction","snapshot","JSON","stringify","downSQL","imports","upSQL","dir","migrationDir","latestSnapshotFile","filter","file","endsWith","sort","reverse","undefined","generateDrizzleJson","upSnapshot","requireDrizzleKit","currentVersion","schema","version","parse","renamed","structuredClone","columns","indexes","tableName","table","Object","values","tables","find","name","existingColumns","Set","map","from","to","has","Error","fieldCollision","column","key","index","entries","indexColumns","expression","renamedName","indexColumnNames","target","planned","join","prevId","id"],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ const previousSchema = {
|
|
|
26
26
|
previousSchema.rawTables = adapter.rawTables;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
const { pushSchema } = adapter.requireDrizzleKit();
|
|
29
|
+
const { pushSchema } = await adapter.requireDrizzleKit();
|
|
30
30
|
const { extensions = {}, tablesFilter } = adapter;
|
|
31
31
|
// This will prompt if clarifications are needed for Drizzle to push new schema
|
|
32
32
|
const { apply, hasDataLoss, warnings } = await pushSchema(adapter.schema, adapter.drizzle, adapter.schemaName ? [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import { dequal } from 'dequal'\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 const equal = dequal(previousSchema, {\n localeCodes,\n rawTables: adapter.rawTables,\n })\n\n if (equal) {\n if (adapter.logger) {\n adapter.payload.logger.info('No changes detected in schema, skipping schema push.')\n }\n\n return\n } else {\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":["dequal","prompts","previousSchema","localeCodes","rawTables","pushDevSchema","adapter","process","env","PAYLOAD_FORCE_DRIZZLE_PUSH","payload","config","localization","equal","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,MAAM,QAAQ,SAAQ;AAC/B,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,MAAMU,QAAQb,OAAOE,gBAAgB;YACnCC;YACAC,WAAWE,QAAQF,SAAS;QAC9B;QAEA,IAAIS,OAAO;YACT,IAAIP,QAAQQ,MAAM,EAAE;gBAClBR,QAAQI,OAAO,CAACI,MAAM,CAACC,IAAI,CAAC;YAC9B;YAEA;QACF,OAAO;YACLb,eAAeC,WAAW,GAAGA;YAC7BD,eAAeE,SAAS,GAAGE,QAAQF,SAAS;QAC9C;IACF;IAEA,MAAM,EAAEY,UAAU,EAAE,
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/pushDevSchema.ts"],"sourcesContent":["import { dequal } from 'dequal'\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 const equal = dequal(previousSchema, {\n localeCodes,\n rawTables: adapter.rawTables,\n })\n\n if (equal) {\n if (adapter.logger) {\n adapter.payload.logger.info('No changes detected in schema, skipping schema push.')\n }\n\n return\n } else {\n previousSchema.localeCodes = localeCodes\n previousSchema.rawTables = adapter.rawTables\n }\n }\n\n const { pushSchema } = await 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":["dequal","prompts","previousSchema","localeCodes","rawTables","pushDevSchema","adapter","process","env","PAYLOAD_FORCE_DRIZZLE_PUSH","payload","config","localization","equal","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,MAAM,QAAQ,SAAQ;AAC/B,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,MAAMU,QAAQb,OAAOE,gBAAgB;YACnCC;YACAC,WAAWE,QAAQF,SAAS;QAC9B;QAEA,IAAIS,OAAO;YACT,IAAIP,QAAQQ,MAAM,EAAE;gBAClBR,QAAQI,OAAO,CAACI,MAAM,CAACC,IAAI,CAAC;YAC9B;YAEA;QACF,OAAO;YACLb,eAAeC,WAAW,GAAGA;YAC7BD,eAAeE,SAAS,GAAGE,QAAQF,SAAS;QAC9C;IACF;IAEA,MAAM,EAAEY,UAAU,EAAE,GAAG,MAAMV,QAAQW,iBAAiB;IAEtD,MAAM,EAAEC,aAAa,CAAC,CAAC,EAAEC,YAAY,EAAE,GAAGb;IAE1C,+EAA+E;IAC/E,MAAM,EAAEc,KAAK,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAG,MAAMN,WAC7CV,QAAQiB,MAAM,EACdjB,QAAQkB,OAAO,EACflB,QAAQmB,UAAU,GAAG;QAACnB,QAAQmB,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,MAAM/B,QACxC;YACEgC,MAAM;YACNC,MAAM;YACNC,SAAS;YACTN;QACF,GACA;YACEO,UAAU;gBACR7B,QAAQ8B,IAAI,CAAC;YACf;QACF;QAGF,yCAAyC;QACzC,0DAA0D;QAC1D,IAAI,CAACL,gBAAgB;YACnBzB,QAAQ8B,IAAI,CAAC;QACf;IACF;IAEA,MAAMjB;IACN,MAAMkB,kBAAkBhC,QAAQmB,UAAU,GACtC,CAAC,CAAC,EAAEnB,QAAQmB,UAAU,CAAC,sBAAsB,CAAC,GAC9C;IAEJ,MAAMD,UAAUlB,QAAQkB,OAAO;IAE/B,MAAMe,SAAS,MAAMjC,QAAQkC,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,CAACtC,QAAQuC,MAAM,CAACC,kBAAkB,EAAEC,MAAM,CAAC;YAC7Dd,MAAM;YACNe,OAAO,CAAC;QACV;IACF,OAAO;QACL,MAAM1C,QAAQkC,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": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.6",
|
|
4
4
|
"description": "A library of shared functions used by different payload database adapters",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"license": "MIT",
|
|
@@ -54,10 +54,11 @@
|
|
|
54
54
|
"@libsql/client": "0.14.0",
|
|
55
55
|
"@types/pg": "8.20.0",
|
|
56
56
|
"@types/to-snake-case": "1.0.0",
|
|
57
|
-
"
|
|
57
|
+
"esbuild": "0.27.1",
|
|
58
|
+
"payload": "4.0.0-beta.6"
|
|
58
59
|
},
|
|
59
60
|
"peerDependencies": {
|
|
60
|
-
"payload": "4.0.0-beta.
|
|
61
|
+
"payload": "4.0.0-beta.6"
|
|
61
62
|
},
|
|
62
63
|
"scripts": {
|
|
63
64
|
"build": "pnpm build:swc && pnpm build:types",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"requireDrizzleKit.d.ts","sourceRoot":"","sources":["../../src/sqlite/requireDrizzleKit.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAIpD,eAAO,MAAM,iBAAiB,EAAE,iBAY/B,CAAA"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createRequire } from 'module';
|
|
2
|
-
const require = createRequire(import.meta.url);
|
|
3
|
-
export const requireDrizzleKit = ()=>{
|
|
4
|
-
const { generateSQLiteDrizzleJson, generateSQLiteMigration, pushSQLiteSchema } = require('drizzle-kit/api');
|
|
5
|
-
return {
|
|
6
|
-
generateDrizzleJson: generateSQLiteDrizzleJson,
|
|
7
|
-
generateMigration: generateSQLiteMigration,
|
|
8
|
-
pushSchema: pushSQLiteSchema
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=requireDrizzleKit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite/requireDrizzleKit.ts"],"sourcesContent":["import { createRequire } from 'module'\n\nimport type { RequireDrizzleKit } from '../types.js'\n\nconst require = createRequire(import.meta.url)\n\nexport const requireDrizzleKit: RequireDrizzleKit = () => {\n const {\n generateSQLiteDrizzleJson,\n generateSQLiteMigration,\n pushSQLiteSchema,\n } = require('drizzle-kit/api')\n\n return {\n generateDrizzleJson: generateSQLiteDrizzleJson,\n generateMigration: generateSQLiteMigration,\n pushSchema: pushSQLiteSchema,\n }\n}\n"],"names":["createRequire","require","url","requireDrizzleKit","generateSQLiteDrizzleJson","generateSQLiteMigration","pushSQLiteSchema","generateDrizzleJson","generateMigration","pushSchema"],"mappings":"AAAA,SAASA,aAAa,QAAQ,SAAQ;AAItC,MAAMC,UAAUD,cAAc,YAAYE,GAAG;AAE7C,OAAO,MAAMC,oBAAuC;IAClD,MAAM,EACJC,yBAAyB,EACzBC,uBAAuB,EACvBC,gBAAgB,EACjB,GAAGL,QAAQ;IAEZ,OAAO;QACLM,qBAAqBH;QACrBI,mBAAmBH;QACnBI,YAAYH;IACd;AACF,EAAC"}
|