CREATE TABLE "property_floors" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "property_id" uuid NOT NULL, "label" varchar(32) NOT NULL, "name" varchar(255), "order" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL ); --> statement-breakpoint CREATE TABLE "property_rooms" ( "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL, "property_id" uuid NOT NULL, "floor_id" uuid, "name" varchar(255) NOT NULL, "notes" text, "order" integer DEFAULT 0 NOT NULL, "created_at" timestamp with time zone DEFAULT now() NOT NULL, "updated_at" timestamp with time zone DEFAULT now() NOT NULL, "deleted_at" timestamp with time zone ); --> statement-breakpoint ALTER TABLE "assets" ADD COLUMN "current_room_id" uuid;--> statement-breakpoint ALTER TABLE "property_floors" ADD CONSTRAINT "property_floors_property_id_properties_id_fk" FOREIGN KEY ("property_id") REFERENCES "public"."properties"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "property_rooms" ADD CONSTRAINT "property_rooms_property_id_properties_id_fk" FOREIGN KEY ("property_id") REFERENCES "public"."properties"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint ALTER TABLE "property_rooms" ADD CONSTRAINT "property_rooms_floor_id_property_floors_id_fk" FOREIGN KEY ("floor_id") REFERENCES "public"."property_floors"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint CREATE INDEX "floors_by_property" ON "property_floors" USING btree ("property_id","order");--> statement-breakpoint CREATE UNIQUE INDEX "floors_property_label_uq" ON "property_floors" USING btree ("property_id","label");--> statement-breakpoint CREATE INDEX "rooms_by_property" ON "property_rooms" USING btree ("property_id","order");--> statement-breakpoint CREATE INDEX "rooms_by_floor" ON "property_rooms" USING btree ("floor_id");--> statement-breakpoint CREATE UNIQUE INDEX "rooms_floor_name_uq" ON "property_rooms" USING btree ("property_id","floor_id","name");--> statement-breakpoint ALTER TABLE "assets" ADD CONSTRAINT "assets_current_room_id_property_rooms_id_fk" FOREIGN KEY ("current_room_id") REFERENCES "public"."property_rooms"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint CREATE INDEX "assets_by_room" ON "assets" USING btree ("current_room_id");