everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
107 lines (105 loc) • 3.48 kB
JavaScript
const require_config = require('../config.cjs');
const require_shared = require('./shared.cjs');
let effect = require("effect");
//#region src/commands/db.ts
function registerDb(builder) {
return {
dbStudio: builder.dbStudio.handler(async ({ input, context }) => {
const deps = effect.Context.get(context["effect/context"], require_shared.BosDepsTag);
if (!require_config.findConfigPath()) return {
status: "error",
plugin: input.plugin,
source: "remote",
section: "",
error: `${require_config.MISSING_CONFIG_MESSAGE} in current directory`
};
try {
const binding = await effect.Effect.runPromise(deps.databaseBindings.forPluginKey(input.plugin));
await effect.Effect.runPromise(deps.drizzleKit.studio(binding));
return {
status: "success",
plugin: binding.key,
source: binding.source,
section: binding.section,
databaseSecret: binding.identity.secretName,
databaseUrl: binding.url,
workspaceDir: binding.identity.workspaceDir
};
} catch (error) {
return {
status: "error",
plugin: input.plugin,
source: "remote",
section: "",
error: error instanceof Error ? error.message : "Unknown error"
};
}
}),
dbDoctor: builder.dbDoctor.handler(async ({ input, context }) => {
const deps = effect.Context.get(context["effect/context"], require_shared.BosDepsTag);
try {
if (!require_config.findConfigPath()) return {
status: "error",
plugin: input.plugin,
slug: "",
journalTable: "",
journalSchema: "",
diagnosis: "error",
localMigrationCount: 0,
appliedHashCount: 0,
expectedTables: [],
missingTables: [],
error: `${require_config.MISSING_CONFIG_MESSAGE} in current directory`
};
const binding = await effect.Effect.runPromise(deps.databaseBindings.forPluginKey(input.plugin));
const { diagnosePlugin } = await Promise.resolve().then(() => require("../cli/db-doctor.cjs"));
return {
status: "success",
...await diagnosePlugin(binding)
};
} catch (error) {
return {
status: "error",
plugin: input.plugin,
slug: "",
journalTable: "",
journalSchema: "",
diagnosis: "error",
localMigrationCount: 0,
appliedHashCount: 0,
expectedTables: [],
missingTables: [],
error: error instanceof Error ? error.message : "Unknown error"
};
}
}),
dbRepair: builder.dbRepair.handler(async ({ input, context }) => {
const deps = effect.Context.get(context["effect/context"], require_shared.BosDepsTag);
try {
if (!require_config.findConfigPath()) return {
status: "error",
message: require_config.MISSING_CONFIG_MESSAGE,
diagnosis: null,
error: "No config"
};
const binding = await effect.Effect.runPromise(deps.databaseBindings.forPluginKey(input.plugin));
const { repairPlugin } = await Promise.resolve().then(() => require("../cli/db-repair.cjs"));
const result = await repairPlugin(binding, input.mode ?? "history-reset", deps.drizzleKit);
return {
...result,
error: result.status === "error" ? result.message : void 0
};
} catch (error) {
return {
status: "error",
message: error instanceof Error ? error.message : "Unknown error",
diagnosis: null,
error: error instanceof Error ? error.message : "Unknown error"
};
}
})
};
}
//#endregion
exports.registerDb = registerDb;
//# sourceMappingURL=db.cjs.map