@@ -12,56 +12,55 @@ 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+
38+ CREATE TABLE IF NOT EXISTS " User" (
3439 id text DEFAULT gen_random_uuid() NOT NULL ,
3540 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
3641 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
37- " threadId" text ,
38- " stepId" text NOT NULL ,
3942 metadata jsonb NOT NULL ,
40- mime text ,
41- name text NOT NULL ,
42- " objectKey" text ,
43- url text ,
44- " chainlitKey" text ,
45- display text ,
46- size text ,
47- language text ,
48- page integer ,
49- props jsonb
43+ identifier text NOT NULL ,
44+ PRIMARY KEY (id),
45+ UNIQUE (identifier)
5046);
5147
5248
53- CREATE TABLE " Feedback " (
49+ CREATE TABLE IF NOT EXISTS " Thread " (
5450 id text DEFAULT gen_random_uuid() NOT NULL ,
5551 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
5652 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
57- " stepId" text ,
58- name text NOT NULL ,
59- value double precision NOT NULL ,
60- comment text
53+ " deletedAt" timestamp (3 ) without time zone ,
54+ name text ,
55+ metadata jsonb NOT NULL ,
56+ " userId" text ,
57+ tags text [] DEFAULT ARRAY[]::text [],
58+ PRIMARY KEY (id),
59+ FOREIGN KEY (" userId" ) REFERENCES " User" (id) ON UPDATE CASCADE ON DELETE SET NULL
6160);
6261
6362
64- CREATE TABLE "Step " (
63+ CREATE TABLE IF NOT EXISTS " Step" (
6564 id text DEFAULT gen_random_uuid() NOT NULL ,
6665 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
6766 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
@@ -75,119 +74,97 @@ CREATE TABLE "Step" (
7574 " showInput" text DEFAULT ' json' ::text ,
7675 " isError" boolean DEFAULT false,
7776 " startTime" timestamp (3 ) without time zone NOT NULL ,
78- " endTime" timestamp (3 ) without time zone NOT NULL
77+ " endTime" timestamp (3 ) without time zone NOT NULL ,
78+ PRIMARY KEY (id),
79+ FOREIGN KEY (" parentId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ,
80+ FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE
7981);
8082
8183
82- CREATE TABLE " Thread " (
84+ CREATE TABLE IF NOT EXISTS " Element " (
8385 id text DEFAULT gen_random_uuid() NOT NULL ,
8486 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
8587 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
86- " deletedAt " timestamp ( 3 ) without time zone ,
87- name text ,
88+ " threadId " text ,
89+ " stepId " text NOT NULL ,
8890 metadata jsonb NOT NULL ,
89- " userId" text ,
90- tags text [] DEFAULT ARRAY[]::text []
91+ mime text ,
92+ name text NOT NULL ,
93+ " objectKey" text ,
94+ url text ,
95+ " chainlitKey" text ,
96+ display text ,
97+ size text ,
98+ language text ,
99+ page integer ,
100+ props jsonb,
101+ PRIMARY KEY (id),
102+ FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ,
103+ FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE
91104);
92105
93106
94- CREATE TABLE " User " (
107+ CREATE TABLE IF NOT EXISTS " Feedback " (
95108 id text DEFAULT gen_random_uuid() NOT NULL ,
96109 " createdAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
97110 " updatedAt" timestamp (3 ) without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL ,
98- metadata jsonb NOT NULL ,
99- identifier text NOT NULL
111+ " stepId" text ,
112+ name text NOT NULL ,
113+ value double precision NOT NULL ,
114+ comment text ,
115+ PRIMARY KEY (id),
116+ FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE SET NULL
100117);
101118
102119
103- CREATE TABLE _prisma_migrations (
120+ CREATE TABLE IF NOT EXISTS _prisma_migrations (
104121 id character varying (36 ) NOT NULL ,
105122 checksum character varying (64 ) NOT NULL ,
106123 finished_at timestamp with time zone ,
107124 migration_name character varying (255 ) NOT NULL ,
108125 logs text ,
109126 rolled_back_at timestamp with time zone ,
110127 started_at timestamp with time zone DEFAULT now() NOT NULL ,
111- applied_steps_count integer DEFAULT 0 NOT NULL
128+ applied_steps_count integer DEFAULT 0 NOT NULL ,
129+ PRIMARY KEY (id)
112130);
113131
114132
115- ALTER TABLE ONLY " Element"
116- ADD CONSTRAINT " Element_pkey" PRIMARY KEY (id);
117-
118- ALTER TABLE ONLY " Feedback"
119- ADD CONSTRAINT " Feedback_pkey" PRIMARY KEY (id);
120-
121- ALTER TABLE ONLY " Step"
122- ADD CONSTRAINT " Step_pkey" PRIMARY KEY (id);
123-
124- ALTER TABLE ONLY " Thread"
125- ADD CONSTRAINT " Thread_pkey" PRIMARY KEY (id);
126-
127- ALTER TABLE ONLY " User"
128- ADD CONSTRAINT " User_pkey" PRIMARY KEY (id);
129-
130- ALTER TABLE ONLY _prisma_migrations
131- ADD CONSTRAINT _prisma_migrations_pkey PRIMARY KEY (id);
132-
133-
134- CREATE INDEX "Element_stepId_idx " ON " Element" USING btree (" stepId" );
135-
136- CREATE INDEX "Element_threadId_idx " ON " Element" USING btree (" threadId" );
137-
138- CREATE INDEX "Feedback_createdAt_idx " ON " Feedback" USING btree (" createdAt" );
139-
140- CREATE INDEX "Feedback_name_idx " ON " Feedback" USING btree (name);
141-
142- CREATE INDEX "Feedback_name_value_idx " ON " Feedback" USING btree (name, value);
143-
144- CREATE INDEX "Feedback_stepId_idx " ON " Feedback" USING btree (" stepId" );
145-
146- CREATE INDEX "Feedback_value_idx " ON " Feedback" USING btree (value);
147-
148- CREATE INDEX "Step_createdAt_idx " ON " Step" USING btree (" createdAt" );
149-
150- CREATE INDEX "Step_endTime_idx " ON " Step" USING btree (" endTime" );
151-
152- CREATE INDEX "Step_name_idx " ON " Step" USING btree (name);
133+ CREATE INDEX IF NOT EXISTS " Element_stepId_idx" ON " Element" USING btree (" stepId" );
153134
154- CREATE INDEX " Step_parentId_idx " ON " Step " USING btree (" parentId " );
135+ CREATE INDEX IF NOT EXISTS " Element_threadId_idx " ON " Element " USING btree (" threadId " );
155136
156- CREATE INDEX " Step_startTime_idx " ON " Step " USING btree (" startTime " );
137+ CREATE INDEX IF NOT EXISTS " Feedback_createdAt_idx " ON " Feedback " USING btree (" createdAt " );
157138
158- CREATE INDEX " Step_threadId_idx " ON " Step " USING btree (" threadId " );
139+ CREATE INDEX IF NOT EXISTS " Feedback_name_idx " ON " Feedback " USING btree (name );
159140
160- CREATE INDEX " Step_threadId_startTime_endTime_idx " ON " Step " USING btree (" threadId " , " startTime " , " endTime " );
141+ CREATE INDEX IF NOT EXISTS " Feedback_name_value_idx " ON " Feedback " USING btree (name, value );
161142
162- CREATE INDEX " Step_type_idx " ON " Step " USING btree (type );
143+ CREATE INDEX IF NOT EXISTS " Feedback_stepId_idx " ON " Feedback " USING btree (" stepId " );
163144
164- CREATE INDEX " Thread_createdAt_idx " ON " Thread " USING btree (" createdAt " );
145+ CREATE INDEX IF NOT EXISTS " Feedback_value_idx " ON " Feedback " USING btree (value );
165146
166- CREATE INDEX " Thread_name_idx " ON " Thread " USING btree (name );
147+ CREATE INDEX IF NOT EXISTS " Step_createdAt_idx " ON " Step " USING btree (" createdAt " );
167148
168- CREATE INDEX " User_identifier_idx " ON " User " USING btree (identifier );
149+ CREATE INDEX IF NOT EXISTS " Step_endTime_idx " ON " Step " USING btree (" endTime " );
169150
151+ CREATE INDEX IF NOT EXISTS " Step_name_idx" ON " Step" USING btree (name);
170152
171- CREATE UNIQUE INDEX " User_identifier_key " ON " User " USING btree (identifier );
153+ CREATE INDEX IF NOT EXISTS " Step_parentId_idx " ON " Step " USING btree (" parentId " );
172154
155+ CREATE INDEX IF NOT EXISTS " Step_startTime_idx" ON " Step" USING btree (" startTime" );
173156
174- ALTER TABLE ONLY " Element"
175- ADD CONSTRAINT " Element_stepId_fkey" FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
157+ CREATE INDEX IF NOT EXISTS " Step_threadId_idx" ON " Step" USING btree (" threadId" );
176158
177- ALTER TABLE ONLY " Element"
178- ADD CONSTRAINT " Element_threadId_fkey" FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
159+ CREATE INDEX IF NOT EXISTS " Step_threadId_startTime_endTime_idx" ON " Step" USING btree (" threadId" , " startTime" , " endTime" );
179160
180- ALTER TABLE ONLY " Feedback"
181- ADD CONSTRAINT " Feedback_stepId_fkey" FOREIGN KEY (" stepId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE SET NULL ;
161+ CREATE INDEX IF NOT EXISTS " Step_type_idx" ON " Step" USING btree (type);
182162
183- ALTER TABLE ONLY " Step"
184- ADD CONSTRAINT " Step_parentId_fkey" FOREIGN KEY (" parentId" ) REFERENCES " Step" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
163+ CREATE INDEX IF NOT EXISTS " Thread_createdAt_idx" ON " Thread" USING btree (" createdAt" );
185164
186- ALTER TABLE ONLY " Step"
187- ADD CONSTRAINT " Step_threadId_fkey" FOREIGN KEY (" threadId" ) REFERENCES " Thread" (id) ON UPDATE CASCADE ON DELETE CASCADE ;
165+ CREATE INDEX IF NOT EXISTS " Thread_name_idx" ON " Thread" USING btree (name);
188166
189- ALTER TABLE ONLY " Thread"
190- ADD CONSTRAINT " Thread_userId_fkey" FOREIGN KEY (" userId" ) REFERENCES " User" (id) ON UPDATE CASCADE ON DELETE SET NULL ;
167+ CREATE INDEX IF NOT EXISTS " User_identifier_idx" ON " User" USING btree (identifier);
191168
192169
193170--
0 commit comments