community presets draft
This commit is contained in:
@@ -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
@@ -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
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user