diff --git a/src/databases/officer_db/package.json b/src/databases/officer_db/package.json index e02a0d67..7bd7e84f 100644 --- a/src/databases/officer_db/package.json +++ b/src/databases/officer_db/package.json @@ -9,7 +9,7 @@ "./db": "./src/db.ts", "./schema": "./src/schema.ts", "./secret-store": "./src/secret-store.ts", - "./*": "./src/*" + "./*": "./src/*.ts" }, "scripts": { "generate": "drizzle-kit generate --config=drizzle.config.ts", diff --git a/src/databases/officer_db/src/types.ts b/src/databases/officer_db/src/types.ts index 7ad8cd51..a0880f6d 100644 --- a/src/databases/officer_db/src/types.ts +++ b/src/databases/officer_db/src/types.ts @@ -1,5 +1,22 @@ import type * as Schema from './schema'; +// ── Plugin tables come from their OWN schema, not from the aggregator ── +// +// `./schema` is drizzle-kit's view of the database — what `bun db:push` reads — so a +// table that belongs to a plugin is commented out there and genuinely absent from the +// live database. That is the point of the core/plugin split. +// +// Inferring a TYPE from it, though, has nothing to do with whether the table exists: +// these describe rows that the plugin's own code passes around, and that code compiles +// whether or not the plugin is installed. Reading them off the aggregator coupled the +// two, so commenting a plugin out of `schema.ts` broke the build of code that was +// already unreachable. +// +// Same move the query modules made when the split landed — import the feature's schema +// directly — which is what lets a table leave the aggregator without breaking anything. +import type * as EmailSchema from './email/schema'; +import type * as NotifySchema from './notify/schema'; + // ── Auth ── export type UserSelect = typeof Schema.users.$inferSelect; @@ -47,8 +64,8 @@ export type ScreenInsert = typeof Schema.screens.$inferInsert; // ── Email ── -export type EmailAccountSelect = typeof Schema.emailAccounts.$inferSelect; -export type EmailAccountInsert = typeof Schema.emailAccounts.$inferInsert; +export type EmailAccountSelect = typeof EmailSchema.emailAccounts.$inferSelect; +export type EmailAccountInsert = typeof EmailSchema.emailAccounts.$inferInsert; // ── Server ── @@ -64,8 +81,8 @@ export type PipelineJobSelect = typeof Schema.pipelineJobs.$inferSelect; export type PipelineJobInsert = typeof Schema.pipelineJobs.$inferInsert; // Notifications -export type PushDeviceSelect = typeof Schema.pushDevices.$inferSelect; -export type PushDeviceInsert = typeof Schema.pushDevices.$inferInsert; +export type PushDeviceSelect = typeof NotifySchema.pushDevices.$inferSelect; +export type PushDeviceInsert = typeof NotifySchema.pushDevices.$inferInsert; // ── API keys ──