From 7e9dc88a49e688d2ab36c804d102eaec2b0d10f1 Mon Sep 17 00:00:00 2001 From: Adrian Bonpin Date: Sat, 25 Apr 2026 18:20:58 +0800 Subject: [PATCH] feat(schema): add presetSettings join table --- lib/db/schema/presetSettings.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/db/schema/presetSettings.ts diff --git a/lib/db/schema/presetSettings.ts b/lib/db/schema/presetSettings.ts new file mode 100644 index 0000000..dcfdbba --- /dev/null +++ b/lib/db/schema/presetSettings.ts @@ -0,0 +1,25 @@ +import { jsonb, pgTable, text, timestamp, unique } from "drizzle-orm/pg-core" +import { communityPresets } from "./communityPresets" +import { settingDefinitions } from "./settingDefinitions" + +export const presetSettings = pgTable( + "preset_settings", + { + id: text("id") + .primaryKey() + .$defaultFn(() => crypto.randomUUID()), + presetId: text("preset_id") + .notNull() + .references(() => communityPresets.id, { onDelete: "cascade" }), + settingDefinitionId: text("setting_definition_id") + .notNull() + .references(() => settingDefinitions.id, { onDelete: "cascade" }), + // Value stored as JSON — boolean for toggle, string for select, + // number for range/number + value: jsonb("value").notNull().$type(), + createdAt: timestamp("created_at").defaultNow().notNull(), + }, + (table) => [ + unique("preset_setting_unique").on(table.presetId, table.settingDefinitionId), + ], +)