community presets draft

This commit is contained in:
wass08
2026-03-04 13:18:18 +01:00
parent c26c7da091
commit a86609aa5c
13 changed files with 2067 additions and 2 deletions
@@ -0,0 +1,17 @@
CREATE TABLE "presets" (
"id" text PRIMARY KEY NOT NULL,
"type" text NOT NULL,
"name" text NOT NULL,
"data" jsonb NOT NULL,
"thumbnail_url" text,
"user_id" text,
"is_community" boolean DEFAULT false NOT NULL,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
ALTER TABLE "presets" ENABLE ROW LEVEL SECURITY;--> statement-breakpoint
ALTER TABLE "presets" ADD CONSTRAINT "presets_user_id_auth_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."auth_users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
CREATE INDEX "presets_type_idx" ON "presets" USING btree ("type");--> statement-breakpoint
CREATE INDEX "presets_user_id_idx" ON "presets" USING btree ("user_id");--> statement-breakpoint
CREATE INDEX "presets_is_community_idx" ON "presets" USING btree ("is_community");
@@ -0,0 +1,58 @@
-- Presets table: stores door/window presets for community and user use
CREATE TABLE "presets" (
"id" text PRIMARY KEY NOT NULL,
"type" text NOT NULL, -- 'door' | 'window'
"name" text NOT NULL,
"data" jsonb NOT NULL,
"thumbnail_url" text,
"user_id" text REFERENCES "auth_users"("id") ON DELETE CASCADE,
"is_community" boolean NOT NULL DEFAULT false,
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
"updated_at" timestamp with time zone DEFAULT now() NOT NULL
);
--> statement-breakpoint
CREATE INDEX "presets_type_idx" ON "presets"("type");
--> statement-breakpoint
CREATE INDEX "presets_user_id_idx" ON "presets"("user_id");
--> statement-breakpoint
CREATE INDEX "presets_is_community_idx" ON "presets"("is_community");
--> statement-breakpoint
ALTER TABLE "presets" ENABLE ROW LEVEL SECURITY;
--> statement-breakpoint
-- Anyone can read community presets
CREATE POLICY "Anyone can view community presets"
ON "presets" FOR SELECT
USING ("is_community" = true);
--> statement-breakpoint
-- Users can view their own presets
CREATE POLICY "Users can view own presets"
ON "presets" FOR SELECT
USING ("user_id" = current_setting('app.user_id', true)::TEXT);
--> statement-breakpoint
-- Users can insert their own presets
CREATE POLICY "Users can insert own presets"
ON "presets" FOR INSERT
WITH CHECK ("user_id" = current_setting('app.user_id', true)::TEXT AND "is_community" = false);
--> statement-breakpoint
-- Users can update their own presets
CREATE POLICY "Users can update own presets"
ON "presets" FOR UPDATE
USING ("user_id" = current_setting('app.user_id', true)::TEXT AND "is_community" = false);
--> statement-breakpoint
-- Users can delete their own presets
CREATE POLICY "Users can delete own presets"
ON "presets" FOR DELETE
USING ("user_id" = current_setting('app.user_id', true)::TEXT AND "is_community" = false);
--> statement-breakpoint
CREATE TRIGGER "update_presets_updated_at"
BEFORE UPDATE ON "presets"
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
File diff suppressed because it is too large Load Diff
+7
View File
@@ -71,6 +71,13 @@
"when": 1772573729680,
"tag": "20260303213529_marvelous_mikhail_rasputin",
"breakpoints": true
},
{
"idx": 10,
"version": "7",
"when": 1772626520793,
"tag": "20260304121520_daffy_gideon",
"breakpoints": true
}
]
}