@@ -12,25 +12,29 @@ CREATE EXTENSION IF NOT EXISTS pgcrypto;
1212COMMENT ON EXTENSION pgcrypto IS ' cryptographic functions' ;
1313
1414
15- CREATE TYPE "StepType " AS ENUM (
16- ' assistant_message' ,
17- ' embedding' ,
18- ' llm' ,
19- ' retrieval' ,
20- ' rerank' ,
21- ' run' ,
22- ' system_message' ,
23- ' tool' ,
24- ' undefined' ,
25- ' user_message'
26- );
15+ DO $$ BEGIN
16+ IF to_regtype(' "StepType"' ) IS NULL THEN
17+ CREATE TYPE "StepType " AS ENUM (
18+ ' assistant_message' ,
19+ ' embedding' ,
20+ ' llm' ,
21+ ' retrieval' ,
22+ ' rerank' ,
23+ ' run' ,
24+ ' system_message' ,
25+ ' tool' ,
26+ ' undefined' ,
27+ ' user_message'
28+ );
29+ END IF;
30+ END $$;
2731
2832
2933SET default_tablespace = ' ' ;
3034SET default_table_access_method = heap;
3135
3236
33- CREATE TABLE "Element " (
37+ CREATE TABLE IF NOT EXISTS " Element" (
3438 id text DEFAULT gen_random_uuid() NOT NULL ,
3539 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
3640 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -50,7 +54,7 @@ CREATE TABLE "Element" (
5054);
5155
5256
53- CREATE TABLE "Feedback " (
57+ CREATE TABLE IF NOT EXISTS " Feedback" (
5458 id text DEFAULT gen_random_uuid() NOT NULL ,
5559 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
5660 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -61,7 +65,7 @@ CREATE TABLE "Feedback" (
6165);
6266
6367
64- CREATE TABLE "Step " (
68+ CREATE TABLE IF NOT EXISTS " Step" (
6569 id text DEFAULT gen_random_uuid() NOT NULL ,
6670 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
6771 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -79,7 +83,7 @@ CREATE TABLE "Step" (
7983);
8084
8185
82- CREATE TABLE "Thread " (
86+ CREATE TABLE IF NOT EXISTS " Thread" (
8387 id text DEFAULT gen_random_uuid() NOT NULL ,
8488 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
8589 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -91,7 +95,7 @@ CREATE TABLE "Thread" (
9195);
9296
9397
94- CREATE TABLE "User " (
98+ CREATE TABLE IF NOT EXISTS " User" (
9599 id text DEFAULT gen_random_uuid() NOT NULL ,
96100 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
97101 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -100,7 +104,7 @@ CREATE TABLE "User" (
100104);
101105
102106
103- CREATE TABLE _prisma_migrations (
107+ CREATE TABLE IF NOT EXISTS _prisma_migrations (
104108 id character varying (36 ) NOT NULL ,
105109 checksum character varying (64 ) NOT NULL ,
106110 finished_at timestamp with time zone ,
@@ -112,82 +116,130 @@ CREATE TABLE _prisma_migrations (
112116);
113117
114118
115- ALTER TABLE ONLY " Element"
116- ADD CONSTRAINT " Element_pkey" PRIMARY KEY (id);
119+ DO $$ BEGIN
120+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Element_pkey' AND contype = ' p' ) THEN
121+ ALTER TABLE ONLY " Element"
122+ ADD CONSTRAINT " Element_pkey" PRIMARY KEY (id);
123+ END IF;
124+ END $$;
117125
118- ALTER TABLE ONLY " Feedback"
119- ADD CONSTRAINT " Feedback_pkey" PRIMARY KEY (id);
126+ DO $$ BEGIN
127+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Feedback_pkey' AND contype = ' p' ) THEN
128+ ALTER TABLE ONLY " Feedback"
129+ ADD CONSTRAINT " Feedback_pkey" PRIMARY KEY (id);
130+ END IF;
131+ END $$;
120132
121- ALTER TABLE ONLY " Step"
122- ADD CONSTRAINT " Step_pkey" PRIMARY KEY (id);
133+ DO $$ BEGIN
134+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Step_pkey' AND contype = ' p' ) THEN
135+ ALTER TABLE ONLY " Step"
136+ ADD CONSTRAINT " Step_pkey" PRIMARY KEY (id);
137+ END IF;
138+ END $$;
123139
124- ALTER TABLE ONLY " Thread"
125- ADD CONSTRAINT " Thread_pkey" PRIMARY KEY (id);
140+ DO $$ BEGIN
141+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Thread_pkey' AND contype = ' p' ) THEN
142+ ALTER TABLE ONLY " Thread"
143+ ADD CONSTRAINT " Thread_pkey" PRIMARY KEY (id);
144+ END IF;
145+ END $$;
126146
127- ALTER TABLE ONLY " User"
128- ADD CONSTRAINT " User_pkey" PRIMARY KEY (id);
147+ DO $$ BEGIN
148+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' User_pkey' AND contype = ' p' ) THEN
149+ ALTER TABLE ONLY " User"
150+ ADD CONSTRAINT " User_pkey" PRIMARY KEY (id);
151+ END IF;
152+ END $$;
129153
130- ALTER TABLE ONLY _prisma_migrations
131- ADD CONSTRAINT _prisma_migrations_pkey PRIMARY KEY (id);
154+ DO $$ BEGIN
155+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' _prisma_migrations_pkey' AND contype = ' p' ) THEN
156+ ALTER TABLE ONLY _prisma_migrations
157+ ADD CONSTRAINT _prisma_migrations_pkey PRIMARY KEY (id);
158+ END IF;
159+ END $$;
132160
133161
134- CREATE INDEX "Element_stepId_idx " ON " Element" USING btree (" stepId" );
162+ CREATE INDEX IF NOT EXISTS " Element_stepId_idx" ON " Element" USING btree (" stepId" );
135163
136- CREATE INDEX "Element_threadId_idx " ON " Element" USING btree (" threadId" );
164+ CREATE INDEX IF NOT EXISTS " Element_threadId_idx" ON " Element" USING btree (" threadId" );
137165
138- CREATE INDEX "Feedback_createdAt_idx " ON " Feedback" USING btree (" createdAt" );
166+ CREATE INDEX IF NOT EXISTS " Feedback_createdAt_idx" ON " Feedback" USING btree (" createdAt" );
139167
140- CREATE INDEX "Feedback_name_idx " ON " Feedback" USING btree (name);
168+ CREATE INDEX IF NOT EXISTS " Feedback_name_idx" ON " Feedback" USING btree (name);
141169
142- CREATE INDEX "Feedback_name_value_idx " ON " Feedback" USING btree (name, value);
170+ CREATE INDEX IF NOT EXISTS " Feedback_name_value_idx" ON " Feedback" USING btree (name, value);
143171
144- CREATE INDEX "Feedback_stepId_idx " ON " Feedback" USING btree (" stepId" );
172+ CREATE INDEX IF NOT EXISTS " Feedback_stepId_idx" ON " Feedback" USING btree (" stepId" );
145173
146- CREATE INDEX "Feedback_value_idx " ON " Feedback" USING btree (value);
174+ CREATE INDEX IF NOT EXISTS " Feedback_value_idx" ON " Feedback" USING btree (value);
147175
148- CREATE INDEX "Step_createdAt_idx " ON " Step" USING btree (" createdAt" );
176+ CREATE INDEX IF NOT EXISTS " Step_createdAt_idx" ON " Step" USING btree (" createdAt" );
149177
150- CREATE INDEX "Step_endTime_idx " ON " Step" USING btree (" endTime" );
178+ CREATE INDEX IF NOT EXISTS " Step_endTime_idx" ON " Step" USING btree (" endTime" );
151179
152- CREATE INDEX "Step_name_idx " ON " Step" USING btree (name);
180+ CREATE INDEX IF NOT EXISTS " Step_name_idx" ON " Step" USING btree (name);
153181
154- CREATE INDEX "Step_parentId_idx " ON " Step" USING btree (" parentId" );
182+ CREATE INDEX IF NOT EXISTS " Step_parentId_idx" ON " Step" USING btree (" parentId" );
155183
156- CREATE INDEX "Step_startTime_idx " ON " Step" USING btree (" startTime" );
184+ CREATE INDEX IF NOT EXISTS " Step_startTime_idx" ON " Step" USING btree (" startTime" );
157185
158- CREATE INDEX "Step_threadId_idx " ON " Step" USING btree (" threadId" );
186+ CREATE INDEX IF NOT EXISTS " Step_threadId_idx" ON " Step" USING btree (" threadId" );
159187
160- CREATE INDEX "Step_threadId_startTime_endTime_idx " ON " Step" USING btree (" threadId" , " startTime" , " endTime" );
188+ CREATE INDEX IF NOT EXISTS " Step_threadId_startTime_endTime_idx" ON " Step" USING btree (" threadId" , " startTime" , " endTime" );
161189
162- CREATE INDEX "Step_type_idx " ON " Step" USING btree (type);
190+ CREATE INDEX IF NOT EXISTS " Step_type_idx" ON " Step" USING btree (type);
163191
164- CREATE INDEX "Thread_createdAt_idx " ON " Thread" USING btree (" createdAt" );
192+ CREATE INDEX IF NOT EXISTS " Thread_createdAt_idx" ON " Thread" USING btree (" createdAt" );
165193
166- CREATE INDEX "Thread_name_idx " ON " Thread" USING btree (name);
194+ CREATE INDEX IF NOT EXISTS " Thread_name_idx" ON " Thread" USING btree (name);
167195
168- CREATE INDEX "User_identifier_idx " ON " User" USING btree (identifier);
196+ CREATE INDEX IF NOT EXISTS " User_identifier_idx" ON " User" USING btree (identifier);
169197
170198
171- CREATE UNIQUE INDEX "User_identifier_key " ON " User" USING btree (identifier);
199+ CREATE UNIQUE INDEX IF NOT EXISTS " User_identifier_key" ON " User" USING btree (identifier);
172200
173201
174- ALTER TABLE ONLY " Element"
175- ADD CONSTRAINT " Element_stepId_fkey" FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
202+ DO $$ BEGIN
203+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Element_stepId_fkey' AND contype = ' f' ) THEN
204+ ALTER TABLE ONLY " Element"
205+ ADD CONSTRAINT " Element_stepId_fkey" FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
206+ END IF;
207+ END $$;
176208
177- ALTER TABLE ONLY " Element"
178- ADD CONSTRAINT " Element_threadId_fkey" FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
209+ DO $$ BEGIN
210+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Element_threadId_fkey' AND contype = ' f' ) THEN
211+ ALTER TABLE ONLY " Element"
212+ ADD CONSTRAINT " Element_threadId_fkey" FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
213+ END IF;
214+ END $$;
179215
180- ALTER TABLE ONLY " Feedback"
181- ADD CONSTRAINT " Feedback_stepId_fkey" FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE SET NULL ;
216+ DO $$ BEGIN
217+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Feedback_stepId_fkey' AND contype = ' f' ) THEN
218+ ALTER TABLE ONLY " Feedback"
219+ ADD CONSTRAINT " Feedback_stepId_fkey" FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE SET NULL ;
220+ END IF;
221+ END $$;
182222
183- ALTER TABLE ONLY " Step"
184- ADD CONSTRAINT " Step_parentId_fkey" FOREIGN KEY (" parentId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
223+ DO $$ BEGIN
224+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Step_parentId_fkey' AND contype = ' f' ) THEN
225+ ALTER TABLE ONLY " Step"
226+ ADD CONSTRAINT " Step_parentId_fkey" FOREIGN KEY (" parentId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
227+ END IF;
228+ END $$;
185229
186- ALTER TABLE ONLY " Step"
187- ADD CONSTRAINT " Step_threadId_fkey" FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
230+ DO $$ BEGIN
231+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Step_threadId_fkey' AND contype = ' f' ) THEN
232+ ALTER TABLE ONLY " Step"
233+ ADD CONSTRAINT " Step_threadId_fkey" FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
234+ END IF;
235+ END $$;
188236
189- ALTER TABLE ONLY " Thread"
190- ADD CONSTRAINT " Thread_userId_fkey" FOREIGN KEY (" userId" ) REFERENCES " User" (id) ON UPDATE CASCADE ON DELETE SET NULL ;
237+ DO $$ BEGIN
238+ IF NOT EXISTS (SELECT FROM pg_constraint WHERE conname = ' Thread_userId_fkey' AND contype = ' f' ) THEN
239+ ALTER TABLE ONLY " Thread"
240+ ADD CONSTRAINT " Thread_userId_fkey" FOREIGN KEY (" userId" ) REFERENCES " User" (id) ON UPDATE CASCADE ON DELETE SET NULL ;
241+ END IF;
242+ END $$;
191243
192244
193245--
0 commit comments