@hot-updater/server 0.33.2 → 0.34.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/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/fixedMigrator.cjs +136 -0
- package/dist/db/fixedMigrator.mjs +135 -0
- package/dist/db/index.cjs +17 -15
- package/dist/db/index.d.cts +3 -3
- package/dist/db/index.d.mts +3 -3
- package/dist/db/index.mjs +17 -15
- 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 -2
- package/dist/index.d.cts +3 -2
- package/dist/index.d.mts +3 -2
- package/dist/index.mjs +2 -2
- package/dist/{packages/server/package.cjs → package.cjs} +1 -1
- package/dist/{packages/server/package.mjs → package.mjs} +1 -1
- package/dist/runtime.cjs +9 -2
- package/dist/runtime.mjs +9 -2
- 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/version.cjs +1 -1
- package/dist/version.mjs +1 -1
- package/package.json +30 -16
- package/src/adapters/drizzle.spec.ts +75 -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/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 +976 -13
- package/src/db/index.ts +37 -36
- 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/runtime.spec.ts +70 -0
- package/src/runtime.ts +14 -2
- 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/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/src/db/ormCore.ts +0 -1059
- package/src/db/ormUpdateCheck.bench.ts +0 -262
package/dist/db/pluginCore.cjs
CHANGED
|
@@ -50,12 +50,13 @@ const INIT_BUNDLE_ROLLBACK_UPDATE_INFO = {
|
|
|
50
50
|
fileHash: null
|
|
51
51
|
};
|
|
52
52
|
function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
53
|
+
const coreOptions = options;
|
|
53
54
|
const runWithMutationPlugin = async (operation) => {
|
|
54
|
-
const plugin =
|
|
55
|
+
const plugin = coreOptions?.createMutationPlugin?.() ?? getPlugin();
|
|
55
56
|
try {
|
|
56
57
|
return await operation(plugin);
|
|
57
58
|
} finally {
|
|
58
|
-
if (
|
|
59
|
+
if (coreOptions?.createMutationPlugin) await coreOptions.cleanupMutationPlugin?.(plugin);
|
|
59
60
|
}
|
|
60
61
|
};
|
|
61
62
|
const getSortedBundlePage = async (options, context) => {
|
|
@@ -114,9 +115,11 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
114
115
|
return {
|
|
115
116
|
api: {
|
|
116
117
|
async getBundleById(id, context) {
|
|
118
|
+
await coreOptions?.beforeOperation?.();
|
|
117
119
|
return getPlugin().getBundleById(id, context);
|
|
118
120
|
},
|
|
119
121
|
async getUpdateInfo(args, context) {
|
|
122
|
+
await coreOptions?.beforeOperation?.();
|
|
120
123
|
const directGetUpdateInfo = getPlugin().getUpdateInfo;
|
|
121
124
|
if (directGetUpdateInfo) return context === void 0 ? await directGetUpdateInfo(args) : await directGetUpdateInfo(args, context);
|
|
122
125
|
const channel = args.channel ?? "production";
|
|
@@ -150,7 +153,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
150
153
|
const info = await this.getUpdateInfo(args, context);
|
|
151
154
|
if (!info) return null;
|
|
152
155
|
const { storageUri, ...rest } = info;
|
|
153
|
-
const readStorageText =
|
|
156
|
+
const readStorageText = coreOptions?.readStorageText;
|
|
154
157
|
if (info.id === _hot_updater_core.NIL_UUID || !readStorageText) {
|
|
155
158
|
const fileUrl = await resolveFileUrl(storageUri ?? null, context);
|
|
156
159
|
return {
|
|
@@ -188,12 +191,15 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
188
191
|
};
|
|
189
192
|
},
|
|
190
193
|
async getChannels(context) {
|
|
194
|
+
await coreOptions?.beforeOperation?.();
|
|
191
195
|
return getPlugin().getChannels(context);
|
|
192
196
|
},
|
|
193
197
|
async getBundles(options, context) {
|
|
198
|
+
await coreOptions?.beforeOperation?.();
|
|
194
199
|
return getPlugin().getBundles(options, context);
|
|
195
200
|
},
|
|
196
201
|
async insertBundle(bundle, context) {
|
|
202
|
+
await coreOptions?.beforeOperation?.();
|
|
197
203
|
require_schemaEnhancements.assertBundlePersistenceConstraints(bundle);
|
|
198
204
|
await runWithMutationPlugin(async (plugin) => {
|
|
199
205
|
await plugin.appendBundle(bundle, context);
|
|
@@ -201,6 +207,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
201
207
|
});
|
|
202
208
|
},
|
|
203
209
|
async updateBundleById(bundleId, newBundle, context) {
|
|
210
|
+
await coreOptions?.beforeOperation?.();
|
|
204
211
|
await runWithMutationPlugin(async (plugin) => {
|
|
205
212
|
const current = await plugin.getBundleById(bundleId, context);
|
|
206
213
|
if (!current) throw new Error("targetBundleId not found");
|
|
@@ -213,6 +220,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
213
220
|
});
|
|
214
221
|
},
|
|
215
222
|
async deleteBundleById(bundleId, context) {
|
|
223
|
+
await coreOptions?.beforeOperation?.();
|
|
216
224
|
await runWithMutationPlugin(async (plugin) => {
|
|
217
225
|
const bundle = await plugin.getBundleById(bundleId, context);
|
|
218
226
|
if (!bundle) return;
|
|
@@ -223,10 +231,10 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
223
231
|
},
|
|
224
232
|
adapterName: getPlugin().name,
|
|
225
233
|
createMigrator: () => {
|
|
226
|
-
throw new Error("createMigrator is only available for Kysely/
|
|
234
|
+
throw new Error("createMigrator is only available for Kysely/MongoDB database adapters.");
|
|
227
235
|
},
|
|
228
236
|
generateSchema: () => {
|
|
229
|
-
throw new Error("generateSchema is only available for
|
|
237
|
+
throw new Error("generateSchema is only available for Drizzle/Prisma database adapters.");
|
|
230
238
|
}
|
|
231
239
|
};
|
|
232
240
|
}
|
package/dist/db/pluginCore.mjs
CHANGED
|
@@ -49,12 +49,13 @@ const INIT_BUNDLE_ROLLBACK_UPDATE_INFO = {
|
|
|
49
49
|
fileHash: null
|
|
50
50
|
};
|
|
51
51
|
function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
52
|
+
const coreOptions = options;
|
|
52
53
|
const runWithMutationPlugin = async (operation) => {
|
|
53
|
-
const plugin =
|
|
54
|
+
const plugin = coreOptions?.createMutationPlugin?.() ?? getPlugin();
|
|
54
55
|
try {
|
|
55
56
|
return await operation(plugin);
|
|
56
57
|
} finally {
|
|
57
|
-
if (
|
|
58
|
+
if (coreOptions?.createMutationPlugin) await coreOptions.cleanupMutationPlugin?.(plugin);
|
|
58
59
|
}
|
|
59
60
|
};
|
|
60
61
|
const getSortedBundlePage = async (options, context) => {
|
|
@@ -113,9 +114,11 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
113
114
|
return {
|
|
114
115
|
api: {
|
|
115
116
|
async getBundleById(id, context) {
|
|
117
|
+
await coreOptions?.beforeOperation?.();
|
|
116
118
|
return getPlugin().getBundleById(id, context);
|
|
117
119
|
},
|
|
118
120
|
async getUpdateInfo(args, context) {
|
|
121
|
+
await coreOptions?.beforeOperation?.();
|
|
119
122
|
const directGetUpdateInfo = getPlugin().getUpdateInfo;
|
|
120
123
|
if (directGetUpdateInfo) return context === void 0 ? await directGetUpdateInfo(args) : await directGetUpdateInfo(args, context);
|
|
121
124
|
const channel = args.channel ?? "production";
|
|
@@ -149,7 +152,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
149
152
|
const info = await this.getUpdateInfo(args, context);
|
|
150
153
|
if (!info) return null;
|
|
151
154
|
const { storageUri, ...rest } = info;
|
|
152
|
-
const readStorageText =
|
|
155
|
+
const readStorageText = coreOptions?.readStorageText;
|
|
153
156
|
if (info.id === NIL_UUID || !readStorageText) {
|
|
154
157
|
const fileUrl = await resolveFileUrl(storageUri ?? null, context);
|
|
155
158
|
return {
|
|
@@ -187,12 +190,15 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
187
190
|
};
|
|
188
191
|
},
|
|
189
192
|
async getChannels(context) {
|
|
193
|
+
await coreOptions?.beforeOperation?.();
|
|
190
194
|
return getPlugin().getChannels(context);
|
|
191
195
|
},
|
|
192
196
|
async getBundles(options, context) {
|
|
197
|
+
await coreOptions?.beforeOperation?.();
|
|
193
198
|
return getPlugin().getBundles(options, context);
|
|
194
199
|
},
|
|
195
200
|
async insertBundle(bundle, context) {
|
|
201
|
+
await coreOptions?.beforeOperation?.();
|
|
196
202
|
assertBundlePersistenceConstraints(bundle);
|
|
197
203
|
await runWithMutationPlugin(async (plugin) => {
|
|
198
204
|
await plugin.appendBundle(bundle, context);
|
|
@@ -200,6 +206,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
200
206
|
});
|
|
201
207
|
},
|
|
202
208
|
async updateBundleById(bundleId, newBundle, context) {
|
|
209
|
+
await coreOptions?.beforeOperation?.();
|
|
203
210
|
await runWithMutationPlugin(async (plugin) => {
|
|
204
211
|
const current = await plugin.getBundleById(bundleId, context);
|
|
205
212
|
if (!current) throw new Error("targetBundleId not found");
|
|
@@ -212,6 +219,7 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
212
219
|
});
|
|
213
220
|
},
|
|
214
221
|
async deleteBundleById(bundleId, context) {
|
|
222
|
+
await coreOptions?.beforeOperation?.();
|
|
215
223
|
await runWithMutationPlugin(async (plugin) => {
|
|
216
224
|
const bundle = await plugin.getBundleById(bundleId, context);
|
|
217
225
|
if (!bundle) return;
|
|
@@ -222,10 +230,10 @@ function createPluginDatabaseCore(getPlugin, resolveFileUrl, options) {
|
|
|
222
230
|
},
|
|
223
231
|
adapterName: getPlugin().name,
|
|
224
232
|
createMigrator: () => {
|
|
225
|
-
throw new Error("createMigrator is only available for Kysely/
|
|
233
|
+
throw new Error("createMigrator is only available for Kysely/MongoDB database adapters.");
|
|
226
234
|
},
|
|
227
235
|
generateSchema: () => {
|
|
228
|
-
throw new Error("generateSchema is only available for
|
|
236
|
+
throw new Error("generateSchema is only available for Drizzle/Prisma database adapters.");
|
|
229
237
|
}
|
|
230
238
|
};
|
|
231
239
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const require_registry = require("./registry.cjs");
|
|
2
|
+
const require_sql = require("./sql.cjs");
|
|
3
|
+
//#region src/db/schema/mongodb.ts
|
|
4
|
+
const createMongoMigrationOperations = (settingsOperation) => [
|
|
5
|
+
...require_sql.hotUpdaterCreateTableOperations,
|
|
6
|
+
{
|
|
7
|
+
type: "custom",
|
|
8
|
+
sql: "create index bundles_id_idx on bundles(id)"
|
|
9
|
+
},
|
|
10
|
+
...require_registry.hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => require_registry.schemaIndexAppliesToProvider(index, "mongodb")).map((index) => ({
|
|
11
|
+
type: "custom",
|
|
12
|
+
sql: `create index ${index.name} on ${table.ormName}(${index.columns.join(", ")})`
|
|
13
|
+
}))),
|
|
14
|
+
...settingsOperation ? [settingsOperation] : []
|
|
15
|
+
];
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.createMongoMigrationOperations = createMongoMigrationOperations;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { hotUpdaterSchema, schemaIndexAppliesToProvider } from "./registry.mjs";
|
|
2
|
+
import { hotUpdaterCreateTableOperations } from "./sql.mjs";
|
|
3
|
+
//#region src/db/schema/mongodb.ts
|
|
4
|
+
const createMongoMigrationOperations = (settingsOperation) => [
|
|
5
|
+
...hotUpdaterCreateTableOperations,
|
|
6
|
+
{
|
|
7
|
+
type: "custom",
|
|
8
|
+
sql: "create index bundles_id_idx on bundles(id)"
|
|
9
|
+
},
|
|
10
|
+
...hotUpdaterSchema.tables.flatMap((table) => (table.indexes ?? []).filter((index) => schemaIndexAppliesToProvider(index, "mongodb")).map((index) => ({
|
|
11
|
+
type: "custom",
|
|
12
|
+
sql: `create index ${index.name} on ${table.ormName}(${index.columns.join(", ")})`
|
|
13
|
+
}))),
|
|
14
|
+
...settingsOperation ? [settingsOperation] : []
|
|
15
|
+
];
|
|
16
|
+
//#endregion
|
|
17
|
+
export { createMongoMigrationOperations };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const require_index = require("../../schema/index.cjs");
|
|
2
|
+
//#region src/db/schema/registry.ts
|
|
3
|
+
const hotUpdaterSchema = require_index.hotUpdaterSchemaVersions[require_index.hotUpdaterSchemaVersions.length - 1];
|
|
4
|
+
const getSchemaVersionIndex = (version) => require_index.hotUpdaterSchemaVersions.findIndex((schema) => schema.version === version);
|
|
5
|
+
const getHotUpdaterSchemaVersion = (version) => {
|
|
6
|
+
const schema = require_index.hotUpdaterSchemaVersions.find((item) => item.version === version);
|
|
7
|
+
if (!schema) throw new Error(`Unsupported Hot Updater schema version: ${version}`);
|
|
8
|
+
return schema;
|
|
9
|
+
};
|
|
10
|
+
const getSchemaColumn = (table, name) => {
|
|
11
|
+
const column = table.columns.find((item) => item.ormName === name);
|
|
12
|
+
if (!column) throw new Error(`Unknown Hot Updater schema column: ${table.ormName}.${name}`);
|
|
13
|
+
return column;
|
|
14
|
+
};
|
|
15
|
+
const hotUpdaterDataTables = hotUpdaterSchema.tables.filter((table) => !table.internal);
|
|
16
|
+
const schemaIndexAppliesToProvider = (index, provider) => !index.providers || index.providers.includes(provider);
|
|
17
|
+
//#endregion
|
|
18
|
+
exports.getHotUpdaterSchemaVersion = getHotUpdaterSchemaVersion;
|
|
19
|
+
exports.getSchemaColumn = getSchemaColumn;
|
|
20
|
+
exports.getSchemaVersionIndex = getSchemaVersionIndex;
|
|
21
|
+
exports.hotUpdaterDataTables = hotUpdaterDataTables;
|
|
22
|
+
exports.hotUpdaterSchema = hotUpdaterSchema;
|
|
23
|
+
exports.schemaIndexAppliesToProvider = schemaIndexAppliesToProvider;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { hotUpdaterSchemaVersions } from "../../schema/index.mjs";
|
|
2
|
+
//#region src/db/schema/registry.ts
|
|
3
|
+
const hotUpdaterSchema = hotUpdaterSchemaVersions[hotUpdaterSchemaVersions.length - 1];
|
|
4
|
+
const getSchemaVersionIndex = (version) => hotUpdaterSchemaVersions.findIndex((schema) => schema.version === version);
|
|
5
|
+
const getHotUpdaterSchemaVersion = (version) => {
|
|
6
|
+
const schema = hotUpdaterSchemaVersions.find((item) => item.version === version);
|
|
7
|
+
if (!schema) throw new Error(`Unsupported Hot Updater schema version: ${version}`);
|
|
8
|
+
return schema;
|
|
9
|
+
};
|
|
10
|
+
const getSchemaColumn = (table, name) => {
|
|
11
|
+
const column = table.columns.find((item) => item.ormName === name);
|
|
12
|
+
if (!column) throw new Error(`Unknown Hot Updater schema column: ${table.ormName}.${name}`);
|
|
13
|
+
return column;
|
|
14
|
+
};
|
|
15
|
+
const hotUpdaterDataTables = hotUpdaterSchema.tables.filter((table) => !table.internal);
|
|
16
|
+
const schemaIndexAppliesToProvider = (index, provider) => !index.providers || index.providers.includes(provider);
|
|
17
|
+
//#endregion
|
|
18
|
+
export { getHotUpdaterSchemaVersion, getSchemaColumn, getSchemaVersionIndex, hotUpdaterDataTables, hotUpdaterSchema, schemaIndexAppliesToProvider };
|
|
@@ -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 };
|