@hot-updater/server 1.0.0-rc.2 → 1.0.0-rc.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +12 -14
- package/dist/adapters/drizzle.cjs +32 -75
- package/dist/adapters/drizzle.d.cts +13 -5
- package/dist/adapters/drizzle.d.mts +13 -5
- package/dist/adapters/drizzle.mjs +32 -77
- package/dist/adapters/drizzleExecutor.cjs +114 -0
- package/dist/adapters/drizzleExecutor.d.cts +9 -0
- package/dist/adapters/drizzleExecutor.d.mts +9 -0
- package/dist/adapters/drizzleExecutor.mjs +112 -0
- package/dist/adapters/kysely.cjs +22 -31
- package/dist/adapters/kysely.d.cts +10 -6
- package/dist/adapters/kysely.d.mts +10 -6
- package/dist/adapters/kysely.mjs +23 -33
- package/dist/adapters/kyselyExecutor.cjs +32 -0
- package/dist/adapters/kyselyExecutor.d.cts +11 -0
- package/dist/adapters/kyselyExecutor.d.mts +11 -0
- package/dist/adapters/kyselyExecutor.mjs +32 -0
- package/dist/adapters/mongodb.cjs +18 -54
- package/dist/adapters/mongodb.d.cts +10 -5
- package/dist/adapters/mongodb.d.mts +10 -5
- package/dist/adapters/mongodb.mjs +19 -56
- package/dist/adapters/mongodbAdapter.cjs +192 -0
- package/dist/adapters/mongodbAdapter.d.cts +9 -0
- package/dist/adapters/mongodbAdapter.d.mts +9 -0
- package/dist/adapters/mongodbAdapter.mjs +191 -0
- package/dist/adapters/prisma.cjs +35 -267
- package/dist/adapters/prisma.d.cts +12 -7
- package/dist/adapters/prisma.d.mts +12 -7
- package/dist/adapters/prisma.mjs +36 -268
- package/dist/adapters/prismaExecutor.cjs +63 -0
- package/dist/adapters/prismaExecutor.mjs +63 -0
- package/dist/adapters/sqlProviders.cjs +14 -0
- package/dist/adapters/sqlProviders.mjs +14 -0
- package/dist/assembly/assemblePlugins.cjs +144 -0
- package/dist/assembly/assemblePlugins.d.cts +5 -0
- package/dist/assembly/assemblePlugins.d.mts +5 -0
- package/dist/assembly/assemblePlugins.mjs +139 -0
- package/dist/assembly/clientPlugins.cjs +88 -0
- package/dist/assembly/clientPlugins.mjs +88 -0
- package/dist/assembly/configError.d.cts +2 -0
- package/dist/assembly/configError.d.mts +2 -0
- package/dist/assembly/configError.mjs +2 -0
- package/dist/core/api.cjs +51 -0
- package/dist/core/api.d.cts +54 -0
- package/dist/core/api.d.mts +54 -0
- package/dist/core/api.mjs +51 -0
- package/dist/core/baseCandidates.cjs +28 -0
- package/dist/core/baseCandidates.mjs +28 -0
- package/dist/core/operations.cjs +351 -0
- package/dist/core/operations.mjs +351 -0
- package/dist/core/reads.cjs +273 -0
- package/dist/core/reads.d.cts +9 -0
- package/dist/core/reads.d.mts +9 -0
- package/dist/core/reads.mjs +267 -0
- package/dist/core/releases.cjs +193 -0
- package/dist/core/releases.mjs +190 -0
- package/dist/core/writes.cjs +96 -0
- package/dist/core/writes.mjs +91 -0
- package/dist/createHotUpdaterCore.cjs +72 -91
- package/dist/createHotUpdaterCore.d.cts +106 -38
- package/dist/createHotUpdaterCore.d.mts +106 -38
- package/dist/createHotUpdaterCore.mjs +74 -89
- package/dist/db/engineDrizzleSchema.cjs +53 -0
- package/dist/db/engineDrizzleSchema.mjs +53 -0
- package/dist/db/enginePrismaSchema.cjs +84 -0
- package/dist/db/enginePrismaSchema.d.cts +5 -0
- package/dist/db/enginePrismaSchema.d.mts +5 -0
- package/dist/db/enginePrismaSchema.mjs +83 -0
- package/dist/db/releaseCatalog.cjs +24 -47
- package/dist/db/releaseCatalog.mjs +20 -44
- package/dist/db/updateArtifacts.cjs +43 -72
- package/dist/db/updateArtifacts.mjs +40 -69
- package/dist/handler.cjs +59 -43
- package/dist/handler.d.cts +3 -5
- package/dist/handler.d.mts +3 -5
- package/dist/handler.mjs +61 -43
- package/dist/handlerAdminRoutes.cjs +374 -0
- package/dist/handlerAdminRoutes.mjs +372 -0
- package/dist/handlerParameters.cjs +6 -11
- package/dist/handlerParameters.mjs +6 -10
- package/dist/handlerReleaseCatalogRoutes.cjs +32 -15
- package/dist/handlerReleaseCatalogRoutes.mjs +32 -15
- package/dist/handlerTypes.d.cts +2 -55
- package/dist/handlerTypes.d.mts +2 -55
- package/dist/handlerVersionRoutes.cjs +20 -4
- package/dist/handlerVersionRoutes.mjs +20 -4
- package/dist/index.cjs +9 -9
- package/dist/index.d.cts +8 -9
- package/dist/index.d.mts +8 -9
- package/dist/index.mjs +3 -4
- package/dist/node.cjs +3 -6
- package/dist/node.d.cts +2 -2
- package/dist/node.d.mts +2 -2
- package/dist/node.mjs +4 -4
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/dist/plugins/api-keys/index.cjs +9 -0
- package/dist/plugins/api-keys/index.d.cts +1 -0
- package/dist/plugins/api-keys/index.d.mts +1 -0
- package/dist/plugins/api-keys/index.mjs +2 -0
- package/dist/plugins/definePlugin.d.cts +2 -0
- package/dist/plugins/definePlugin.d.mts +2 -0
- package/dist/plugins/insights/index.cjs +9 -0
- package/dist/plugins/insights/index.d.cts +1 -0
- package/dist/plugins/insights/index.d.mts +1 -0
- package/dist/plugins/insights/index.mjs +2 -0
- package/dist/plugins/official.cjs +30 -0
- package/dist/plugins/official.mjs +29 -0
- package/dist/storageAccess.cjs +13 -10
- package/dist/storageAccess.mjs +13 -10
- package/dist/types/index.d.cts +2 -28
- package/dist/types/index.d.mts +2 -28
- package/package.json +26 -14
- package/dist/_virtual/_rolldown/runtime.cjs +0 -23
- package/dist/adapters/databaseConstraintErrors.cjs +0 -22
- package/dist/adapters/databaseConstraintErrors.mjs +0 -21
- package/dist/adapters/databasePluginUtils.cjs +0 -116
- package/dist/adapters/databasePluginUtils.mjs +0 -106
- package/dist/adapters/drizzleCrud.cjs +0 -311
- package/dist/adapters/drizzleCrud.mjs +0 -308
- package/dist/adapters/drizzleLazyDB.cjs +0 -106
- package/dist/adapters/drizzleLazyDB.mjs +0 -106
- package/dist/adapters/drizzleQuery.cjs +0 -69
- package/dist/adapters/drizzleQuery.mjs +0 -69
- package/dist/adapters/insightsTransaction.cjs +0 -22
- package/dist/adapters/insightsTransaction.mjs +0 -22
- package/dist/adapters/kyselyCrud.cjs +0 -305
- package/dist/adapters/kyselyCrud.mjs +0 -304
- package/dist/adapters/kyselyQuery.cjs +0 -56
- package/dist/adapters/kyselyQuery.mjs +0 -56
- package/dist/adapters/mongodbCollections.cjs +0 -38
- package/dist/adapters/mongodbCollections.mjs +0 -32
- package/dist/adapters/mongodbQuery.cjs +0 -94
- package/dist/adapters/mongodbQuery.mjs +0 -86
- package/dist/adapters/mongodbReads.cjs +0 -210
- package/dist/adapters/mongodbReads.mjs +0 -210
- package/dist/adapters/mongodbWrites.cjs +0 -148
- package/dist/adapters/mongodbWrites.mjs +0 -148
- package/dist/adapters/prismaQuery.cjs +0 -57
- package/dist/adapters/prismaQuery.mjs +0 -56
- package/dist/adapters/prismaRows.cjs +0 -219
- package/dist/adapters/prismaRows.mjs +0 -209
- package/dist/apiKeys.cjs +0 -143
- package/dist/apiKeys.d.cts +0 -49
- package/dist/apiKeys.d.mts +0 -49
- package/dist/apiKeys.mjs +0 -133
- package/dist/db/createBundleDiff.cjs +0 -144
- package/dist/db/createBundleDiff.d.cts +0 -16
- package/dist/db/createBundleDiff.d.mts +0 -16
- package/dist/db/createBundleDiff.mjs +0 -141
- package/dist/db/databasePluginCore.cjs +0 -137
- package/dist/db/databasePluginCore.mjs +0 -137
- package/dist/db/fixedMigrator.cjs +0 -79
- package/dist/db/fixedMigrator.mjs +0 -78
- package/dist/db/fixedMigratorMongo.cjs +0 -321
- package/dist/db/fixedMigratorMongo.mjs +0 -321
- package/dist/db/fixedMigratorShared.cjs +0 -23
- package/dist/db/fixedMigratorShared.mjs +0 -18
- package/dist/db/index.cjs +0 -27
- package/dist/db/index.d.cts +0 -12
- package/dist/db/index.d.mts +0 -12
- package/dist/db/index.mjs +0 -22
- package/dist/db/mongoMigrationExecution.cjs +0 -11
- package/dist/db/mongoMigrationExecution.mjs +0 -11
- package/dist/db/releaseCatalog.d.cts +0 -16
- package/dist/db/releaseCatalog.d.mts +0 -16
- package/dist/db/schema/insightsCollation.cjs +0 -14
- package/dist/db/schema/insightsCollation.mjs +0 -14
- package/dist/db/schema/mongodb.cjs +0 -25
- package/dist/db/schema/mongodb.mjs +0 -25
- package/dist/db/schema/registry.cjs +0 -21
- package/dist/db/schema/registry.mjs +0 -17
- package/dist/db/schema/sql.cjs +0 -105
- package/dist/db/schema/sql.mjs +0 -97
- package/dist/db/schema/sqlOperations.cjs +0 -27
- package/dist/db/schema/sqlOperations.mjs +0 -26
- package/dist/db/schemaGenerators.cjs +0 -275
- package/dist/db/schemaGenerators.mjs +0 -273
- package/dist/db/schemaReadiness.cjs +0 -26
- package/dist/db/schemaReadiness.d.cts +0 -9
- package/dist/db/schemaReadiness.d.mts +0 -9
- package/dist/db/schemaReadiness.mjs +0 -25
- package/dist/db/sqlMigrationExecution.cjs +0 -67
- package/dist/db/sqlMigrationExecution.mjs +0 -67
- package/dist/db/types.cjs +0 -22
- package/dist/db/types.d.cts +0 -118
- package/dist/db/types.d.mts +0 -118
- package/dist/db/types.mjs +0 -19
- package/dist/handlerBundleRoutes.cjs +0 -155
- package/dist/handlerBundleRoutes.mjs +0 -155
- package/dist/handlerReleaseManagementRoutes.cjs +0 -124
- package/dist/handlerReleaseManagementRoutes.mjs +0 -124
- package/dist/insights/domain.d.cts +0 -89
- package/dist/insights/domain.d.mts +0 -89
- package/dist/insights/errors.cjs +0 -15
- package/dist/insights/errors.mjs +0 -14
- package/dist/insights/eventInput.cjs +0 -155
- package/dist/insights/eventInput.mjs +0 -153
- package/dist/insights/provider.cjs +0 -314
- package/dist/insights/provider.d.cts +0 -6
- package/dist/insights/provider.d.mts +0 -6
- package/dist/insights/provider.mjs +0 -314
- package/dist/insights/queryInput.cjs +0 -93
- package/dist/insights/queryInput.mjs +0 -91
- package/dist/insights/routes.cjs +0 -58
- package/dist/insights/routes.mjs +0 -56
- package/dist/insights/types.d.cts +0 -32
- package/dist/insights/types.d.mts +0 -32
- package/dist/schema/dsl.cjs +0 -103
- package/dist/schema/dsl.mjs +0 -87
- package/dist/schema/index.cjs +0 -20
- package/dist/schema/index.mjs +0 -7
- package/dist/schema/settings.cjs +0 -9
- package/dist/schema/settings.mjs +0 -9
- package/dist/schema/types.cjs +0 -8
- package/dist/schema/types.mjs +0 -6
- package/dist/schema/v1_0_0.cjs +0 -406
- package/dist/schema/v1_0_0.mjs +0 -398
- package/src/adapters/databaseConstraintErrors.ts +0 -25
- package/src/adapters/databasePluginTestDatabase.ts +0 -120
- package/src/adapters/databasePluginUtils.spec.ts +0 -29
- package/src/adapters/databasePluginUtils.ts +0 -214
- package/src/adapters/drizzle.spec.ts +0 -336
- package/src/adapters/drizzle.ts +0 -162
- package/src/adapters/drizzleCrud.ts +0 -571
- package/src/adapters/drizzleLazyDB.ts +0 -271
- package/src/adapters/drizzleQuery.ts +0 -164
- package/src/adapters/insightsTransaction.ts +0 -32
- package/src/adapters/kysely.spec.ts +0 -174
- package/src/adapters/kysely.ts +0 -110
- package/src/adapters/kyselyCrud.ts +0 -709
- package/src/adapters/kyselyQuery.ts +0 -128
- package/src/adapters/mongodb.integration.spec.ts +0 -210
- package/src/adapters/mongodb.spec.ts +0 -209
- package/src/adapters/mongodb.ts +0 -138
- package/src/adapters/mongodbCollections.ts +0 -67
- package/src/adapters/mongodbQuery.ts +0 -255
- package/src/adapters/mongodbReads.ts +0 -380
- package/src/adapters/mongodbRows.spec.ts +0 -64
- package/src/adapters/mongodbRows.ts +0 -118
- package/src/adapters/mongodbTestClient.ts +0 -377
- package/src/adapters/mongodbTestFilter.ts +0 -169
- package/src/adapters/mongodbWrites.ts +0 -287
- package/src/adapters/prisma.spec.ts +0 -293
- package/src/adapters/prisma.ts +0 -565
- package/src/adapters/prismaQuery.ts +0 -129
- package/src/adapters/prismaRows.spec.ts +0 -98
- package/src/adapters/prismaRows.ts +0 -337
- package/src/adapters/prismaTestClient.ts +0 -413
- package/src/apiKeys.integration.spec.ts +0 -192
- package/src/apiKeys.spec.ts +0 -162
- package/src/apiKeys.ts +0 -220
- package/src/calculatePagination.ts +0 -34
- package/src/createHotUpdaterCore.ts +0 -246
- package/src/db/bundleRows.spec.ts +0 -164
- package/src/db/bundleRows.ts +0 -10
- package/src/db/createBundleDiff.spec.ts +0 -450
- package/src/db/createBundleDiff.ts +0 -364
- package/src/db/databasePluginCore.spec.ts +0 -62
- package/src/db/databasePluginCore.testFixtures.ts +0 -76
- package/src/db/databasePluginCore.ts +0 -185
- package/src/db/databasePluginUpdateCheck.bench.ts +0 -110
- package/src/db/fixedMigrator.spec.ts +0 -296
- package/src/db/fixedMigrator.ts +0 -147
- package/src/db/fixedMigratorMongo.spec.ts +0 -239
- package/src/db/fixedMigratorMongo.ts +0 -425
- package/src/db/fixedMigratorShared.ts +0 -36
- package/src/db/hotUpdaterSchema.ts +0 -5
- package/src/db/index.spec.ts +0 -1269
- package/src/db/index.ts +0 -47
- package/src/db/mongoMigrationExecution.ts +0 -23
- package/src/db/node-sqlite.d.ts +0 -25
- package/src/db/releaseCatalog.ts +0 -148
- package/src/db/schema/definitions.ts +0 -1
- package/src/db/schema/insightsCollation.ts +0 -21
- package/src/db/schema/mongodb.ts +0 -40
- package/src/db/schema/registry.ts +0 -55
- package/src/db/schema/sql.ts +0 -244
- package/src/db/schema/sqlOperations.ts +0 -63
- package/src/db/schema/types.ts +0 -1
- package/src/db/schemaGenerators.ts +0 -494
- package/src/db/schemaReadiness.ts +0 -34
- package/src/db/sqlMigrationExecution.spec.ts +0 -65
- package/src/db/sqlMigrationExecution.ts +0 -108
- package/src/db/types.spec.ts +0 -63
- package/src/db/types.ts +0 -228
- package/src/db/updateArtifacts.spec.ts +0 -359
- package/src/db/updateArtifacts.ts +0 -541
- package/src/handler-standalone.integration.spec.ts +0 -528
- package/src/handler.spec.ts +0 -190
- package/src/handler.testFixtures.ts +0 -30
- package/src/handler.ts +0 -245
- package/src/handlerAuth.integration.spec.ts +0 -33
- package/src/handlerBundleRoutes.ts +0 -259
- package/src/handlerErrors.ts +0 -7
- package/src/handlerManagement.spec.ts +0 -262
- package/src/handlerParameters.ts +0 -105
- package/src/handlerReleaseCatalogRoutes.ts +0 -154
- package/src/handlerReleaseManagementRoutes.ts +0 -213
- package/src/handlerTypes.ts +0 -96
- package/src/handlerVersionRoutes.ts +0 -12
- package/src/index.ts +0 -30
- package/src/insights/domain.ts +0 -103
- package/src/insights/errors.ts +0 -11
- package/src/insights/eventInput.ts +0 -225
- package/src/insights/insights.integration.spec.ts +0 -381
- package/src/insights/provider.spec.ts +0 -385
- package/src/insights/provider.ts +0 -591
- package/src/insights/queryInput.ts +0 -141
- package/src/insights/routes.ts +0 -104
- package/src/insights/types.ts +0 -55
- package/src/internalRouter.ts +0 -104
- package/src/node.spec.ts +0 -119
- package/src/node.ts +0 -111
- package/src/releaseCatalogRoutes.integration.spec.ts +0 -238
- package/src/runtime.spec.ts +0 -194
- package/src/runtime.testFixtures.ts +0 -71
- package/src/schema/dsl-all-versions.spec.ts +0 -37
- package/src/schema/dsl.ts +0 -187
- package/src/schema/index.ts +0 -10
- package/src/schema/settings.ts +0 -15
- package/src/schema/types.ts +0 -79
- package/src/schema/v1_0_0.spec.ts +0 -220
- package/src/schema/v1_0_0.ts +0 -529
- package/src/storageAccess.spec.ts +0 -152
- package/src/storageAccess.ts +0 -141
- package/src/types/index.ts +0 -34
- package/src/version.ts +0 -3
|
@@ -1,311 +0,0 @@
|
|
|
1
|
-
const require_databaseConstraintErrors = require("./databaseConstraintErrors.cjs");
|
|
2
|
-
const require_databasePluginUtils = require("./databasePluginUtils.cjs");
|
|
3
|
-
const require_drizzleQuery = require("./drizzleQuery.cjs");
|
|
4
|
-
let _hot_updater_plugin_core = require("@hot-updater/plugin-core");
|
|
5
|
-
let drizzle_orm = require("drizzle-orm");
|
|
6
|
-
//#region src/adapters/drizzleCrud.ts
|
|
7
|
-
var MissingDrizzleTableError = class extends Error {
|
|
8
|
-
table;
|
|
9
|
-
name = "MissingDrizzleTableError";
|
|
10
|
-
constructor(table) {
|
|
11
|
-
super(`Drizzle schema is missing table "${table}".`);
|
|
12
|
-
this.table = table;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
var DrizzleAdapterInvariantError = class extends Error {
|
|
16
|
-
name = "DrizzleAdapterInvariantError";
|
|
17
|
-
};
|
|
18
|
-
const getDrizzleTable = (db, name) => {
|
|
19
|
-
const table = db._.fullSchema[name];
|
|
20
|
-
if (table === void 0) throw new MissingDrizzleTableError(name);
|
|
21
|
-
return table;
|
|
22
|
-
};
|
|
23
|
-
const isSQLWrapper = (value) => typeof value === "object" && value !== null && "getSQL" in value && typeof value.getSQL === "function";
|
|
24
|
-
const getDrizzleColumn = (table, name) => {
|
|
25
|
-
const value = table[name];
|
|
26
|
-
if (!isSQLWrapper(value)) throw new MissingDrizzleTableError(`${name} column`);
|
|
27
|
-
return value;
|
|
28
|
-
};
|
|
29
|
-
const executeInsert = async (db, provider, table, data, onConflict) => {
|
|
30
|
-
const builder = db.insert(table);
|
|
31
|
-
const insert = builder.values(data);
|
|
32
|
-
if (onConflict === void 0) {
|
|
33
|
-
await insert.execute();
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const ignored = provider === "mysql" ? builder.ignore?.().values(data) : insert.onConflictDoNothing?.();
|
|
37
|
-
if (ignored === void 0) throw new DrizzleAdapterInvariantError();
|
|
38
|
-
await ignored.execute();
|
|
39
|
-
};
|
|
40
|
-
const recordDrizzleInsights = (db, provider, input) => {
|
|
41
|
-
if (db.resultKind !== "sync") return recordAsyncDrizzleInsights(db, provider, input);
|
|
42
|
-
const events = getDrizzleTable(db, "bundle_events");
|
|
43
|
-
const installations = getDrizzleTable(db, "bundle_installations");
|
|
44
|
-
const eventInsert = db.insert(events).values(input.event).onConflictDoNothing?.().returning?.({ id: getDrizzleColumn(events, "id") });
|
|
45
|
-
const installationInsert = db.insert(installations).values(input.installation).onConflictDoNothing?.();
|
|
46
|
-
const installationUpdate = db.update(installations).set(input.installation).where(newerInstallationWhere(installations, input.installation));
|
|
47
|
-
if (eventInsert?.all === void 0 || installationInsert?.run === void 0 || installationUpdate.run === void 0) throw new DrizzleAdapterInvariantError();
|
|
48
|
-
if (eventInsert.all().length === 0) return;
|
|
49
|
-
installationInsert.run();
|
|
50
|
-
installationUpdate.run();
|
|
51
|
-
};
|
|
52
|
-
const newerInstallationWhere = (installations, installation) => {
|
|
53
|
-
const receivedAt = getDrizzleColumn(installations, "received_at_ms");
|
|
54
|
-
return (0, drizzle_orm.and)((0, drizzle_orm.eq)(getDrizzleColumn(installations, "install_id"), installation.install_id), (0, drizzle_orm.or)((0, drizzle_orm.lt)(receivedAt, installation.received_at_ms), (0, drizzle_orm.and)((0, drizzle_orm.eq)(receivedAt, installation.received_at_ms), (0, drizzle_orm.lt)(getDrizzleColumn(installations, "id"), installation.id))));
|
|
55
|
-
};
|
|
56
|
-
const recordAsyncDrizzleInsights = async (db, provider, { event, installation }) => {
|
|
57
|
-
const events = getDrizzleTable(db, "bundle_events");
|
|
58
|
-
const installations = getDrizzleTable(db, "bundle_installations");
|
|
59
|
-
if (provider === "mysql") {
|
|
60
|
-
if (await db.query.bundle_events.findFirst({ where: (0, drizzle_orm.eq)(getDrizzleColumn(events, "id"), event.id) }) !== void 0) return;
|
|
61
|
-
await db.insert(events).values(event).execute();
|
|
62
|
-
const insertInstallation = db.insert(installations).values(installation).onDuplicateKeyUpdate?.({ set: { install_id: installation.install_id } });
|
|
63
|
-
if (insertInstallation === void 0) throw new DrizzleAdapterInvariantError();
|
|
64
|
-
await insertInstallation.execute();
|
|
65
|
-
} else {
|
|
66
|
-
const returning = (db.insert(events).values(event).onConflictDoNothing?.())?.returning?.({ id: getDrizzleColumn(events, "id") });
|
|
67
|
-
if (returning === void 0) throw new DrizzleAdapterInvariantError();
|
|
68
|
-
const rows = await returning.execute();
|
|
69
|
-
if (!Array.isArray(rows)) throw new DrizzleAdapterInvariantError();
|
|
70
|
-
if (rows.length === 0) return;
|
|
71
|
-
await executeInsert(db, provider, installations, installation, "ignore");
|
|
72
|
-
}
|
|
73
|
-
await db.update(installations).set(installation).where(newerInstallationWhere(installations, installation)).execute();
|
|
74
|
-
};
|
|
75
|
-
const toOrderBy = (table, input) => {
|
|
76
|
-
return input.orderBy?.flatMap((clause) => {
|
|
77
|
-
const column = getDrizzleColumn(table, clause.field);
|
|
78
|
-
if (input.model === "bundle_events" || input.model === "bundle_installations") return [clause.direction === "asc" ? (0, drizzle_orm.asc)(column) : (0, drizzle_orm.desc)(column)];
|
|
79
|
-
return [(clause.nulls ?? (clause.direction === "asc" ? "last" : "first")) === "first" ? drizzle_orm.sql`${column} is null desc` : drizzle_orm.sql`${column} is null asc`, clause.direction === "asc" ? (0, drizzle_orm.asc)(column) : (0, drizzle_orm.desc)(column)];
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
const createDrizzleCrud = (db, provider) => {
|
|
83
|
-
const bundles = getDrizzleTable(db, "bundles");
|
|
84
|
-
const patches = getDrizzleTable(db, "bundle_patches");
|
|
85
|
-
const events = getDrizzleTable(db, "bundle_events");
|
|
86
|
-
const installations = getDrizzleTable(db, "bundle_installations");
|
|
87
|
-
const releases = getDrizzleTable(db, "releases");
|
|
88
|
-
const releaseCatalogs = getDrizzleTable(db, "release_catalogs");
|
|
89
|
-
const channels = getDrizzleTable(db, "channels");
|
|
90
|
-
const apiKeys = getDrizzleTable(db, "api_keys");
|
|
91
|
-
return {
|
|
92
|
-
async deleteChannel({ id }) {
|
|
93
|
-
const idPredicate = (0, drizzle_orm.eq)(getDrizzleColumn(channels, "id"), id);
|
|
94
|
-
if (await db.query.channels.findFirst({ where: idPredicate }) === void 0) return {
|
|
95
|
-
deleted: false,
|
|
96
|
-
reason: "not_found"
|
|
97
|
-
};
|
|
98
|
-
if (await db.$count(releases, (0, drizzle_orm.eq)(getDrizzleColumn(releases, "channel_id"), id)) > 0) return {
|
|
99
|
-
deleted: false,
|
|
100
|
-
reason: "not_empty"
|
|
101
|
-
};
|
|
102
|
-
try {
|
|
103
|
-
await db.delete(channels).where(idPredicate).execute();
|
|
104
|
-
} catch (error) {
|
|
105
|
-
if (require_databaseConstraintErrors.isChannelDeleteReferencedError(error)) return {
|
|
106
|
-
deleted: false,
|
|
107
|
-
reason: "not_empty"
|
|
108
|
-
};
|
|
109
|
-
throw error;
|
|
110
|
-
}
|
|
111
|
-
return { deleted: true };
|
|
112
|
-
},
|
|
113
|
-
async insertChannel(input) {
|
|
114
|
-
const before = await db.query.channels.findFirst({ where: (0, drizzle_orm.eq)(getDrizzleColumn(channels, "name"), input.row.name) });
|
|
115
|
-
if (before !== void 0) return {
|
|
116
|
-
row: before,
|
|
117
|
-
inserted: false
|
|
118
|
-
};
|
|
119
|
-
await executeInsert(db, provider, channels, input.row, "ignore");
|
|
120
|
-
const row = await db.query.channels.findFirst({ where: (0, drizzle_orm.eq)(getDrizzleColumn(channels, "name"), input.row.name) });
|
|
121
|
-
if (row === void 0) throw new DrizzleAdapterInvariantError();
|
|
122
|
-
return {
|
|
123
|
-
row,
|
|
124
|
-
inserted: row.id === input.row.id
|
|
125
|
-
};
|
|
126
|
-
},
|
|
127
|
-
async create(input) {
|
|
128
|
-
switch (input.model) {
|
|
129
|
-
case "bundles":
|
|
130
|
-
await executeInsert(db, provider, bundles, require_databasePluginUtils.toStoredBundleRow(input.data, provider), void 0);
|
|
131
|
-
return input.data;
|
|
132
|
-
case "bundle_patches":
|
|
133
|
-
await executeInsert(db, provider, patches, input.data, void 0);
|
|
134
|
-
return input.data;
|
|
135
|
-
case "bundle_events":
|
|
136
|
-
await executeInsert(db, provider, events, input.data, void 0);
|
|
137
|
-
return input.data;
|
|
138
|
-
case "bundle_installations":
|
|
139
|
-
await executeInsert(db, provider, installations, input.data, input.onConflict);
|
|
140
|
-
return input.data;
|
|
141
|
-
case "releases":
|
|
142
|
-
await executeInsert(db, provider, releases, require_databasePluginUtils.toStoredReleaseRow(input.data, provider), void 0);
|
|
143
|
-
return input.data;
|
|
144
|
-
case "release_catalogs":
|
|
145
|
-
await executeInsert(db, provider, releaseCatalogs, input.data, void 0);
|
|
146
|
-
return input.data;
|
|
147
|
-
case "api_keys":
|
|
148
|
-
await executeInsert(db, provider, apiKeys, input.data, input.onConflict);
|
|
149
|
-
return input.data;
|
|
150
|
-
case "channels":
|
|
151
|
-
await executeInsert(db, provider, channels, input.data, input.onConflict);
|
|
152
|
-
return input.data;
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
async update(input) {
|
|
156
|
-
if (input.model === "bundle_installations") {
|
|
157
|
-
const installId = input.where.find((item) => item.field === "install_id" && (item.operator === void 0 || item.operator === "eq") && typeof item.value === "string")?.value;
|
|
158
|
-
if (typeof installId !== "string") throw new DrizzleAdapterInvariantError();
|
|
159
|
-
const where = require_drizzleQuery.buildDrizzleWhere(provider, installations, input.where);
|
|
160
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
161
|
-
await db.update(installations).set(input.update).where(where).execute();
|
|
162
|
-
const row = await db.query.bundle_installations.findFirst({ where: (0, drizzle_orm.eq)(getDrizzleColumn(installations, "install_id"), installId) });
|
|
163
|
-
return row?.id === input.update.id && row.received_at_ms === input.update.received_at_ms ? row : null;
|
|
164
|
-
}
|
|
165
|
-
const selector = input.where[0];
|
|
166
|
-
if (selector === void 0 || typeof selector.value !== "string") throw new DrizzleAdapterInvariantError();
|
|
167
|
-
if (input.model === "api_keys") {
|
|
168
|
-
const idPredicate = (0, drizzle_orm.eq)(getDrizzleColumn(apiKeys, "id"), selector.value);
|
|
169
|
-
await db.update(apiKeys).set(input.update).where(idPredicate).execute();
|
|
170
|
-
return await db.query.api_keys.findFirst({ where: idPredicate }) ?? null;
|
|
171
|
-
}
|
|
172
|
-
if (input.model === "releases") {
|
|
173
|
-
const idPredicate = (0, drizzle_orm.eq)(getDrizzleColumn(releases, "id"), selector.value);
|
|
174
|
-
await db.update(releases).set(require_databasePluginUtils.toStoredReleaseUpdate(input.update, provider)).where(idPredicate).execute();
|
|
175
|
-
const row = await db.query.releases.findFirst({ where: idPredicate });
|
|
176
|
-
return row === void 0 ? null : require_databasePluginUtils.fromStoredReleaseRow(row);
|
|
177
|
-
}
|
|
178
|
-
if (input.model === "release_catalogs") {
|
|
179
|
-
const scopePredicate = (0, drizzle_orm.eq)(getDrizzleColumn(releaseCatalogs, "scope_key"), selector.value);
|
|
180
|
-
await db.update(releaseCatalogs).set(input.update).where(scopePredicate).execute();
|
|
181
|
-
const row = await db.query.release_catalogs.findFirst({ where: scopePredicate });
|
|
182
|
-
return row === void 0 ? null : require_databasePluginUtils.fromStoredReleaseCatalogRow(row);
|
|
183
|
-
}
|
|
184
|
-
const idPredicate = (0, drizzle_orm.eq)(getDrizzleColumn(bundles, "id"), selector.value);
|
|
185
|
-
await db.update(bundles).set(require_databasePluginUtils.toStoredBundleUpdate(input.update, provider)).where(idPredicate).execute();
|
|
186
|
-
const stored = await db.query.bundles.findFirst({ where: idPredicate });
|
|
187
|
-
if (stored === void 0) return null;
|
|
188
|
-
return require_databasePluginUtils.fromStoredBundleRow(stored);
|
|
189
|
-
},
|
|
190
|
-
async delete(input) {
|
|
191
|
-
switch (input.model) {
|
|
192
|
-
case "bundles": {
|
|
193
|
-
const where = require_drizzleQuery.buildDrizzleWhere(provider, bundles, input.where);
|
|
194
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
195
|
-
await db.delete(bundles).where(where).execute();
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
case "bundle_patches": {
|
|
199
|
-
const where = require_drizzleQuery.buildDrizzleWhere(provider, patches, input.where);
|
|
200
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
201
|
-
await db.delete(patches).where(where).execute();
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
case "releases": {
|
|
205
|
-
const where = require_drizzleQuery.buildDrizzleWhere(provider, releases, input.where);
|
|
206
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
207
|
-
await db.delete(releases).where(where).execute();
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
case "channels": {
|
|
211
|
-
const where = require_drizzleQuery.buildDrizzleWhere(provider, channels, input.where);
|
|
212
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
213
|
-
try {
|
|
214
|
-
await db.delete(channels).where(where).execute();
|
|
215
|
-
} catch (error) {
|
|
216
|
-
require_databaseConstraintErrors.translateChannelDeleteError(error);
|
|
217
|
-
}
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
async count(input) {
|
|
223
|
-
if (input.distinct !== void 0) throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-operation");
|
|
224
|
-
switch (input.model) {
|
|
225
|
-
case "bundle_events": return db.$count(events, require_drizzleQuery.buildDrizzleWhere(provider, events, input.where));
|
|
226
|
-
case "bundles": return db.$count(bundles, require_drizzleQuery.buildDrizzleWhere(provider, bundles, input.where));
|
|
227
|
-
case "bundle_patches": return db.$count(patches, require_drizzleQuery.buildDrizzleWhere(provider, patches, input.where));
|
|
228
|
-
case "releases": return db.$count(releases, require_drizzleQuery.buildDrizzleWhere(provider, releases, input.where));
|
|
229
|
-
case "bundle_installations": return db.$count(installations, require_drizzleQuery.buildDrizzleWhere(provider, installations, input.where));
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
async findOne(input) {
|
|
233
|
-
switch (input.model) {
|
|
234
|
-
case "bundles": {
|
|
235
|
-
const row = await db.query.bundles.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, bundles, input.where) });
|
|
236
|
-
return row === void 0 ? null : require_databasePluginUtils.fromStoredBundleRow(row);
|
|
237
|
-
}
|
|
238
|
-
case "bundle_patches": return await db.query.bundle_patches.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, patches, input.where) }) ?? null;
|
|
239
|
-
case "api_keys": return await db.query.api_keys.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, apiKeys, input.where) }) ?? null;
|
|
240
|
-
case "channels": return await db.query.channels.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, channels, input.where) }) ?? null;
|
|
241
|
-
case "releases": {
|
|
242
|
-
const row = await db.query.releases.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, releases, input.where) });
|
|
243
|
-
return row === void 0 ? null : require_databasePluginUtils.fromStoredReleaseRow(row);
|
|
244
|
-
}
|
|
245
|
-
case "release_catalogs": {
|
|
246
|
-
const row = await db.query.release_catalogs.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, releaseCatalogs, input.where) });
|
|
247
|
-
return row === void 0 ? null : require_databasePluginUtils.fromStoredReleaseCatalogRow(row);
|
|
248
|
-
}
|
|
249
|
-
case "bundle_installations": return await db.query.bundle_installations.findFirst({ where: require_drizzleQuery.buildDrizzleWhere(provider, installations, input.where) }) ?? null;
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
async findMany(input) {
|
|
253
|
-
if (input.distinctOn !== void 0) throw new _hot_updater_plugin_core.DatabasePluginInputError("invalid-operation");
|
|
254
|
-
switch (input.model) {
|
|
255
|
-
case "bundles": return (await db.query.bundles.findMany({
|
|
256
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, bundles, input.where),
|
|
257
|
-
orderBy: toOrderBy(bundles, input),
|
|
258
|
-
limit: input.limit,
|
|
259
|
-
offset: input.offset
|
|
260
|
-
})).map(require_databasePluginUtils.fromStoredBundleRow);
|
|
261
|
-
case "bundle_events": return db.query.bundle_events.findMany({
|
|
262
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, events, input.where),
|
|
263
|
-
orderBy: toOrderBy(events, input),
|
|
264
|
-
limit: input.limit,
|
|
265
|
-
offset: input.offset
|
|
266
|
-
});
|
|
267
|
-
case "bundle_installations": return db.query.bundle_installations.findMany({
|
|
268
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, installations, input.where),
|
|
269
|
-
orderBy: toOrderBy(installations, input),
|
|
270
|
-
limit: input.limit,
|
|
271
|
-
offset: input.offset
|
|
272
|
-
});
|
|
273
|
-
case "api_keys": return db.query.api_keys.findMany({
|
|
274
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, apiKeys, input.where),
|
|
275
|
-
orderBy: toOrderBy(apiKeys, input),
|
|
276
|
-
limit: input.limit,
|
|
277
|
-
offset: input.offset
|
|
278
|
-
});
|
|
279
|
-
case "bundle_patches": return db.query.bundle_patches.findMany({
|
|
280
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, patches, input.where),
|
|
281
|
-
orderBy: toOrderBy(patches, input),
|
|
282
|
-
limit: input.limit,
|
|
283
|
-
offset: input.offset
|
|
284
|
-
});
|
|
285
|
-
case "channels": return db.query.channels.findMany({
|
|
286
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, channels, input.where),
|
|
287
|
-
orderBy: toOrderBy(channels, input),
|
|
288
|
-
limit: input.limit,
|
|
289
|
-
offset: input.offset
|
|
290
|
-
});
|
|
291
|
-
case "releases": return (await db.query.releases.findMany({
|
|
292
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, releases, input.where),
|
|
293
|
-
orderBy: toOrderBy(releases, input),
|
|
294
|
-
limit: input.limit,
|
|
295
|
-
offset: input.offset
|
|
296
|
-
})).map(require_databasePluginUtils.fromStoredReleaseRow);
|
|
297
|
-
case "release_catalogs": return (await db.query.release_catalogs.findMany({
|
|
298
|
-
where: require_drizzleQuery.buildDrizzleWhere(provider, releaseCatalogs, input.where),
|
|
299
|
-
orderBy: toOrderBy(releaseCatalogs, input),
|
|
300
|
-
limit: input.limit,
|
|
301
|
-
offset: input.offset
|
|
302
|
-
})).map(require_databasePluginUtils.fromStoredReleaseCatalogRow);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
};
|
|
306
|
-
};
|
|
307
|
-
//#endregion
|
|
308
|
-
exports.createDrizzleCrud = createDrizzleCrud;
|
|
309
|
-
exports.getDrizzleColumn = getDrizzleColumn;
|
|
310
|
-
exports.getDrizzleTable = getDrizzleTable;
|
|
311
|
-
exports.recordDrizzleInsights = recordDrizzleInsights;
|
|
@@ -1,308 +0,0 @@
|
|
|
1
|
-
import { isChannelDeleteReferencedError, translateChannelDeleteError } from "./databaseConstraintErrors.mjs";
|
|
2
|
-
import { fromStoredBundleRow, fromStoredReleaseCatalogRow, fromStoredReleaseRow, toStoredBundleRow, toStoredBundleUpdate, toStoredReleaseRow, toStoredReleaseUpdate } from "./databasePluginUtils.mjs";
|
|
3
|
-
import { buildDrizzleWhere } from "./drizzleQuery.mjs";
|
|
4
|
-
import { DatabasePluginInputError } from "@hot-updater/plugin-core";
|
|
5
|
-
import { and, asc, desc, eq, lt, or, sql } from "drizzle-orm";
|
|
6
|
-
//#region src/adapters/drizzleCrud.ts
|
|
7
|
-
var MissingDrizzleTableError = class extends Error {
|
|
8
|
-
table;
|
|
9
|
-
name = "MissingDrizzleTableError";
|
|
10
|
-
constructor(table) {
|
|
11
|
-
super(`Drizzle schema is missing table "${table}".`);
|
|
12
|
-
this.table = table;
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
var DrizzleAdapterInvariantError = class extends Error {
|
|
16
|
-
name = "DrizzleAdapterInvariantError";
|
|
17
|
-
};
|
|
18
|
-
const getDrizzleTable = (db, name) => {
|
|
19
|
-
const table = db._.fullSchema[name];
|
|
20
|
-
if (table === void 0) throw new MissingDrizzleTableError(name);
|
|
21
|
-
return table;
|
|
22
|
-
};
|
|
23
|
-
const isSQLWrapper = (value) => typeof value === "object" && value !== null && "getSQL" in value && typeof value.getSQL === "function";
|
|
24
|
-
const getDrizzleColumn = (table, name) => {
|
|
25
|
-
const value = table[name];
|
|
26
|
-
if (!isSQLWrapper(value)) throw new MissingDrizzleTableError(`${name} column`);
|
|
27
|
-
return value;
|
|
28
|
-
};
|
|
29
|
-
const executeInsert = async (db, provider, table, data, onConflict) => {
|
|
30
|
-
const builder = db.insert(table);
|
|
31
|
-
const insert = builder.values(data);
|
|
32
|
-
if (onConflict === void 0) {
|
|
33
|
-
await insert.execute();
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const ignored = provider === "mysql" ? builder.ignore?.().values(data) : insert.onConflictDoNothing?.();
|
|
37
|
-
if (ignored === void 0) throw new DrizzleAdapterInvariantError();
|
|
38
|
-
await ignored.execute();
|
|
39
|
-
};
|
|
40
|
-
const recordDrizzleInsights = (db, provider, input) => {
|
|
41
|
-
if (db.resultKind !== "sync") return recordAsyncDrizzleInsights(db, provider, input);
|
|
42
|
-
const events = getDrizzleTable(db, "bundle_events");
|
|
43
|
-
const installations = getDrizzleTable(db, "bundle_installations");
|
|
44
|
-
const eventInsert = db.insert(events).values(input.event).onConflictDoNothing?.().returning?.({ id: getDrizzleColumn(events, "id") });
|
|
45
|
-
const installationInsert = db.insert(installations).values(input.installation).onConflictDoNothing?.();
|
|
46
|
-
const installationUpdate = db.update(installations).set(input.installation).where(newerInstallationWhere(installations, input.installation));
|
|
47
|
-
if (eventInsert?.all === void 0 || installationInsert?.run === void 0 || installationUpdate.run === void 0) throw new DrizzleAdapterInvariantError();
|
|
48
|
-
if (eventInsert.all().length === 0) return;
|
|
49
|
-
installationInsert.run();
|
|
50
|
-
installationUpdate.run();
|
|
51
|
-
};
|
|
52
|
-
const newerInstallationWhere = (installations, installation) => {
|
|
53
|
-
const receivedAt = getDrizzleColumn(installations, "received_at_ms");
|
|
54
|
-
return and(eq(getDrizzleColumn(installations, "install_id"), installation.install_id), or(lt(receivedAt, installation.received_at_ms), and(eq(receivedAt, installation.received_at_ms), lt(getDrizzleColumn(installations, "id"), installation.id))));
|
|
55
|
-
};
|
|
56
|
-
const recordAsyncDrizzleInsights = async (db, provider, { event, installation }) => {
|
|
57
|
-
const events = getDrizzleTable(db, "bundle_events");
|
|
58
|
-
const installations = getDrizzleTable(db, "bundle_installations");
|
|
59
|
-
if (provider === "mysql") {
|
|
60
|
-
if (await db.query.bundle_events.findFirst({ where: eq(getDrizzleColumn(events, "id"), event.id) }) !== void 0) return;
|
|
61
|
-
await db.insert(events).values(event).execute();
|
|
62
|
-
const insertInstallation = db.insert(installations).values(installation).onDuplicateKeyUpdate?.({ set: { install_id: installation.install_id } });
|
|
63
|
-
if (insertInstallation === void 0) throw new DrizzleAdapterInvariantError();
|
|
64
|
-
await insertInstallation.execute();
|
|
65
|
-
} else {
|
|
66
|
-
const returning = (db.insert(events).values(event).onConflictDoNothing?.())?.returning?.({ id: getDrizzleColumn(events, "id") });
|
|
67
|
-
if (returning === void 0) throw new DrizzleAdapterInvariantError();
|
|
68
|
-
const rows = await returning.execute();
|
|
69
|
-
if (!Array.isArray(rows)) throw new DrizzleAdapterInvariantError();
|
|
70
|
-
if (rows.length === 0) return;
|
|
71
|
-
await executeInsert(db, provider, installations, installation, "ignore");
|
|
72
|
-
}
|
|
73
|
-
await db.update(installations).set(installation).where(newerInstallationWhere(installations, installation)).execute();
|
|
74
|
-
};
|
|
75
|
-
const toOrderBy = (table, input) => {
|
|
76
|
-
return input.orderBy?.flatMap((clause) => {
|
|
77
|
-
const column = getDrizzleColumn(table, clause.field);
|
|
78
|
-
if (input.model === "bundle_events" || input.model === "bundle_installations") return [clause.direction === "asc" ? asc(column) : desc(column)];
|
|
79
|
-
return [(clause.nulls ?? (clause.direction === "asc" ? "last" : "first")) === "first" ? sql`${column} is null desc` : sql`${column} is null asc`, clause.direction === "asc" ? asc(column) : desc(column)];
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
const createDrizzleCrud = (db, provider) => {
|
|
83
|
-
const bundles = getDrizzleTable(db, "bundles");
|
|
84
|
-
const patches = getDrizzleTable(db, "bundle_patches");
|
|
85
|
-
const events = getDrizzleTable(db, "bundle_events");
|
|
86
|
-
const installations = getDrizzleTable(db, "bundle_installations");
|
|
87
|
-
const releases = getDrizzleTable(db, "releases");
|
|
88
|
-
const releaseCatalogs = getDrizzleTable(db, "release_catalogs");
|
|
89
|
-
const channels = getDrizzleTable(db, "channels");
|
|
90
|
-
const apiKeys = getDrizzleTable(db, "api_keys");
|
|
91
|
-
return {
|
|
92
|
-
async deleteChannel({ id }) {
|
|
93
|
-
const idPredicate = eq(getDrizzleColumn(channels, "id"), id);
|
|
94
|
-
if (await db.query.channels.findFirst({ where: idPredicate }) === void 0) return {
|
|
95
|
-
deleted: false,
|
|
96
|
-
reason: "not_found"
|
|
97
|
-
};
|
|
98
|
-
if (await db.$count(releases, eq(getDrizzleColumn(releases, "channel_id"), id)) > 0) return {
|
|
99
|
-
deleted: false,
|
|
100
|
-
reason: "not_empty"
|
|
101
|
-
};
|
|
102
|
-
try {
|
|
103
|
-
await db.delete(channels).where(idPredicate).execute();
|
|
104
|
-
} catch (error) {
|
|
105
|
-
if (isChannelDeleteReferencedError(error)) return {
|
|
106
|
-
deleted: false,
|
|
107
|
-
reason: "not_empty"
|
|
108
|
-
};
|
|
109
|
-
throw error;
|
|
110
|
-
}
|
|
111
|
-
return { deleted: true };
|
|
112
|
-
},
|
|
113
|
-
async insertChannel(input) {
|
|
114
|
-
const before = await db.query.channels.findFirst({ where: eq(getDrizzleColumn(channels, "name"), input.row.name) });
|
|
115
|
-
if (before !== void 0) return {
|
|
116
|
-
row: before,
|
|
117
|
-
inserted: false
|
|
118
|
-
};
|
|
119
|
-
await executeInsert(db, provider, channels, input.row, "ignore");
|
|
120
|
-
const row = await db.query.channels.findFirst({ where: eq(getDrizzleColumn(channels, "name"), input.row.name) });
|
|
121
|
-
if (row === void 0) throw new DrizzleAdapterInvariantError();
|
|
122
|
-
return {
|
|
123
|
-
row,
|
|
124
|
-
inserted: row.id === input.row.id
|
|
125
|
-
};
|
|
126
|
-
},
|
|
127
|
-
async create(input) {
|
|
128
|
-
switch (input.model) {
|
|
129
|
-
case "bundles":
|
|
130
|
-
await executeInsert(db, provider, bundles, toStoredBundleRow(input.data, provider), void 0);
|
|
131
|
-
return input.data;
|
|
132
|
-
case "bundle_patches":
|
|
133
|
-
await executeInsert(db, provider, patches, input.data, void 0);
|
|
134
|
-
return input.data;
|
|
135
|
-
case "bundle_events":
|
|
136
|
-
await executeInsert(db, provider, events, input.data, void 0);
|
|
137
|
-
return input.data;
|
|
138
|
-
case "bundle_installations":
|
|
139
|
-
await executeInsert(db, provider, installations, input.data, input.onConflict);
|
|
140
|
-
return input.data;
|
|
141
|
-
case "releases":
|
|
142
|
-
await executeInsert(db, provider, releases, toStoredReleaseRow(input.data, provider), void 0);
|
|
143
|
-
return input.data;
|
|
144
|
-
case "release_catalogs":
|
|
145
|
-
await executeInsert(db, provider, releaseCatalogs, input.data, void 0);
|
|
146
|
-
return input.data;
|
|
147
|
-
case "api_keys":
|
|
148
|
-
await executeInsert(db, provider, apiKeys, input.data, input.onConflict);
|
|
149
|
-
return input.data;
|
|
150
|
-
case "channels":
|
|
151
|
-
await executeInsert(db, provider, channels, input.data, input.onConflict);
|
|
152
|
-
return input.data;
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
async update(input) {
|
|
156
|
-
if (input.model === "bundle_installations") {
|
|
157
|
-
const installId = input.where.find((item) => item.field === "install_id" && (item.operator === void 0 || item.operator === "eq") && typeof item.value === "string")?.value;
|
|
158
|
-
if (typeof installId !== "string") throw new DrizzleAdapterInvariantError();
|
|
159
|
-
const where = buildDrizzleWhere(provider, installations, input.where);
|
|
160
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
161
|
-
await db.update(installations).set(input.update).where(where).execute();
|
|
162
|
-
const row = await db.query.bundle_installations.findFirst({ where: eq(getDrizzleColumn(installations, "install_id"), installId) });
|
|
163
|
-
return row?.id === input.update.id && row.received_at_ms === input.update.received_at_ms ? row : null;
|
|
164
|
-
}
|
|
165
|
-
const selector = input.where[0];
|
|
166
|
-
if (selector === void 0 || typeof selector.value !== "string") throw new DrizzleAdapterInvariantError();
|
|
167
|
-
if (input.model === "api_keys") {
|
|
168
|
-
const idPredicate = eq(getDrizzleColumn(apiKeys, "id"), selector.value);
|
|
169
|
-
await db.update(apiKeys).set(input.update).where(idPredicate).execute();
|
|
170
|
-
return await db.query.api_keys.findFirst({ where: idPredicate }) ?? null;
|
|
171
|
-
}
|
|
172
|
-
if (input.model === "releases") {
|
|
173
|
-
const idPredicate = eq(getDrizzleColumn(releases, "id"), selector.value);
|
|
174
|
-
await db.update(releases).set(toStoredReleaseUpdate(input.update, provider)).where(idPredicate).execute();
|
|
175
|
-
const row = await db.query.releases.findFirst({ where: idPredicate });
|
|
176
|
-
return row === void 0 ? null : fromStoredReleaseRow(row);
|
|
177
|
-
}
|
|
178
|
-
if (input.model === "release_catalogs") {
|
|
179
|
-
const scopePredicate = eq(getDrizzleColumn(releaseCatalogs, "scope_key"), selector.value);
|
|
180
|
-
await db.update(releaseCatalogs).set(input.update).where(scopePredicate).execute();
|
|
181
|
-
const row = await db.query.release_catalogs.findFirst({ where: scopePredicate });
|
|
182
|
-
return row === void 0 ? null : fromStoredReleaseCatalogRow(row);
|
|
183
|
-
}
|
|
184
|
-
const idPredicate = eq(getDrizzleColumn(bundles, "id"), selector.value);
|
|
185
|
-
await db.update(bundles).set(toStoredBundleUpdate(input.update, provider)).where(idPredicate).execute();
|
|
186
|
-
const stored = await db.query.bundles.findFirst({ where: idPredicate });
|
|
187
|
-
if (stored === void 0) return null;
|
|
188
|
-
return fromStoredBundleRow(stored);
|
|
189
|
-
},
|
|
190
|
-
async delete(input) {
|
|
191
|
-
switch (input.model) {
|
|
192
|
-
case "bundles": {
|
|
193
|
-
const where = buildDrizzleWhere(provider, bundles, input.where);
|
|
194
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
195
|
-
await db.delete(bundles).where(where).execute();
|
|
196
|
-
return;
|
|
197
|
-
}
|
|
198
|
-
case "bundle_patches": {
|
|
199
|
-
const where = buildDrizzleWhere(provider, patches, input.where);
|
|
200
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
201
|
-
await db.delete(patches).where(where).execute();
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
case "releases": {
|
|
205
|
-
const where = buildDrizzleWhere(provider, releases, input.where);
|
|
206
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
207
|
-
await db.delete(releases).where(where).execute();
|
|
208
|
-
return;
|
|
209
|
-
}
|
|
210
|
-
case "channels": {
|
|
211
|
-
const where = buildDrizzleWhere(provider, channels, input.where);
|
|
212
|
-
if (where === void 0) throw new DrizzleAdapterInvariantError();
|
|
213
|
-
try {
|
|
214
|
-
await db.delete(channels).where(where).execute();
|
|
215
|
-
} catch (error) {
|
|
216
|
-
translateChannelDeleteError(error);
|
|
217
|
-
}
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
},
|
|
222
|
-
async count(input) {
|
|
223
|
-
if (input.distinct !== void 0) throw new DatabasePluginInputError("invalid-operation");
|
|
224
|
-
switch (input.model) {
|
|
225
|
-
case "bundle_events": return db.$count(events, buildDrizzleWhere(provider, events, input.where));
|
|
226
|
-
case "bundles": return db.$count(bundles, buildDrizzleWhere(provider, bundles, input.where));
|
|
227
|
-
case "bundle_patches": return db.$count(patches, buildDrizzleWhere(provider, patches, input.where));
|
|
228
|
-
case "releases": return db.$count(releases, buildDrizzleWhere(provider, releases, input.where));
|
|
229
|
-
case "bundle_installations": return db.$count(installations, buildDrizzleWhere(provider, installations, input.where));
|
|
230
|
-
}
|
|
231
|
-
},
|
|
232
|
-
async findOne(input) {
|
|
233
|
-
switch (input.model) {
|
|
234
|
-
case "bundles": {
|
|
235
|
-
const row = await db.query.bundles.findFirst({ where: buildDrizzleWhere(provider, bundles, input.where) });
|
|
236
|
-
return row === void 0 ? null : fromStoredBundleRow(row);
|
|
237
|
-
}
|
|
238
|
-
case "bundle_patches": return await db.query.bundle_patches.findFirst({ where: buildDrizzleWhere(provider, patches, input.where) }) ?? null;
|
|
239
|
-
case "api_keys": return await db.query.api_keys.findFirst({ where: buildDrizzleWhere(provider, apiKeys, input.where) }) ?? null;
|
|
240
|
-
case "channels": return await db.query.channels.findFirst({ where: buildDrizzleWhere(provider, channels, input.where) }) ?? null;
|
|
241
|
-
case "releases": {
|
|
242
|
-
const row = await db.query.releases.findFirst({ where: buildDrizzleWhere(provider, releases, input.where) });
|
|
243
|
-
return row === void 0 ? null : fromStoredReleaseRow(row);
|
|
244
|
-
}
|
|
245
|
-
case "release_catalogs": {
|
|
246
|
-
const row = await db.query.release_catalogs.findFirst({ where: buildDrizzleWhere(provider, releaseCatalogs, input.where) });
|
|
247
|
-
return row === void 0 ? null : fromStoredReleaseCatalogRow(row);
|
|
248
|
-
}
|
|
249
|
-
case "bundle_installations": return await db.query.bundle_installations.findFirst({ where: buildDrizzleWhere(provider, installations, input.where) }) ?? null;
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
async findMany(input) {
|
|
253
|
-
if (input.distinctOn !== void 0) throw new DatabasePluginInputError("invalid-operation");
|
|
254
|
-
switch (input.model) {
|
|
255
|
-
case "bundles": return (await db.query.bundles.findMany({
|
|
256
|
-
where: buildDrizzleWhere(provider, bundles, input.where),
|
|
257
|
-
orderBy: toOrderBy(bundles, input),
|
|
258
|
-
limit: input.limit,
|
|
259
|
-
offset: input.offset
|
|
260
|
-
})).map(fromStoredBundleRow);
|
|
261
|
-
case "bundle_events": return db.query.bundle_events.findMany({
|
|
262
|
-
where: buildDrizzleWhere(provider, events, input.where),
|
|
263
|
-
orderBy: toOrderBy(events, input),
|
|
264
|
-
limit: input.limit,
|
|
265
|
-
offset: input.offset
|
|
266
|
-
});
|
|
267
|
-
case "bundle_installations": return db.query.bundle_installations.findMany({
|
|
268
|
-
where: buildDrizzleWhere(provider, installations, input.where),
|
|
269
|
-
orderBy: toOrderBy(installations, input),
|
|
270
|
-
limit: input.limit,
|
|
271
|
-
offset: input.offset
|
|
272
|
-
});
|
|
273
|
-
case "api_keys": return db.query.api_keys.findMany({
|
|
274
|
-
where: buildDrizzleWhere(provider, apiKeys, input.where),
|
|
275
|
-
orderBy: toOrderBy(apiKeys, input),
|
|
276
|
-
limit: input.limit,
|
|
277
|
-
offset: input.offset
|
|
278
|
-
});
|
|
279
|
-
case "bundle_patches": return db.query.bundle_patches.findMany({
|
|
280
|
-
where: buildDrizzleWhere(provider, patches, input.where),
|
|
281
|
-
orderBy: toOrderBy(patches, input),
|
|
282
|
-
limit: input.limit,
|
|
283
|
-
offset: input.offset
|
|
284
|
-
});
|
|
285
|
-
case "channels": return db.query.channels.findMany({
|
|
286
|
-
where: buildDrizzleWhere(provider, channels, input.where),
|
|
287
|
-
orderBy: toOrderBy(channels, input),
|
|
288
|
-
limit: input.limit,
|
|
289
|
-
offset: input.offset
|
|
290
|
-
});
|
|
291
|
-
case "releases": return (await db.query.releases.findMany({
|
|
292
|
-
where: buildDrizzleWhere(provider, releases, input.where),
|
|
293
|
-
orderBy: toOrderBy(releases, input),
|
|
294
|
-
limit: input.limit,
|
|
295
|
-
offset: input.offset
|
|
296
|
-
})).map(fromStoredReleaseRow);
|
|
297
|
-
case "release_catalogs": return (await db.query.release_catalogs.findMany({
|
|
298
|
-
where: buildDrizzleWhere(provider, releaseCatalogs, input.where),
|
|
299
|
-
orderBy: toOrderBy(releaseCatalogs, input),
|
|
300
|
-
limit: input.limit,
|
|
301
|
-
offset: input.offset
|
|
302
|
-
})).map(fromStoredReleaseCatalogRow);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
};
|
|
306
|
-
};
|
|
307
|
-
//#endregion
|
|
308
|
-
export { createDrizzleCrud, getDrizzleColumn, getDrizzleTable, recordDrizzleInsights };
|