big overhaul! now we use locations that can have finds. multiple finds can be at the same location, so users can register the same place.
48 lines
1.5 KiB
SQL
48 lines
1.5 KiB
SQL
-- Create location table
|
|
CREATE TABLE "location" (
|
|
"id" text PRIMARY KEY NOT NULL,
|
|
"user_id" text NOT NULL,
|
|
"latitude" text NOT NULL,
|
|
"longitude" text NOT NULL,
|
|
"created_at" timestamp with time zone DEFAULT now() NOT NULL
|
|
);
|
|
--> statement-breakpoint
|
|
|
|
-- Add foreign key constraint for location table
|
|
ALTER TABLE "location" ADD CONSTRAINT "location_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
|
|
--> statement-breakpoint
|
|
|
|
-- Migrate existing find data to location table and update find table
|
|
-- First, create locations from existing finds
|
|
INSERT INTO "location" ("id", "user_id", "latitude", "longitude", "created_at")
|
|
SELECT
|
|
'loc_' || "id" as "id",
|
|
"user_id",
|
|
"latitude",
|
|
"longitude",
|
|
"created_at"
|
|
FROM "find";
|
|
--> statement-breakpoint
|
|
|
|
-- Add location_id column to find table
|
|
ALTER TABLE "find" ADD COLUMN "location_id" text;
|
|
--> statement-breakpoint
|
|
|
|
-- Update find table to reference the new location entries
|
|
UPDATE "find"
|
|
SET "location_id" = 'loc_' || "id";
|
|
--> statement-breakpoint
|
|
|
|
-- Make location_id NOT NULL
|
|
ALTER TABLE "find" ALTER COLUMN "location_id" SET NOT NULL;
|
|
--> statement-breakpoint
|
|
|
|
-- Add foreign key constraint
|
|
ALTER TABLE "find" ADD CONSTRAINT "find_location_id_location_id_fk" FOREIGN KEY ("location_id") REFERENCES "public"."location"("id") ON DELETE cascade ON UPDATE no action;
|
|
--> statement-breakpoint
|
|
|
|
-- Drop the latitude and longitude columns from find table
|
|
ALTER TABLE "find" DROP COLUMN "latitude";
|
|
--> statement-breakpoint
|
|
ALTER TABLE "find" DROP COLUMN "longitude";
|