/** * Overlay store schema — editorial overrides keyed by * `(entity_module, entity_id, field_path, locale, audience, market)`. * * One overlay table serves every vertical. Rows hold the override value plus * provenance about *which* writer (admin UI / CMS plugin / bulk import / AI / * external API) produced the override, for audit and revert workflows. * * See `docs/architecture/catalog-architecture.md` §5.2 for the full design. */ import type { Visibility } from "../contract.js"; /** * Audit identifier indicating where an overlay row came from. Discriminated * by `kind`; consumers may pattern-match for revert / filter workflows. */ export type OverlayOrigin = { kind: "admin-ui"; user_id: string; } | { kind: "cms"; provider: string; cms_doc_id: string; } | { kind: "bulk-import"; batch_id: string; } | { kind: "ai-generated"; model: string; prompt_hash?: string; } | { kind: "external-api"; api_key_id: string; }; /** * Sentinel value used in `locale`, `audience`, and `market` columns to mark * "no specific scope" — the broadest fallback in the resolver chain. */ export declare const OVERLAY_DEFAULT_SCOPE = "default"; /** * `catalog_overlay` — single table holding editorial overrides for every * vertical. Composite uniqueness on `(entity_module, entity_id, field_path, * locale, audience, market)` prevents duplicate overlays for the same scope. */ export declare const catalogOverlayTable: import("drizzle-orm/pg-core").PgTableWithColumns<{ name: "catalog_overlay"; schema: undefined; columns: { id: import("drizzle-orm/pg-core").PgColumn<{ name: string; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: true; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; entity_module: import("drizzle-orm/pg-core").PgColumn<{ name: "entity_module"; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; entity_id: import("drizzle-orm/pg-core").PgColumn<{ name: "entity_id"; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; field_path: import("drizzle-orm/pg-core").PgColumn<{ name: "field_path"; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; locale: import("drizzle-orm/pg-core").PgColumn<{ name: "locale"; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; audience: import("drizzle-orm/pg-core").PgColumn<{ name: "audience"; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: Visibility | "default"; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: Visibility | "default"; }>; market: import("drizzle-orm/pg-core").PgColumn<{ name: "market"; tableName: "catalog_overlay"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; value: import("drizzle-orm/pg-core").PgColumn<{ name: "value"; tableName: "catalog_overlay"; dataType: "json"; columnType: "PgJsonb"; data: unknown; driverParam: unknown; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; origin: import("drizzle-orm/pg-core").PgColumn<{ name: "origin"; tableName: "catalog_overlay"; dataType: "json"; columnType: "PgJsonb"; data: OverlayOrigin; driverParam: unknown; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, { $type: OverlayOrigin; }>; deleted_at: import("drizzle-orm/pg-core").PgColumn<{ name: "deleted_at"; tableName: "catalog_overlay"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; created_at: import("drizzle-orm/pg-core").PgColumn<{ name: "created_at"; tableName: "catalog_overlay"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; updated_at: import("drizzle-orm/pg-core").PgColumn<{ name: "updated_at"; tableName: "catalog_overlay"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; export type InsertCatalogOverlay = typeof catalogOverlayTable.$inferInsert; export type SelectCatalogOverlay = typeof catalogOverlayTable.$inferSelect; /** * Foreign-key column helper for tables that reference an overlay row. * Rare — consumers typically query overlays by entity, not by FK. */ export declare const overlayIdRef: (columnName: string) => import("drizzle-orm/pg-core").PgTextBuilderInitial; //# sourceMappingURL=schema.d.ts.map