{"version":3,"file":"ops.cjs","names":["Context","Layer","Effect","DatabaseBindings","DrizzleKit"],"sources":["../../../src/services/db/ops.ts"],"sourcesContent":["import { Context, Effect, Layer } from \"effect\";\nimport type { DbDoctorResult, DbRepairResult, DbStudioResult } from \"../../contract\";\nimport { DatabaseBindings, DrizzleKit } from \"../../db/index\";\n\nexport class DbOpsService extends Context.Service<\n  DbOpsService,\n  {\n    studio: (plugin: string) => Effect.Effect<DbStudioResult, unknown>;\n    doctor: (plugin: string) => Effect.Effect<DbDoctorResult, unknown>;\n    repair: (\n      plugin: string,\n      mode: \"history-reset\" | \"recreate\",\n    ) => Effect.Effect<DbRepairResult, unknown>;\n  }\n>()(\"bos/DbOpsService\") {\n  static Live = Layer.effect(\n    DbOpsService,\n    Effect.map(Effect.all([DatabaseBindings, DrizzleKit]), ([bindings, drizzleKit]) => {\n      return DbOpsService.of({\n        studio: (plugin) =>\n          Effect.tryPromise({\n            try: async () => {\n              const binding = await Effect.runPromise(bindings.forPluginKey(plugin));\n              await Effect.runPromise(drizzleKit.studio(binding));\n\n              return {\n                status: \"success\" as const,\n                plugin: binding.key,\n                source: binding.source,\n                section: binding.section,\n                databaseSecret: binding.identity.secretName,\n                databaseUrl: binding.url,\n                workspaceDir: binding.identity.workspaceDir,\n              };\n            },\n            catch: (error) => ({\n              status: \"error\" as const,\n              plugin,\n              source: \"remote\" as const,\n              section: \"\",\n              error: error instanceof Error ? error.message : \"Unknown error\",\n            }),\n          }),\n\n        doctor: (plugin) =>\n          Effect.tryPromise({\n            try: async () => {\n              const binding = await Effect.runPromise(bindings.forPluginKey(plugin));\n\n              const { diagnosePlugin } = await import(\"./doctor\");\n              const report = await diagnosePlugin(binding);\n\n              return {\n                status: \"success\" as const,\n                ...report,\n              };\n            },\n            catch: (error) => ({\n              status: \"error\" as const,\n              plugin,\n              slug: \"\",\n              journalTable: \"\",\n              journalSchema: \"\",\n              diagnosis: \"error\" as const,\n              localMigrationCount: 0,\n              appliedHashCount: 0,\n              expectedTables: [] as string[],\n              missingTables: [] as string[],\n              error: error instanceof Error ? error.message : \"Unknown error\",\n            }),\n          }),\n\n        repair: (plugin, mode) =>\n          Effect.tryPromise({\n            try: async () => {\n              const binding = await Effect.runPromise(bindings.forPluginKey(plugin));\n\n              const { repairPlugin } = await import(\"./repair\");\n              const result = await repairPlugin(binding, mode, drizzleKit);\n\n              return {\n                ...result,\n                error: result.status === \"error\" ? result.message : undefined,\n              };\n            },\n            catch: (error) => ({\n              status: \"error\" as const,\n              message: error instanceof Error ? error.message : \"Unknown error\",\n              diagnosis: null,\n              error: error instanceof Error ? error.message : \"Unknown error\",\n            }),\n          }),\n      });\n    }),\n  );\n}\n"],"mappings":";;;;;AAIA,IAAa,eAAb,MAAa,qBAAqBA,eAAQ,QAUxC,CAAC,CAAC,kBAAkB,CAAC,CAAC;CACtB,OAAO,OAAOC,aAAM,OAClB,cACAC,cAAO,IAAIA,cAAO,IAAI,CAACC,mCAAkBC,8BAAU,CAAC,IAAI,CAAC,UAAU,gBAAgB;EACjF,OAAO,aAAa,GAAG;GACrB,SAAS,WACPF,cAAO,WAAW;IAChB,KAAK,YAAY;KACf,MAAM,UAAU,MAAMA,cAAO,WAAW,SAAS,aAAa,MAAM,CAAC;KACrE,MAAMA,cAAO,WAAW,WAAW,OAAO,OAAO,CAAC;KAElD,OAAO;MACL,QAAQ;MACR,QAAQ,QAAQ;MAChB,QAAQ,QAAQ;MAChB,SAAS,QAAQ;MACjB,gBAAgB,QAAQ,SAAS;MACjC,aAAa,QAAQ;MACrB,cAAc,QAAQ,SAAS;KACjC;IACF;IACA,QAAQ,WAAW;KACjB,QAAQ;KACR;KACA,QAAQ;KACR,SAAS;KACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU;IAClD;GACF,CAAC;GAEH,SAAS,WACPA,cAAO,WAAW;IAChB,KAAK,YAAY;KACf,MAAM,UAAU,MAAMA,cAAO,WAAW,SAAS,aAAa,MAAM,CAAC;KAErE,MAAM,EAAE,mBAAmB,2CAAM;KAGjC,OAAO;MACL,QAAQ;MACR,GAAG,MAJgB,eAAe,OAAO;KAK3C;IACF;IACA,QAAQ,WAAW;KACjB,QAAQ;KACR;KACA,MAAM;KACN,cAAc;KACd,eAAe;KACf,WAAW;KACX,qBAAqB;KACrB,kBAAkB;KAClB,gBAAgB,CAAC;KACjB,eAAe,CAAC;KAChB,OAAO,iBAAiB,QAAQ,MAAM,UAAU;IAClD;GACF,CAAC;GAEH,SAAS,QAAQ,SACfA,cAAO,WAAW;IAChB,KAAK,YAAY;KACf,MAAM,UAAU,MAAMA,cAAO,WAAW,SAAS,aAAa,MAAM,CAAC;KAErE,MAAM,EAAE,iBAAiB,2CAAM;KAC/B,MAAM,SAAS,MAAM,aAAa,SAAS,MAAM,UAAU;KAE3D,OAAO;MACL,GAAG;MACH,OAAO,OAAO,WAAW,UAAU,OAAO,UAAU;KACtD;IACF;IACA,QAAQ,WAAW;KACjB,QAAQ;KACR,SAAS,iBAAiB,QAAQ,MAAM,UAAU;KAClD,WAAW;KACX,OAAO,iBAAiB,QAAQ,MAAM,UAAU;IAClD;GACF,CAAC;EACL,CAAC;CACH,CAAC,CACH;AACF"}