UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

107 lines (105 loc) • 3.25 kB
import { MISSING_CONFIG_MESSAGE, findConfigPath } from "../config.mjs"; import { BosDepsTag } from "./shared.mjs"; import { Context, Effect } from "effect"; //#region src/commands/db.ts function registerDb(builder) { return { dbStudio: builder.dbStudio.handler(async ({ input, context }) => { const deps = Context.get(context["effect/context"], BosDepsTag); if (!findConfigPath()) return { status: "error", plugin: input.plugin, source: "remote", section: "", error: `${MISSING_CONFIG_MESSAGE} in current directory` }; try { const binding = await Effect.runPromise(deps.databaseBindings.forPluginKey(input.plugin)); await 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 = Context.get(context["effect/context"], BosDepsTag); try { if (!findConfigPath()) return { status: "error", plugin: input.plugin, slug: "", journalTable: "", journalSchema: "", diagnosis: "error", localMigrationCount: 0, appliedHashCount: 0, expectedTables: [], missingTables: [], error: `${MISSING_CONFIG_MESSAGE} in current directory` }; const binding = await Effect.runPromise(deps.databaseBindings.forPluginKey(input.plugin)); const { diagnosePlugin } = await import("../cli/db-doctor.mjs"); 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 = Context.get(context["effect/context"], BosDepsTag); try { if (!findConfigPath()) return { status: "error", message: MISSING_CONFIG_MESSAGE, diagnosis: null, error: "No config" }; const binding = await Effect.runPromise(deps.databaseBindings.forPluginKey(input.plugin)); const { repairPlugin } = await import("../cli/db-repair.mjs"); 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 export { registerDb }; //# sourceMappingURL=db.mjs.map