Skip to content

Commit 8f4872e

Browse files
committed
update db schema
1 parent de8df94 commit 8f4872e

File tree

6 files changed

+4180
-0
lines changed

6 files changed

+4180
-0
lines changed

docs/developer/database-schema.dbml

+3
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ table rag_eval_evaluation_records {
404404
table agents_to_sessions {
405405
agent_id text [not null]
406406
session_id text [not null]
407+
user_id text [not null]
407408

408409
indexes {
409410
(agent_id, session_id) [pk]
@@ -414,6 +415,7 @@ table file_chunks {
414415
file_id varchar
415416
chunk_id uuid
416417
created_at "timestamp with time zone" [not null, default: `now()`]
418+
user_id text [not null]
417419

418420
indexes {
419421
(file_id, chunk_id) [pk]
@@ -423,6 +425,7 @@ table file_chunks {
423425
table files_to_sessions {
424426
file_id text [not null]
425427
session_id text [not null]
428+
user_id text [not null]
426429

427430
indexes {
428431
(file_id, session_id) [pk]

src/database/client/migrations.json

+24
Original file line numberDiff line numberDiff line change
@@ -323,5 +323,29 @@
323323
"bps": true,
324324
"folderMillis": 1741844738677,
325325
"hash": "2a7a98be2e49361391444d6fabf3fb5db0bcb6a65e5540e9c3d426ceeb1f7f3a"
326+
},
327+
{
328+
"sql": [
329+
"-- Simplified user_id migration script\n-- Contains three basic steps\n\nBEGIN;",
330+
"\n\n-- Step 1: Add nullable user_id columns\nALTER TABLE \"agents_to_sessions\" ADD COLUMN IF NOT EXISTS \"user_id\" text;",
331+
"\nALTER TABLE \"file_chunks\" ADD COLUMN IF NOT EXISTS \"user_id\" text;",
332+
"\nALTER TABLE \"files_to_sessions\" ADD COLUMN IF NOT EXISTS \"user_id\" text;",
333+
"\n\n-- Step 2: Populate user_id fields\n-- Populate user_id for agents_to_sessions\nUPDATE \"agents_to_sessions\" AS ats\nSET \"user_id\" = a.\"user_id\"\nFROM \"agents\" AS a\nWHERE ats.\"agent_id\" = a.\"id\";",
334+
"\n\n-- Populate user_id for file_chunks\nUPDATE \"file_chunks\" AS fc\nSET \"user_id\" = f.\"user_id\"\nFROM \"files\" AS f\nWHERE fc.\"file_id\" = f.\"id\";",
335+
"\n\n-- Populate user_id for files_to_sessions\nUPDATE \"files_to_sessions\" AS fts\nSET \"user_id\" = f.\"user_id\"\nFROM \"files\" AS f\nWHERE fts.\"file_id\" = f.\"id\";",
336+
"\n\n-- Get user_id from sessions table (for handling potential NULL values)\nUPDATE \"files_to_sessions\" AS fts\nSET \"user_id\" = s.\"user_id\"\nFROM \"sessions\" AS s\nWHERE fts.\"session_id\" = s.\"id\" AND fts.\"user_id\" IS NULL;",
337+
"\n\nUPDATE \"agents_to_sessions\" AS ats\nSET \"user_id\" = s.\"user_id\"\nFROM \"sessions\" AS s\nWHERE ats.\"session_id\" = s.\"id\" AND ats.\"user_id\" IS NULL;",
338+
"\n\n-- Step 3: Add NOT NULL constraints and foreign keys\nALTER TABLE \"agents_to_sessions\" ALTER COLUMN \"user_id\" SET NOT NULL;",
339+
"\nALTER TABLE \"file_chunks\" ALTER COLUMN \"user_id\" SET NOT NULL;",
340+
"\nALTER TABLE \"files_to_sessions\" ALTER COLUMN \"user_id\" SET NOT NULL;",
341+
"\n\nALTER TABLE \"agents_to_sessions\"\n ADD CONSTRAINT \"agents_to_sessions_user_id_users_id_fk\"\n FOREIGN KEY (\"user_id\") REFERENCES \"public\".\"users\"(\"id\")\n ON DELETE CASCADE ON UPDATE NO ACTION;",
342+
"\n\nALTER TABLE \"file_chunks\"\n ADD CONSTRAINT \"file_chunks_user_id_users_id_fk\"\n FOREIGN KEY (\"user_id\") REFERENCES \"public\".\"users\"(\"id\")\n ON DELETE CASCADE ON UPDATE NO ACTION;",
343+
"\n\nALTER TABLE \"files_to_sessions\"\n ADD CONSTRAINT \"files_to_sessions_user_id_users_id_fk\"\n FOREIGN KEY (\"user_id\") REFERENCES \"public\".\"users\"(\"id\")\n ON DELETE CASCADE ON UPDATE NO ACTION;",
344+
"\n\nCOMMIT;",
345+
"\n"
346+
],
347+
"bps": true,
348+
"folderMillis": 1742233314637,
349+
"hash": "a31b1cc8b1daad073329582ee9890039998fdcc78bfe2b8c43fbae6be37801fb"
326350
}
327351
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
-- Simplified user_id migration script
2+
-- Contains three basic steps
3+
4+
BEGIN;--> statement-breakpoint
5+
6+
-- Step 1: Add nullable user_id columns
7+
ALTER TABLE "agents_to_sessions" ADD COLUMN IF NOT EXISTS "user_id" text;--> statement-breakpoint
8+
ALTER TABLE "file_chunks" ADD COLUMN IF NOT EXISTS "user_id" text;--> statement-breakpoint
9+
ALTER TABLE "files_to_sessions" ADD COLUMN IF NOT EXISTS "user_id" text;--> statement-breakpoint
10+
11+
-- Step 2: Populate user_id fields
12+
-- Populate user_id for agents_to_sessions
13+
UPDATE "agents_to_sessions" AS ats
14+
SET "user_id" = a."user_id"
15+
FROM "agents" AS a
16+
WHERE ats."agent_id" = a."id";--> statement-breakpoint
17+
18+
-- Populate user_id for file_chunks
19+
UPDATE "file_chunks" AS fc
20+
SET "user_id" = f."user_id"
21+
FROM "files" AS f
22+
WHERE fc."file_id" = f."id";--> statement-breakpoint
23+
24+
-- Populate user_id for files_to_sessions
25+
UPDATE "files_to_sessions" AS fts
26+
SET "user_id" = f."user_id"
27+
FROM "files" AS f
28+
WHERE fts."file_id" = f."id";--> statement-breakpoint
29+
30+
-- Get user_id from sessions table (for handling potential NULL values)
31+
UPDATE "files_to_sessions" AS fts
32+
SET "user_id" = s."user_id"
33+
FROM "sessions" AS s
34+
WHERE fts."session_id" = s."id" AND fts."user_id" IS NULL;--> statement-breakpoint
35+
36+
UPDATE "agents_to_sessions" AS ats
37+
SET "user_id" = s."user_id"
38+
FROM "sessions" AS s
39+
WHERE ats."session_id" = s."id" AND ats."user_id" IS NULL;--> statement-breakpoint
40+
41+
-- Step 3: Add NOT NULL constraints and foreign keys
42+
ALTER TABLE "agents_to_sessions" ALTER COLUMN "user_id" SET NOT NULL;--> statement-breakpoint
43+
ALTER TABLE "file_chunks" ALTER COLUMN "user_id" SET NOT NULL;--> statement-breakpoint
44+
ALTER TABLE "files_to_sessions" ALTER COLUMN "user_id" SET NOT NULL;--> statement-breakpoint
45+
46+
ALTER TABLE "agents_to_sessions"
47+
ADD CONSTRAINT "agents_to_sessions_user_id_users_id_fk"
48+
FOREIGN KEY ("user_id") REFERENCES "public"."users"("id")
49+
ON DELETE CASCADE ON UPDATE NO ACTION;--> statement-breakpoint
50+
51+
ALTER TABLE "file_chunks"
52+
ADD CONSTRAINT "file_chunks_user_id_users_id_fk"
53+
FOREIGN KEY ("user_id") REFERENCES "public"."users"("id")
54+
ON DELETE CASCADE ON UPDATE NO ACTION;--> statement-breakpoint
55+
56+
ALTER TABLE "files_to_sessions"
57+
ADD CONSTRAINT "files_to_sessions_user_id_users_id_fk"
58+
FOREIGN KEY ("user_id") REFERENCES "public"."users"("id")
59+
ON DELETE CASCADE ON UPDATE NO ACTION;--> statement-breakpoint
60+
61+
COMMIT;--> statement-breakpoint

0 commit comments

Comments
 (0)