@hot-updater/server 0.33.2 → 0.35.0
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/_virtual/_rolldown/runtime.cjs +0 -2
- package/dist/adapters/drizzle.cjs +195 -2
- package/dist/adapters/drizzle.d.cts +7 -4
- package/dist/adapters/drizzle.d.mts +7 -4
- package/dist/adapters/drizzle.mjs +194 -2
- package/dist/adapters/drizzleLazyDB.cjs +53 -0
- package/dist/adapters/drizzleLazyDB.mjs +53 -0
- package/dist/adapters/kysely.cjs +154 -3
- package/dist/adapters/kysely.d.cts +18 -10
- package/dist/adapters/kysely.d.mts +18 -10
- package/dist/adapters/kysely.mjs +153 -3
- package/dist/adapters/mongodb.cjs +183 -2
- package/dist/adapters/mongodb.d.cts +5 -4
- package/dist/adapters/mongodb.d.mts +5 -4
- package/dist/adapters/mongodb.mjs +183 -2
- package/dist/adapters/prisma.cjs +200 -2
- package/dist/adapters/prisma.d.cts +9 -4
- package/dist/adapters/prisma.d.mts +9 -4
- package/dist/adapters/prisma.mjs +199 -2
- package/dist/{runtime.cjs → createHotUpdaterCore.cjs} +34 -12
- package/dist/createHotUpdaterCore.d.cts +25 -0
- package/dist/createHotUpdaterCore.d.mts +25 -0
- package/dist/{runtime.mjs → createHotUpdaterCore.mjs} +34 -10
- package/dist/db/bundleRows.cjs +82 -0
- package/dist/db/bundleRows.d.cts +33 -0
- package/dist/db/bundleRows.d.mts +33 -0
- package/dist/db/bundleRows.mjs +79 -0
- package/dist/db/createBundleDiff.cjs +1 -1
- package/dist/db/createBundleDiff.mjs +1 -1
- package/dist/db/fixedMigrator.cjs +136 -0
- package/dist/db/fixedMigrator.mjs +135 -0
- package/dist/db/index.cjs +24 -42
- package/dist/db/index.d.cts +7 -26
- package/dist/db/index.d.mts +7 -26
- package/dist/db/index.mjs +19 -41
- package/dist/db/pluginCore.cjs +13 -5
- package/dist/db/pluginCore.mjs +13 -5
- package/dist/db/schema/mongodb.cjs +17 -0
- package/dist/db/schema/mongodb.mjs +17 -0
- package/dist/db/schema/registry.cjs +23 -0
- package/dist/db/schema/registry.mjs +18 -0
- package/dist/db/schema/sql.cjs +84 -0
- package/dist/db/schema/sql.mjs +78 -0
- package/dist/db/schema/sqlMigrations.cjs +74 -0
- package/dist/db/schema/sqlMigrations.mjs +73 -0
- package/dist/db/schema/sqlOperations.cjs +27 -0
- package/dist/db/schema/sqlOperations.mjs +26 -0
- package/dist/db/schemaEnhancements.cjs +1 -152
- package/dist/db/schemaEnhancements.mjs +1 -149
- package/dist/db/schemaGenerators.cjs +222 -0
- package/dist/db/schemaGenerators.mjs +220 -0
- package/dist/db/schemaReadiness.cjs +23 -0
- package/dist/db/schemaReadiness.d.cts +8 -0
- package/dist/db/schemaReadiness.d.mts +8 -0
- package/dist/db/schemaReadiness.mjs +22 -0
- package/dist/db/types.cjs +10 -2
- package/dist/db/types.d.cts +58 -14
- package/dist/db/types.d.mts +58 -14
- package/dist/db/types.mjs +9 -1
- package/dist/index.cjs +2 -6
- package/dist/index.d.cts +3 -5
- package/dist/index.d.mts +3 -5
- package/dist/index.mjs +2 -4
- package/dist/node.cjs +2 -0
- package/dist/node.d.cts +7 -3
- package/dist/node.d.mts +7 -3
- package/dist/node.mjs +2 -1
- package/dist/{packages/server/package.cjs → package.cjs} +1 -1
- package/dist/{packages/server/package.mjs → package.mjs} +1 -1
- package/dist/schema/dsl.cjs +86 -0
- package/dist/schema/dsl.mjs +73 -0
- package/dist/schema/index.cjs +13 -0
- package/dist/schema/index.mjs +13 -0
- package/dist/schema/settings.cjs +9 -0
- package/dist/schema/settings.mjs +9 -0
- package/dist/schema/types.cjs +6 -0
- package/dist/schema/types.mjs +5 -0
- package/dist/schema/v0_21_0.cjs +33 -18
- package/dist/schema/v0_21_0.mjs +32 -18
- package/dist/schema/v0_29_0.cjs +40 -20
- package/dist/schema/v0_29_0.mjs +39 -20
- package/dist/schema/v0_31_0.cjs +77 -43
- package/dist/schema/v0_31_0.mjs +75 -43
- package/dist/types/index.d.cts +1 -1
- package/dist/types/index.d.mts +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +34 -20
- package/src/adapters/drizzle.spec.ts +76 -0
- package/src/adapters/drizzle.ts +328 -12
- package/src/adapters/drizzleLazyDB.ts +151 -0
- package/src/adapters/kysely.spec.ts +107 -0
- package/src/adapters/kysely.ts +349 -14
- package/src/adapters/mongodb.ts +298 -15
- package/src/adapters/prisma.ts +337 -12
- package/src/createHotUpdaterCore.ts +168 -0
- package/src/db/bundleRows.ts +140 -0
- package/src/db/fixedMigrator.spec.ts +89 -0
- package/src/db/fixedMigrator.ts +288 -0
- package/src/db/hotUpdaterSchema.ts +6 -0
- package/src/db/index.spec.ts +983 -19
- package/src/db/index.ts +37 -108
- package/src/db/pluginCore.spec.ts +17 -11
- package/src/db/pluginCore.ts +15 -6
- package/src/db/schema/definitions.ts +1 -0
- package/src/db/schema/mongodb.ts +26 -0
- package/src/db/schema/registry.ts +55 -0
- package/src/db/schema/sql.ts +200 -0
- package/src/db/schema/sqlMigrations.ts +219 -0
- package/src/db/schema/sqlOperations.ts +62 -0
- package/src/db/schema/types.ts +1 -0
- package/src/db/schemaEnhancements.ts +0 -405
- package/src/db/schemaGenerators.ts +382 -0
- package/src/db/schemaReadiness.ts +33 -0
- package/src/db/types.ts +69 -25
- package/src/handler-standalone.integration.spec.ts +3 -2
- package/src/index.ts +9 -3
- package/src/node.spec.ts +50 -0
- package/src/node.ts +7 -3
- package/src/runtime.spec.ts +132 -1
- package/src/schema/dsl-all-versions.spec.ts +26 -0
- package/src/schema/dsl.ts +148 -0
- package/src/schema/index.ts +16 -0
- package/src/schema/settings.ts +15 -0
- package/src/schema/types.ts +73 -0
- package/src/schema/v0_21_0.ts +48 -18
- package/src/schema/v0_29_0.ts +58 -22
- package/src/schema/v0_31_0.spec.ts +73 -0
- package/src/schema/v0_31_0.ts +116 -54
- package/src/types/index.ts +1 -1
- package/dist/_virtual/_rolldown/runtime.mjs +0 -6
- package/dist/calculatePagination.cjs +0 -25
- package/dist/calculatePagination.mjs +0 -25
- package/dist/db/ormCore.cjs +0 -577
- package/dist/db/ormCore.d.cts +0 -110
- package/dist/db/ormCore.d.mts +0 -110
- package/dist/db/ormCore.mjs +0 -575
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/_u64.cjs +0 -112
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/_u64.mjs +0 -108
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/cryptoNode.cjs +0 -22
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/cryptoNode.mjs +0 -18
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/sha3.cjs +0 -219
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/sha3.mjs +0 -214
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/utils.cjs +0 -275
- package/dist/node_modules/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/utils.mjs +0 -270
- package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/index.cjs +0 -17
- package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/index.mjs +0 -13
- package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/src/index.cjs +0 -69
- package/dist/node_modules/.pnpm/@paralleldrive_cuid2@2.3.1/node_modules/@paralleldrive/cuid2/src/index.mjs +0 -65
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/column.cjs +0 -52
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/column.mjs +0 -52
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/entity.cjs +0 -16
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/entity.mjs +0 -15
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/pg-core/columns/enum.cjs +0 -7
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/pg-core/columns/enum.mjs +0 -7
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/conditions.cjs +0 -92
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/conditions.mjs +0 -78
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/select.cjs +0 -11
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/expressions/select.mjs +0 -10
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/sql.cjs +0 -383
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/sql/sql.mjs +0 -366
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/subquery.cjs +0 -17
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/subquery.mjs +0 -17
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.cjs +0 -60
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.mjs +0 -59
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.utils.cjs +0 -4
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/table.utils.mjs +0 -4
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/tracing.cjs +0 -6
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/tracing.mjs +0 -6
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/view-common.cjs +0 -4
- package/dist/node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare_workers-types@4.20260611.1_@electric-sql_pglite@0.4.1_@l_601a3995dfc55b0b7fac93cbe1e76579/node_modules/drizzle-orm/view-common.mjs +0 -4
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.cjs +0 -383
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.d.cts +0 -12
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.d.mts +0 -12
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/drizzle/index.mjs +0 -383
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/kysely/index.cjs +0 -4
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/kysely/index.mjs +0 -5
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.cjs +0 -339
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.d.cts +0 -70
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.d.mts +0 -70
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/adapters/prisma/index.mjs +0 -339
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-7PZK4ONR.cjs +0 -57
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-7PZK4ONR.mjs +0 -56
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-C6OTUURW.cjs +0 -330
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-C6OTUURW.mjs +0 -326
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-CHTIKPQU.cjs +0 -166
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-CHTIKPQU.mjs +0 -163
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-GUE4GMNC.cjs +0 -14
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-GUE4GMNC.mjs +0 -13
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LHHP6UVP.cjs +0 -24
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LHHP6UVP.mjs +0 -24
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LVCPMTAT.cjs +0 -1190
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-LVCPMTAT.mjs +0 -1189
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-PK2W2SQ7.cjs +0 -197
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-PK2W2SQ7.mjs +0 -197
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZEQMAIFI.cjs +0 -410
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZEQMAIFI.mjs +0 -400
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZOCGSAWS.cjs +0 -213
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/chunk-ZOCGSAWS.mjs +0 -212
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/create-tg0451Y_.d.cts +0 -285
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/create-tg0451Y_.d.mts +0 -285
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index-CMqePMTF.d.cts +0 -45
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index-CMqePMTF.d.mts +0 -45
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.cjs +0 -69
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.d.cts +0 -49
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.d.mts +0 -49
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/index.mjs +0 -67
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/query/index.d.cts +0 -156
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/query/index.d.mts +0 -156
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/schema/index.cjs +0 -1
- package/dist/node_modules/.pnpm/fumadb@0.2.2_mongodb@6.20.0_@aws-sdk_credential-providers@3.1066.0_socks@2.8.9__prisma@_ee79457f0e32f18f0beb5c2db02e4f73/node_modules/fumadb/dist/schema/index.mjs +0 -2
- package/dist/runtime.d.cts +0 -22
- package/dist/runtime.d.mts +0 -22
- package/src/db/ormCore.ts +0 -1059
- package/src/db/ormUpdateCheck.bench.ts +0 -262
- package/src/runtime.ts +0 -106
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
require("../../schema/types.cjs");
|
|
2
|
+
const require_registry = require("./registry.cjs");
|
|
3
|
+
//#region src/db/schema/sql.ts
|
|
4
|
+
const hotUpdaterCreateTableOperations = require_registry.hotUpdaterDataTables.map((table) => ({
|
|
5
|
+
type: "create-table",
|
|
6
|
+
value: {
|
|
7
|
+
ormName: table.ormName,
|
|
8
|
+
columns: Object.fromEntries(table.columns.map((column) => [column.ormName, {
|
|
9
|
+
ormName: column.ormName,
|
|
10
|
+
type: column.type
|
|
11
|
+
}]))
|
|
12
|
+
}
|
|
13
|
+
}));
|
|
14
|
+
const getSqlType = (type, provider) => {
|
|
15
|
+
if (provider === "sqlite") {
|
|
16
|
+
if (type === "bool" || type === "integer") return "integer";
|
|
17
|
+
return "text";
|
|
18
|
+
}
|
|
19
|
+
if (provider === "mysql") {
|
|
20
|
+
if (type === "uuid") return "char(36)";
|
|
21
|
+
if (type === "bool") return "boolean";
|
|
22
|
+
if (type === "integer") return "integer";
|
|
23
|
+
if (type === "json") return "json";
|
|
24
|
+
if (type.startsWith("varchar")) return type;
|
|
25
|
+
return "text";
|
|
26
|
+
}
|
|
27
|
+
if (type === "uuid") return "uuid";
|
|
28
|
+
if (type === "bool") return "boolean";
|
|
29
|
+
if (type === "integer") return "integer";
|
|
30
|
+
if (type === "json") return "json";
|
|
31
|
+
if (type.startsWith("varchar")) return type;
|
|
32
|
+
return "text";
|
|
33
|
+
};
|
|
34
|
+
const sqlStringLiteral = (value) => `'${value.replaceAll("'", "''")}'`;
|
|
35
|
+
const sqlDefaultClause = (column, provider) => {
|
|
36
|
+
const value = column.default;
|
|
37
|
+
if (!value) return "";
|
|
38
|
+
if (provider === "mysql" && (column.type === "json" || column.type === "string")) return "";
|
|
39
|
+
if (value.type === "json") {
|
|
40
|
+
const json = sqlStringLiteral(JSON.stringify(value.value));
|
|
41
|
+
return provider === "postgresql" || provider === "cockroachdb" ? ` default ${json}::json` : ` default ${json}`;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value.value === "string") return ` default ${sqlStringLiteral(value.value)}`;
|
|
44
|
+
return ` default ${String(value.value)}`;
|
|
45
|
+
};
|
|
46
|
+
const sqlColumnName = (table, column, provider) => table.ormName === "private_hot_updater_settings" && column.ormName === "key" && provider === "mysql" ? "`key`" : column.ormName;
|
|
47
|
+
const sqlColumnDefinition = (table, column, provider) => {
|
|
48
|
+
const constraints = [column.primaryKey ? "primary key" : void 0, column.nullable ? void 0 : "not null"].filter(Boolean);
|
|
49
|
+
return [
|
|
50
|
+
sqlColumnName(table, column, provider),
|
|
51
|
+
getSqlType(column.type, provider),
|
|
52
|
+
...constraints
|
|
53
|
+
].join(" ") + sqlDefaultClause(column, provider);
|
|
54
|
+
};
|
|
55
|
+
const sqlIndexColumn = (table, columnName, provider) => {
|
|
56
|
+
const column = require_registry.getSchemaColumn(table, columnName);
|
|
57
|
+
return provider === "mysql" && column.type === "string" ? `${columnName}(255)` : columnName;
|
|
58
|
+
};
|
|
59
|
+
const createIndexSql = (table, index, provider) => `create index ${index.name} on ${table.ormName}(${index.columns.map((column) => sqlIndexColumn(table, column, provider)).join(", ")})`;
|
|
60
|
+
const createForeignKeySql = (table, foreignKey) => `alter table ${table.ormName} add constraint ${foreignKey.name} foreign key (${foreignKey.columns.join(", ")}) references ${foreignKey.referencedTable}(${foreignKey.referencedColumns.join(", ")}) on update ${foreignKey.onUpdate} on delete ${foreignKey.onDelete}`;
|
|
61
|
+
const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
|
|
62
|
+
const inlineSqlChecks = (table, provider) => provider === "sqlite" ? (table.checks ?? []).filter((check) => check.sqliteInline).map((check) => `constraint ${check.name} check (${check.expression})`) : [];
|
|
63
|
+
const createTableStatement = (table, provider) => {
|
|
64
|
+
const lines = [...table.columns.map((column) => sqlColumnDefinition(table, column, provider)), ...inlineSqlChecks(table, provider)];
|
|
65
|
+
return `create table if not exists ${table.ormName} (\n${lines.join(",\n")}\n)`;
|
|
66
|
+
};
|
|
67
|
+
const createForeignKeySqlStatements = (provider, relationMode = "foreign-keys") => {
|
|
68
|
+
if (relationMode !== "foreign-keys" || provider === "sqlite") return [];
|
|
69
|
+
return require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)));
|
|
70
|
+
};
|
|
71
|
+
const createTableSql = (provider, relationMode = "foreign-keys") => [
|
|
72
|
+
...require_registry.hotUpdaterSchema.tables.map((table) => createTableStatement(table, provider)),
|
|
73
|
+
...require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).map((index) => createIndexSql(table, index, provider))),
|
|
74
|
+
...provider === "sqlite" ? [] : require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => createCheckSql(table, check))),
|
|
75
|
+
...createForeignKeySqlStatements(provider, relationMode)
|
|
76
|
+
];
|
|
77
|
+
//#endregion
|
|
78
|
+
exports.createCheckSql = createCheckSql;
|
|
79
|
+
exports.createForeignKeySql = createForeignKeySql;
|
|
80
|
+
exports.createIndexSql = createIndexSql;
|
|
81
|
+
exports.createTableSql = createTableSql;
|
|
82
|
+
exports.createTableStatement = createTableStatement;
|
|
83
|
+
exports.hotUpdaterCreateTableOperations = hotUpdaterCreateTableOperations;
|
|
84
|
+
exports.sqlColumnDefinition = sqlColumnDefinition;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import "../../schema/types.mjs";
|
|
2
|
+
import { getSchemaColumn, hotUpdaterDataTables, hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry.mjs";
|
|
3
|
+
//#region src/db/schema/sql.ts
|
|
4
|
+
const hotUpdaterCreateTableOperations = hotUpdaterDataTables.map((table) => ({
|
|
5
|
+
type: "create-table",
|
|
6
|
+
value: {
|
|
7
|
+
ormName: table.ormName,
|
|
8
|
+
columns: Object.fromEntries(table.columns.map((column) => [column.ormName, {
|
|
9
|
+
ormName: column.ormName,
|
|
10
|
+
type: column.type
|
|
11
|
+
}]))
|
|
12
|
+
}
|
|
13
|
+
}));
|
|
14
|
+
const getSqlType = (type, provider) => {
|
|
15
|
+
if (provider === "sqlite") {
|
|
16
|
+
if (type === "bool" || type === "integer") return "integer";
|
|
17
|
+
return "text";
|
|
18
|
+
}
|
|
19
|
+
if (provider === "mysql") {
|
|
20
|
+
if (type === "uuid") return "char(36)";
|
|
21
|
+
if (type === "bool") return "boolean";
|
|
22
|
+
if (type === "integer") return "integer";
|
|
23
|
+
if (type === "json") return "json";
|
|
24
|
+
if (type.startsWith("varchar")) return type;
|
|
25
|
+
return "text";
|
|
26
|
+
}
|
|
27
|
+
if (type === "uuid") return "uuid";
|
|
28
|
+
if (type === "bool") return "boolean";
|
|
29
|
+
if (type === "integer") return "integer";
|
|
30
|
+
if (type === "json") return "json";
|
|
31
|
+
if (type.startsWith("varchar")) return type;
|
|
32
|
+
return "text";
|
|
33
|
+
};
|
|
34
|
+
const sqlStringLiteral = (value) => `'${value.replaceAll("'", "''")}'`;
|
|
35
|
+
const sqlDefaultClause = (column, provider) => {
|
|
36
|
+
const value = column.default;
|
|
37
|
+
if (!value) return "";
|
|
38
|
+
if (provider === "mysql" && (column.type === "json" || column.type === "string")) return "";
|
|
39
|
+
if (value.type === "json") {
|
|
40
|
+
const json = sqlStringLiteral(JSON.stringify(value.value));
|
|
41
|
+
return provider === "postgresql" || provider === "cockroachdb" ? ` default ${json}::json` : ` default ${json}`;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value.value === "string") return ` default ${sqlStringLiteral(value.value)}`;
|
|
44
|
+
return ` default ${String(value.value)}`;
|
|
45
|
+
};
|
|
46
|
+
const sqlColumnName = (table, column, provider) => table.ormName === "private_hot_updater_settings" && column.ormName === "key" && provider === "mysql" ? "`key`" : column.ormName;
|
|
47
|
+
const sqlColumnDefinition = (table, column, provider) => {
|
|
48
|
+
const constraints = [column.primaryKey ? "primary key" : void 0, column.nullable ? void 0 : "not null"].filter(Boolean);
|
|
49
|
+
return [
|
|
50
|
+
sqlColumnName(table, column, provider),
|
|
51
|
+
getSqlType(column.type, provider),
|
|
52
|
+
...constraints
|
|
53
|
+
].join(" ") + sqlDefaultClause(column, provider);
|
|
54
|
+
};
|
|
55
|
+
const sqlIndexColumn = (table, columnName, provider) => {
|
|
56
|
+
const column = getSchemaColumn(table, columnName);
|
|
57
|
+
return provider === "mysql" && column.type === "string" ? `${columnName}(255)` : columnName;
|
|
58
|
+
};
|
|
59
|
+
const createIndexSql = (table, index, provider) => `create index ${index.name} on ${table.ormName}(${index.columns.map((column) => sqlIndexColumn(table, column, provider)).join(", ")})`;
|
|
60
|
+
const createForeignKeySql = (table, foreignKey) => `alter table ${table.ormName} add constraint ${foreignKey.name} foreign key (${foreignKey.columns.join(", ")}) references ${foreignKey.referencedTable}(${foreignKey.referencedColumns.join(", ")}) on update ${foreignKey.onUpdate} on delete ${foreignKey.onDelete}`;
|
|
61
|
+
const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
|
|
62
|
+
const inlineSqlChecks = (table, provider) => provider === "sqlite" ? (table.checks ?? []).filter((check) => check.sqliteInline).map((check) => `constraint ${check.name} check (${check.expression})`) : [];
|
|
63
|
+
const createTableStatement = (table, provider) => {
|
|
64
|
+
const lines = [...table.columns.map((column) => sqlColumnDefinition(table, column, provider)), ...inlineSqlChecks(table, provider)];
|
|
65
|
+
return `create table if not exists ${table.ormName} (\n${lines.join(",\n")}\n)`;
|
|
66
|
+
};
|
|
67
|
+
const createForeignKeySqlStatements = (provider, relationMode = "foreign-keys") => {
|
|
68
|
+
if (relationMode !== "foreign-keys" || provider === "sqlite") return [];
|
|
69
|
+
return hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)));
|
|
70
|
+
};
|
|
71
|
+
const createTableSql = (provider, relationMode = "foreign-keys") => [
|
|
72
|
+
...hotUpdaterSchema.tables.map((table) => createTableStatement(table, provider)),
|
|
73
|
+
...hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).map((index) => createIndexSql(table, index, provider))),
|
|
74
|
+
...provider === "sqlite" ? [] : hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => createCheckSql(table, check))),
|
|
75
|
+
...createForeignKeySqlStatements(provider, relationMode)
|
|
76
|
+
];
|
|
77
|
+
//#endregion
|
|
78
|
+
export { createCheckSql, createForeignKeySql, createIndexSql, createTableSql, createTableStatement, hotUpdaterCreateTableOperations, sqlColumnDefinition };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const require_index = require("../../schema/index.cjs");
|
|
2
|
+
const require_registry = require("./registry.cjs");
|
|
3
|
+
const require_sql = require("./sql.cjs");
|
|
4
|
+
//#region src/db/schema/sqlMigrations.ts
|
|
5
|
+
const nameMap = (items) => new Map((items ?? []).map((item) => [item.name, item]));
|
|
6
|
+
const columnMap = (table) => new Map(table.columns.map((column) => [column.ormName, column]));
|
|
7
|
+
const stableStringify = (value) => JSON.stringify(value);
|
|
8
|
+
const assertSameSchemaValue = (location, left, right) => {
|
|
9
|
+
if (stableStringify(left) !== stableStringify(right)) throw new Error(`Unsupported Hot Updater schema change at ${location}. Add an explicit migration step before changing existing schema metadata.`);
|
|
10
|
+
};
|
|
11
|
+
const compareNamedItems = (location, previousItems, nextItems) => {
|
|
12
|
+
const nextItemsByName = nameMap(nextItems);
|
|
13
|
+
for (const previousItem of previousItems ?? []) {
|
|
14
|
+
const nextItem = nextItemsByName.get(previousItem.name);
|
|
15
|
+
if (!nextItem) throw new Error(`Unsupported Hot Updater schema change at ${location}.${previousItem.name}. Removing schema metadata requires an explicit migration step.`);
|
|
16
|
+
assertSameSchemaValue(`${location}.${previousItem.name}`, previousItem, nextItem);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const assertNoUnsupportedTableChanges = (previous, next, provider) => {
|
|
20
|
+
const nextColumns = columnMap(next);
|
|
21
|
+
for (const previousColumn of previous.columns) {
|
|
22
|
+
const nextColumn = nextColumns.get(previousColumn.ormName);
|
|
23
|
+
if (!nextColumn) throw new Error(`Unsupported Hot Updater schema change at ${previous.ormName}.${previousColumn.ormName}. Dropping columns requires an explicit migration step.`);
|
|
24
|
+
assertSameSchemaValue(`${previous.ormName}.${previousColumn.ormName}`, previousColumn, nextColumn);
|
|
25
|
+
}
|
|
26
|
+
compareNamedItems(`${previous.ormName}.indexes`, previous.indexes?.filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)), next.indexes?.filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)));
|
|
27
|
+
compareNamedItems(`${previous.ormName}.checks`, previous.checks, next.checks);
|
|
28
|
+
compareNamedItems(`${previous.ormName}.foreignKeys`, previous.foreignKeys, next.foreignKeys);
|
|
29
|
+
};
|
|
30
|
+
const createForeignKeySql = (table, foreignKey) => `alter table ${table.ormName} add constraint ${foreignKey.name} foreign key (${foreignKey.columns.join(", ")}) references ${foreignKey.referencedTable}(${foreignKey.referencedColumns.join(", ")}) on update ${foreignKey.onUpdate} on delete ${foreignKey.onDelete}`;
|
|
31
|
+
const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
|
|
32
|
+
const createAddedTableSql = (table, provider, relationMode) => [
|
|
33
|
+
require_sql.createTableStatement(table, provider),
|
|
34
|
+
...(table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).map((index) => require_sql.createIndexSql(table, index, provider)),
|
|
35
|
+
...provider === "sqlite" ? [] : (table.checks ?? []).map((check) => createCheckSql(table, check)),
|
|
36
|
+
...relationMode === "foreign-keys" && provider !== "sqlite" ? (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)) : []
|
|
37
|
+
];
|
|
38
|
+
const createChangedTableSql = (previous, next, provider, relationMode) => {
|
|
39
|
+
assertNoUnsupportedTableChanges(previous, next, provider);
|
|
40
|
+
const previousColumns = columnMap(previous);
|
|
41
|
+
const previousIndexes = nameMap(previous.indexes?.filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)));
|
|
42
|
+
const previousChecks = nameMap(previous.checks);
|
|
43
|
+
const previousForeignKeys = nameMap(previous.foreignKeys);
|
|
44
|
+
return [
|
|
45
|
+
...next.columns.filter((column) => !previousColumns.has(column.ormName)).map((column) => `alter table ${next.ormName} add column ${require_sql.sqlColumnDefinition(next, column, provider)}`),
|
|
46
|
+
...(next.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).filter((index) => !previousIndexes.has(index.name)).map((index) => require_sql.createIndexSql(next, index, provider)),
|
|
47
|
+
...provider === "sqlite" ? [] : (next.checks ?? []).filter((check) => !previousChecks.has(check.name)).map((check) => createCheckSql(next, check)),
|
|
48
|
+
...relationMode === "foreign-keys" && provider !== "sqlite" ? (next.foreignKeys ?? []).filter((foreignKey) => !previousForeignKeys.has(foreignKey.name)).map((foreignKey) => createForeignKeySql(next, foreignKey)) : []
|
|
49
|
+
];
|
|
50
|
+
};
|
|
51
|
+
const createSchemaMigrationSql = (fromVersion, toVersion, provider, relationMode = "foreign-keys") => {
|
|
52
|
+
const fromIndex = require_registry.getSchemaVersionIndex(fromVersion);
|
|
53
|
+
const toIndex = require_registry.getSchemaVersionIndex(toVersion);
|
|
54
|
+
if (fromIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${fromVersion}`);
|
|
55
|
+
if (toIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${toVersion}`);
|
|
56
|
+
if (fromIndex > toIndex) throw new Error(`Cannot migrate Hot Updater schema down to ${toVersion}.`);
|
|
57
|
+
const statements = [];
|
|
58
|
+
for (let index = fromIndex + 1; index <= toIndex; index += 1) {
|
|
59
|
+
const previous = require_index.hotUpdaterSchemaVersions[index - 1];
|
|
60
|
+
const next = require_index.hotUpdaterSchemaVersions[index];
|
|
61
|
+
const previousTables = new Map(previous.tables.map((table) => [table.ormName, table]));
|
|
62
|
+
for (const table of next.tables) {
|
|
63
|
+
if (table.internal) continue;
|
|
64
|
+
const previousTable = previousTables.get(table.ormName);
|
|
65
|
+
statements.push(...previousTable ? createChangedTableSql(previousTable, table, provider, relationMode) : createAddedTableSql(table, provider, relationMode));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return statements;
|
|
69
|
+
};
|
|
70
|
+
const createV029AlterSql = (provider) => createSchemaMigrationSql("0.21.0", "0.29.0", provider);
|
|
71
|
+
const createV031AlterSql = (provider, relationMode = "foreign-keys") => createSchemaMigrationSql("0.29.0", "0.31.0", provider, relationMode);
|
|
72
|
+
//#endregion
|
|
73
|
+
exports.createV029AlterSql = createV029AlterSql;
|
|
74
|
+
exports.createV031AlterSql = createV031AlterSql;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { hotUpdaterSchemaVersions } from "../../schema/index.mjs";
|
|
2
|
+
import { getSchemaVersionIndex, schemaIndexAppliesToProvider } from "./registry.mjs";
|
|
3
|
+
import { createIndexSql, createTableStatement, sqlColumnDefinition } from "./sql.mjs";
|
|
4
|
+
//#region src/db/schema/sqlMigrations.ts
|
|
5
|
+
const nameMap = (items) => new Map((items ?? []).map((item) => [item.name, item]));
|
|
6
|
+
const columnMap = (table) => new Map(table.columns.map((column) => [column.ormName, column]));
|
|
7
|
+
const stableStringify = (value) => JSON.stringify(value);
|
|
8
|
+
const assertSameSchemaValue = (location, left, right) => {
|
|
9
|
+
if (stableStringify(left) !== stableStringify(right)) throw new Error(`Unsupported Hot Updater schema change at ${location}. Add an explicit migration step before changing existing schema metadata.`);
|
|
10
|
+
};
|
|
11
|
+
const compareNamedItems = (location, previousItems, nextItems) => {
|
|
12
|
+
const nextItemsByName = nameMap(nextItems);
|
|
13
|
+
for (const previousItem of previousItems ?? []) {
|
|
14
|
+
const nextItem = nextItemsByName.get(previousItem.name);
|
|
15
|
+
if (!nextItem) throw new Error(`Unsupported Hot Updater schema change at ${location}.${previousItem.name}. Removing schema metadata requires an explicit migration step.`);
|
|
16
|
+
assertSameSchemaValue(`${location}.${previousItem.name}`, previousItem, nextItem);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const assertNoUnsupportedTableChanges = (previous, next, provider) => {
|
|
20
|
+
const nextColumns = columnMap(next);
|
|
21
|
+
for (const previousColumn of previous.columns) {
|
|
22
|
+
const nextColumn = nextColumns.get(previousColumn.ormName);
|
|
23
|
+
if (!nextColumn) throw new Error(`Unsupported Hot Updater schema change at ${previous.ormName}.${previousColumn.ormName}. Dropping columns requires an explicit migration step.`);
|
|
24
|
+
assertSameSchemaValue(`${previous.ormName}.${previousColumn.ormName}`, previousColumn, nextColumn);
|
|
25
|
+
}
|
|
26
|
+
compareNamedItems(`${previous.ormName}.indexes`, previous.indexes?.filter((index) => schemaIndexAppliesToProvider(index, provider)), next.indexes?.filter((index) => schemaIndexAppliesToProvider(index, provider)));
|
|
27
|
+
compareNamedItems(`${previous.ormName}.checks`, previous.checks, next.checks);
|
|
28
|
+
compareNamedItems(`${previous.ormName}.foreignKeys`, previous.foreignKeys, next.foreignKeys);
|
|
29
|
+
};
|
|
30
|
+
const createForeignKeySql = (table, foreignKey) => `alter table ${table.ormName} add constraint ${foreignKey.name} foreign key (${foreignKey.columns.join(", ")}) references ${foreignKey.referencedTable}(${foreignKey.referencedColumns.join(", ")}) on update ${foreignKey.onUpdate} on delete ${foreignKey.onDelete}`;
|
|
31
|
+
const createCheckSql = (table, check) => `alter table ${table.ormName} add constraint ${check.name} check (${check.expression})`;
|
|
32
|
+
const createAddedTableSql = (table, provider, relationMode) => [
|
|
33
|
+
createTableStatement(table, provider),
|
|
34
|
+
...(table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).map((index) => createIndexSql(table, index, provider)),
|
|
35
|
+
...provider === "sqlite" ? [] : (table.checks ?? []).map((check) => createCheckSql(table, check)),
|
|
36
|
+
...relationMode === "foreign-keys" && provider !== "sqlite" ? (table.foreignKeys ?? []).map((foreignKey) => createForeignKeySql(table, foreignKey)) : []
|
|
37
|
+
];
|
|
38
|
+
const createChangedTableSql = (previous, next, provider, relationMode) => {
|
|
39
|
+
assertNoUnsupportedTableChanges(previous, next, provider);
|
|
40
|
+
const previousColumns = columnMap(previous);
|
|
41
|
+
const previousIndexes = nameMap(previous.indexes?.filter((index) => schemaIndexAppliesToProvider(index, provider)));
|
|
42
|
+
const previousChecks = nameMap(previous.checks);
|
|
43
|
+
const previousForeignKeys = nameMap(previous.foreignKeys);
|
|
44
|
+
return [
|
|
45
|
+
...next.columns.filter((column) => !previousColumns.has(column.ormName)).map((column) => `alter table ${next.ormName} add column ${sqlColumnDefinition(next, column, provider)}`),
|
|
46
|
+
...(next.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).filter((index) => !previousIndexes.has(index.name)).map((index) => createIndexSql(next, index, provider)),
|
|
47
|
+
...provider === "sqlite" ? [] : (next.checks ?? []).filter((check) => !previousChecks.has(check.name)).map((check) => createCheckSql(next, check)),
|
|
48
|
+
...relationMode === "foreign-keys" && provider !== "sqlite" ? (next.foreignKeys ?? []).filter((foreignKey) => !previousForeignKeys.has(foreignKey.name)).map((foreignKey) => createForeignKeySql(next, foreignKey)) : []
|
|
49
|
+
];
|
|
50
|
+
};
|
|
51
|
+
const createSchemaMigrationSql = (fromVersion, toVersion, provider, relationMode = "foreign-keys") => {
|
|
52
|
+
const fromIndex = getSchemaVersionIndex(fromVersion);
|
|
53
|
+
const toIndex = getSchemaVersionIndex(toVersion);
|
|
54
|
+
if (fromIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${fromVersion}`);
|
|
55
|
+
if (toIndex === -1) throw new Error(`Unsupported Hot Updater schema version: ${toVersion}`);
|
|
56
|
+
if (fromIndex > toIndex) throw new Error(`Cannot migrate Hot Updater schema down to ${toVersion}.`);
|
|
57
|
+
const statements = [];
|
|
58
|
+
for (let index = fromIndex + 1; index <= toIndex; index += 1) {
|
|
59
|
+
const previous = hotUpdaterSchemaVersions[index - 1];
|
|
60
|
+
const next = hotUpdaterSchemaVersions[index];
|
|
61
|
+
const previousTables = new Map(previous.tables.map((table) => [table.ormName, table]));
|
|
62
|
+
for (const table of next.tables) {
|
|
63
|
+
if (table.internal) continue;
|
|
64
|
+
const previousTable = previousTables.get(table.ormName);
|
|
65
|
+
statements.push(...previousTable ? createChangedTableSql(previousTable, table, provider, relationMode) : createAddedTableSql(table, provider, relationMode));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return statements;
|
|
69
|
+
};
|
|
70
|
+
const createV029AlterSql = (provider) => createSchemaMigrationSql("0.21.0", "0.29.0", provider);
|
|
71
|
+
const createV031AlterSql = (provider, relationMode = "foreign-keys") => createSchemaMigrationSql("0.29.0", "0.31.0", provider, relationMode);
|
|
72
|
+
//#endregion
|
|
73
|
+
export { createV029AlterSql, createV031AlterSql };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_types = require("../../schema/types.cjs");
|
|
2
|
+
const require_registry = require("./registry.cjs");
|
|
3
|
+
const require_sql = require("./sql.cjs");
|
|
4
|
+
//#region src/db/schema/sqlOperations.ts
|
|
5
|
+
const getSettingsInsertSql = (provider) => {
|
|
6
|
+
if (provider === "mysql") return `insert into ${require_types.HOT_UPDATER_SETTINGS_TABLE} (\`key\`, value) values ('version', '${require_types.HOT_UPDATER_SCHEMA_VERSION}') on duplicate key update value = '${require_types.HOT_UPDATER_SCHEMA_VERSION}'`;
|
|
7
|
+
return `insert into ${require_types.HOT_UPDATER_SETTINGS_TABLE} (key, value) values ('version', '${require_types.HOT_UPDATER_SCHEMA_VERSION}') on conflict (key) do update set value = '${require_types.HOT_UPDATER_SCHEMA_VERSION}'`;
|
|
8
|
+
};
|
|
9
|
+
const createSqlCreateOperations = (provider, relationMode, settingsOperation) => [
|
|
10
|
+
...require_sql.hotUpdaterCreateTableOperations,
|
|
11
|
+
...require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, provider)).map((index) => ({
|
|
12
|
+
type: "custom",
|
|
13
|
+
sql: require_sql.createIndexSql(table, index, provider)
|
|
14
|
+
}))),
|
|
15
|
+
...provider === "sqlite" ? [] : require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => ({
|
|
16
|
+
type: "custom",
|
|
17
|
+
sql: require_sql.createCheckSql(table, check)
|
|
18
|
+
}))),
|
|
19
|
+
...relationMode === "foreign-keys" && provider !== "sqlite" ? require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => ({
|
|
20
|
+
type: "custom",
|
|
21
|
+
sql: require_sql.createForeignKeySql(table, foreignKey)
|
|
22
|
+
}))) : [],
|
|
23
|
+
...settingsOperation ? [settingsOperation] : []
|
|
24
|
+
];
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.createSqlCreateOperations = createSqlCreateOperations;
|
|
27
|
+
exports.getSettingsInsertSql = getSettingsInsertSql;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HOT_UPDATER_SCHEMA_VERSION, HOT_UPDATER_SETTINGS_TABLE } from "../../schema/types.mjs";
|
|
2
|
+
import { hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry.mjs";
|
|
3
|
+
import { createCheckSql, createForeignKeySql, createIndexSql, hotUpdaterCreateTableOperations } from "./sql.mjs";
|
|
4
|
+
//#region src/db/schema/sqlOperations.ts
|
|
5
|
+
const getSettingsInsertSql = (provider) => {
|
|
6
|
+
if (provider === "mysql") return `insert into ${HOT_UPDATER_SETTINGS_TABLE} (\`key\`, value) values ('version', '${HOT_UPDATER_SCHEMA_VERSION}') on duplicate key update value = '${HOT_UPDATER_SCHEMA_VERSION}'`;
|
|
7
|
+
return `insert into ${HOT_UPDATER_SETTINGS_TABLE} (key, value) values ('version', '${HOT_UPDATER_SCHEMA_VERSION}') on conflict (key) do update set value = '${HOT_UPDATER_SCHEMA_VERSION}'`;
|
|
8
|
+
};
|
|
9
|
+
const createSqlCreateOperations = (provider, relationMode, settingsOperation) => [
|
|
10
|
+
...hotUpdaterCreateTableOperations,
|
|
11
|
+
...hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, provider)).map((index) => ({
|
|
12
|
+
type: "custom",
|
|
13
|
+
sql: createIndexSql(table, index, provider)
|
|
14
|
+
}))),
|
|
15
|
+
...provider === "sqlite" ? [] : hotUpdaterSchema.tables.flatMap((table) => (table.checks ?? []).map((check) => ({
|
|
16
|
+
type: "custom",
|
|
17
|
+
sql: createCheckSql(table, check)
|
|
18
|
+
}))),
|
|
19
|
+
...relationMode === "foreign-keys" && provider !== "sqlite" ? hotUpdaterSchema.tables.flatMap((table) => (table.foreignKeys ?? []).map((foreignKey) => ({
|
|
20
|
+
type: "custom",
|
|
21
|
+
sql: createForeignKeySql(table, foreignKey)
|
|
22
|
+
}))) : [],
|
|
23
|
+
...settingsOperation ? [settingsOperation] : []
|
|
24
|
+
];
|
|
25
|
+
//#endregion
|
|
26
|
+
export { createSqlCreateOperations, getSettingsInsertSql };
|
|
@@ -1,105 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
require("../_virtual/_rolldown/runtime.cjs");
|
|
2
2
|
let _hot_updater_core = require("@hot-updater/core");
|
|
3
|
-
let semver = require("semver");
|
|
4
|
-
semver = require_runtime.__toESM(semver);
|
|
5
3
|
//#region src/db/schemaEnhancements.ts
|
|
6
4
|
const normalizeNullableString = (value) => {
|
|
7
5
|
if (value === null || value === void 0) return null;
|
|
8
6
|
const normalized = value.trim();
|
|
9
7
|
return normalized.length > 0 ? normalized : null;
|
|
10
8
|
};
|
|
11
|
-
const appendPrismaModelLines = (code, modelName, lines, options) => {
|
|
12
|
-
const pattern = new RegExp(`model ${modelName} \\{\\n([\\s\\S]*?)\\n\\}`, "m");
|
|
13
|
-
return code.replace(pattern, (full, body) => {
|
|
14
|
-
const bodyLines = body.split("\n");
|
|
15
|
-
const existingLines = new Set(bodyLines.map((line) => line.trim()).filter(Boolean));
|
|
16
|
-
const additions = lines.filter((line) => !existingLines.has(line)).map((line) => ` ${line}`);
|
|
17
|
-
if (additions.length === 0) return full;
|
|
18
|
-
if (options?.position === "beforeAttributes") {
|
|
19
|
-
const insertIndex = bodyLines.findIndex((line) => line.trim().startsWith("@@"));
|
|
20
|
-
if (insertIndex === -1) bodyLines.push(...additions);
|
|
21
|
-
else bodyLines.splice(insertIndex, 0, ...additions);
|
|
22
|
-
return `model ${modelName} {\n${bodyLines.join("\n")}\n}`;
|
|
23
|
-
}
|
|
24
|
-
return `model ${modelName} {\n${body}\n${additions.join("\n")}\n}`;
|
|
25
|
-
});
|
|
26
|
-
};
|
|
27
|
-
const getPrismaDatasourceProvider = (code) => {
|
|
28
|
-
return code.match(/datasource\s+\w+\s+\{[\s\S]*?provider\s*=\s*"([^"]+)"[\s\S]*?\}/m)?.[1] ?? null;
|
|
29
|
-
};
|
|
30
|
-
const ensureDrizzleIndexImport = (code) => code.replace(/import \{ ([^}]+) \} from "(drizzle-orm\/[^"]+-core)"/, (_full, imports, modulePath) => {
|
|
31
|
-
const values = imports.split(",").map((value) => value.trim()).filter(Boolean);
|
|
32
|
-
if (!values.includes("index")) values.push("index");
|
|
33
|
-
return `import { ${values.join(", ")} } from "${modulePath}"`;
|
|
34
|
-
});
|
|
35
|
-
const ensureDrizzleMetadataDefault = (code) => code.replace(/metadata: json\("metadata"\)\.notNull\(\)(?!\.default\(\{\}\))/, "metadata: json(\"metadata\").notNull().default({})").replace(/metadata: blob\("metadata", \{ mode: "json" \}\)\.notNull\(\)(?!\.default\(\{\}\))/, "metadata: blob(\"metadata\", { mode: \"json\" }).notNull().default({})");
|
|
36
|
-
const removeUnusedDrizzleRelationMany = (code) => code.replace(/export const bundle_patchesRelations = relations\(bundle_patches, \(\{ one, many \}\) => \(\{/, "export const bundle_patchesRelations = relations(bundle_patches, ({ one }) => ({");
|
|
37
|
-
const ensureTrailingComma = (line) => {
|
|
38
|
-
const trimmed = line.trim();
|
|
39
|
-
if (!trimmed || trimmed.endsWith(",") || trimmed.endsWith("[")) return line;
|
|
40
|
-
return `${line},`;
|
|
41
|
-
};
|
|
42
|
-
const updateDrizzleTableBlock = (code, tableName, callbackLines) => {
|
|
43
|
-
const blockStart = code.indexOf(`export const ${tableName} = `);
|
|
44
|
-
if (blockStart === -1) return code;
|
|
45
|
-
const nextBlockStart = code.indexOf("\n\nexport const ", blockStart + 1);
|
|
46
|
-
const blockEnd = nextBlockStart === -1 ? code.length : nextBlockStart;
|
|
47
|
-
const block = code.slice(blockStart, blockEnd);
|
|
48
|
-
if (block.includes(", (table) => [")) {
|
|
49
|
-
const callbackPattern = /, \(table\) => \[\n([\s\S]*?)\n\]\)\s*$/;
|
|
50
|
-
const match = block.match(callbackPattern);
|
|
51
|
-
if (!match) return code;
|
|
52
|
-
const callbackBody = match[1] ?? "";
|
|
53
|
-
const existingLines = callbackBody.split("\n").map((line) => line.trim()).filter(Boolean);
|
|
54
|
-
const additions = callbackLines.filter((line) => !existingLines.includes(line));
|
|
55
|
-
if (additions.length === 0) return code;
|
|
56
|
-
const callbackBodyLines = callbackBody.split("\n");
|
|
57
|
-
for (let index = callbackBodyLines.length - 1; index >= 0; index -= 1) if (callbackBodyLines[index]?.trim()) {
|
|
58
|
-
callbackBodyLines[index] = ensureTrailingComma(callbackBodyLines[index]);
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
const nextCallbackBody = [...callbackBodyLines, ...additions.map((line) => ` ${line}`)].join("\n");
|
|
62
|
-
const nextBlock = block.replace(callbackPattern, `, (table) => [\n${nextCallbackBody}\n])`);
|
|
63
|
-
return `${code.slice(0, blockStart)}${nextBlock}${code.slice(blockEnd)}`;
|
|
64
|
-
}
|
|
65
|
-
const callbackBody = callbackLines.map((line) => ` ${line}`).join("\n");
|
|
66
|
-
const nextBlock = block.replace(/\n\}\)\s*$/, `\n}, (table) => [\n${callbackBody}\n])`);
|
|
67
|
-
return `${code.slice(0, blockStart)}${nextBlock}${code.slice(blockEnd)}`;
|
|
68
|
-
};
|
|
69
|
-
const addCustomSqlOperation = (result, sql) => {
|
|
70
|
-
const normalizedSql = sql.trim();
|
|
71
|
-
if (!result.operations.some((operation) => {
|
|
72
|
-
return operation["type"] === "custom" && typeof operation["sql"] === "string" && operation["sql"].trim() === normalizedSql;
|
|
73
|
-
})) result.operations.push({
|
|
74
|
-
type: "custom",
|
|
75
|
-
sql: normalizedSql
|
|
76
|
-
});
|
|
77
|
-
};
|
|
78
|
-
const getMigrationCustomSql = (provider, targetVersion) => {
|
|
79
|
-
const statements = [];
|
|
80
|
-
const hasRolloutColumns = semver.default.gte(targetVersion, "0.29.0");
|
|
81
|
-
const hasPatchTable = semver.default.gte(targetVersion, "0.31.0");
|
|
82
|
-
if (provider === "postgresql") {
|
|
83
|
-
statements.push("create index bundles_target_app_version_idx on bundles(target_app_version)", "create index bundles_fingerprint_hash_idx on bundles(fingerprint_hash)", "create index bundles_channel_idx on bundles(channel)", "alter table bundles add constraint check_version_or_fingerprint check ((target_app_version is not null) or (fingerprint_hash is not null))");
|
|
84
|
-
if (hasRolloutColumns) statements.push("create index bundles_rollout_idx on bundles(rollout_cohort_count)", "alter table bundles add constraint bundles_rollout_cohort_count_check check (rollout_cohort_count >= 0 and rollout_cohort_count <= 1000)");
|
|
85
|
-
if (hasPatchTable) statements.push("create index bundle_patches_bundle_id_idx on bundle_patches(bundle_id)", "create index bundle_patches_base_bundle_id_idx on bundle_patches(base_bundle_id)");
|
|
86
|
-
return statements;
|
|
87
|
-
}
|
|
88
|
-
if (provider === "mysql") {
|
|
89
|
-
statements.push("create index bundles_target_app_version_idx on bundles(target_app_version(255))", "create index bundles_fingerprint_hash_idx on bundles(fingerprint_hash(255))", "create index bundles_channel_idx on bundles(channel(255))", "alter table bundles add constraint check_version_or_fingerprint check ((target_app_version is not null) or (fingerprint_hash is not null))");
|
|
90
|
-
if (hasRolloutColumns) statements.push("create index bundles_rollout_idx on bundles(rollout_cohort_count)", "alter table bundles add constraint bundles_rollout_cohort_count_check check (rollout_cohort_count >= 0 and rollout_cohort_count <= 1000)");
|
|
91
|
-
if (hasPatchTable) statements.push("create index bundle_patches_bundle_id_idx on bundle_patches(bundle_id)", "create index bundle_patches_base_bundle_id_idx on bundle_patches(base_bundle_id)");
|
|
92
|
-
return statements;
|
|
93
|
-
}
|
|
94
|
-
statements.push("create index bundles_target_app_version_idx on bundles(target_app_version)", "create index bundles_fingerprint_hash_idx on bundles(fingerprint_hash)", "create index bundles_channel_idx on bundles(channel)");
|
|
95
|
-
if (hasRolloutColumns) statements.push("create index bundles_rollout_idx on bundles(rollout_cohort_count)");
|
|
96
|
-
if (hasPatchTable) statements.push("create index bundle_patches_bundle_id_idx on bundle_patches(bundle_id)", "create index bundle_patches_base_bundle_id_idx on bundle_patches(base_bundle_id)");
|
|
97
|
-
return statements;
|
|
98
|
-
};
|
|
99
|
-
const enhanceUpwardMigrationResult = (result, provider, targetVersion) => {
|
|
100
|
-
for (const sql of getMigrationCustomSql(provider, targetVersion)) addCustomSqlOperation(result, sql);
|
|
101
|
-
return result;
|
|
102
|
-
};
|
|
103
9
|
const assertBundlePersistenceConstraints = (bundle) => {
|
|
104
10
|
const targetAppVersion = normalizeNullableString(bundle.targetAppVersion);
|
|
105
11
|
const fingerprintHash = normalizeNullableString(bundle.fingerprintHash);
|
|
@@ -110,62 +16,5 @@ const assertBundlePersistenceConstraints = (bundle) => {
|
|
|
110
16
|
}
|
|
111
17
|
for (const cohort of bundle.targetCohorts ?? []) if (!(0, _hot_updater_core.isValidCohort)(cohort)) throw new Error(`Invalid target cohort "${cohort}". ${_hot_updater_core.INVALID_COHORT_ERROR_MESSAGE}`);
|
|
112
18
|
};
|
|
113
|
-
const enhanceGeneratedSchema = (adapterName, code, provider) => {
|
|
114
|
-
if (adapterName === "prisma") {
|
|
115
|
-
const datasourceProvider = provider ?? getPrismaDatasourceProvider(code);
|
|
116
|
-
let nextCode = code;
|
|
117
|
-
if (datasourceProvider !== "sqlite") nextCode = nextCode.replace(/^(\s*metadata\s+Json)(?!\s+@default\("?\{\}"?\))(.*)$/m, "$1 @default(\"{}\")$2");
|
|
118
|
-
nextCode = appendPrismaModelLines(nextCode, "bundles", ["patches bundle_patches[] @relation(\"bundle_patches_bundles_patches\")", "baseForPatches bundle_patches[] @relation(\"bundle_patches_bundles_baseForPatches\")"], { position: "beforeAttributes" });
|
|
119
|
-
nextCode = appendPrismaModelLines(nextCode, "bundles", [
|
|
120
|
-
"@@index([target_app_version], map: \"bundles_target_app_version_idx\")",
|
|
121
|
-
"@@index([fingerprint_hash], map: \"bundles_fingerprint_hash_idx\")",
|
|
122
|
-
"@@index([channel], map: \"bundles_channel_idx\")",
|
|
123
|
-
"@@index([rollout_cohort_count], map: \"bundles_rollout_idx\")"
|
|
124
|
-
]);
|
|
125
|
-
return appendPrismaModelLines(nextCode, "bundle_patches", ["@@index([bundle_id], map: \"bundle_patches_bundle_id_idx\")", "@@index([base_bundle_id], map: \"bundle_patches_base_bundle_id_idx\")"]);
|
|
126
|
-
}
|
|
127
|
-
if (adapterName === "drizzle") {
|
|
128
|
-
let nextCode = ensureDrizzleMetadataDefault(code);
|
|
129
|
-
nextCode = removeUnusedDrizzleRelationMany(nextCode);
|
|
130
|
-
nextCode = ensureDrizzleIndexImport(nextCode);
|
|
131
|
-
nextCode = updateDrizzleTableBlock(nextCode, "bundles", [
|
|
132
|
-
"index(\"bundles_target_app_version_idx\").on(table.target_app_version),",
|
|
133
|
-
"index(\"bundles_fingerprint_hash_idx\").on(table.fingerprint_hash),",
|
|
134
|
-
"index(\"bundles_channel_idx\").on(table.channel),",
|
|
135
|
-
"index(\"bundles_rollout_idx\").on(table.rollout_cohort_count),"
|
|
136
|
-
]);
|
|
137
|
-
nextCode = updateDrizzleTableBlock(nextCode, "bundle_patches", ["index(\"bundle_patches_bundle_id_idx\").on(table.bundle_id),", "index(\"bundle_patches_base_bundle_id_idx\").on(table.base_bundle_id),"]);
|
|
138
|
-
return nextCode;
|
|
139
|
-
}
|
|
140
|
-
return code;
|
|
141
|
-
};
|
|
142
|
-
const wrapKyselyMigrator = (migrator, provider, latestVersion) => {
|
|
143
|
-
if (!provider) return migrator;
|
|
144
|
-
return {
|
|
145
|
-
...migrator,
|
|
146
|
-
async up(...args) {
|
|
147
|
-
const next = await migrator.next();
|
|
148
|
-
const result = await migrator.up(...args);
|
|
149
|
-
if (next) enhanceUpwardMigrationResult(result, provider, next.version);
|
|
150
|
-
return result;
|
|
151
|
-
},
|
|
152
|
-
async migrateTo(...args) {
|
|
153
|
-
const version = args[0];
|
|
154
|
-
const options = args[1];
|
|
155
|
-
const currentVersion = await migrator.getVersion();
|
|
156
|
-
const result = await migrator.migrateTo(version, options);
|
|
157
|
-
if (!currentVersion || semver.default.gt(version, currentVersion)) enhanceUpwardMigrationResult(result, provider, version);
|
|
158
|
-
return result;
|
|
159
|
-
},
|
|
160
|
-
async migrateToLatest(...args) {
|
|
161
|
-
const currentVersion = await migrator.getVersion();
|
|
162
|
-
const result = await migrator.migrateToLatest(...args);
|
|
163
|
-
if (!currentVersion || semver.default.gt(latestVersion, currentVersion)) enhanceUpwardMigrationResult(result, provider, latestVersion);
|
|
164
|
-
return result;
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
};
|
|
168
19
|
//#endregion
|
|
169
20
|
exports.assertBundlePersistenceConstraints = assertBundlePersistenceConstraints;
|
|
170
|
-
exports.enhanceGeneratedSchema = enhanceGeneratedSchema;
|
|
171
|
-
exports.wrapKyselyMigrator = wrapKyselyMigrator;
|