Skip to content

Commit 9b4ec34

Browse files
New db architecture migration.
1 parent 4100079 commit 9b4ec34

File tree

1 file changed

+117
-0
lines changed
  • prisma/migrations/20250702055941_new_jobs_architecture

1 file changed

+117
-0
lines changed
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
-- CreateTable
2+
CREATE TABLE "jobs" (
3+
"id" SERIAL NOT NULL,
4+
"title" TEXT NOT NULL,
5+
"company_id" INTEGER,
6+
"author" TEXT,
7+
"location" TEXT,
8+
"url" TEXT NOT NULL,
9+
"posted_at" TIMESTAMP(3),
10+
"description" TEXT,
11+
"is_remote" BOOLEAN,
12+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
13+
"updated_at" TIMESTAMP(3) NOT NULL,
14+
15+
CONSTRAINT "jobs_pkey" PRIMARY KEY ("id")
16+
);
17+
18+
-- CreateTable
19+
CREATE TABLE "companies" (
20+
"id" SERIAL NOT NULL,
21+
"name" TEXT NOT NULL,
22+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
23+
24+
CONSTRAINT "companies_pkey" PRIMARY KEY ("id")
25+
);
26+
27+
-- CreateTable
28+
CREATE TABLE "tags" (
29+
"id" SERIAL NOT NULL,
30+
"name" TEXT NOT NULL,
31+
32+
CONSTRAINT "tags_pkey" PRIMARY KEY ("id")
33+
);
34+
35+
-- CreateTable
36+
CREATE TABLE "job_tags" (
37+
"id" SERIAL NOT NULL,
38+
"job_id" INTEGER NOT NULL,
39+
"tag_id" INTEGER NOT NULL,
40+
41+
CONSTRAINT "job_tags_pkey" PRIMARY KEY ("id")
42+
);
43+
44+
-- CreateTable
45+
CREATE TABLE "job_metadata" (
46+
"id" SERIAL NOT NULL,
47+
"jobId" INTEGER NOT NULL,
48+
"name" TEXT NOT NULL,
49+
"value" TEXT NOT NULL,
50+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
51+
"updatedAt" TIMESTAMP(3) NOT NULL,
52+
53+
CONSTRAINT "job_metadata_pkey" PRIMARY KEY ("id")
54+
);
55+
56+
-- CreateTable
57+
CREATE TABLE "job_sources" (
58+
"id" SERIAL NOT NULL,
59+
"job_id" INTEGER NOT NULL,
60+
"source" TEXT NOT NULL,
61+
"external_id" TEXT,
62+
"raw_url" TEXT,
63+
"data" JSONB,
64+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
65+
66+
CONSTRAINT "job_sources_pkey" PRIMARY KEY ("id")
67+
);
68+
69+
-- CreateTable
70+
CREATE TABLE "taggables" (
71+
"id" SERIAL NOT NULL,
72+
"tag_id" INTEGER NOT NULL,
73+
"tag_type" TEXT NOT NULL,
74+
"taggable_id" INTEGER NOT NULL,
75+
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
76+
77+
CONSTRAINT "taggables_pkey" PRIMARY KEY ("id")
78+
);
79+
80+
-- CreateIndex
81+
CREATE UNIQUE INDEX "jobs_url_key" ON "jobs"("url");
82+
83+
-- CreateIndex
84+
CREATE UNIQUE INDEX "companies_name_key" ON "companies"("name");
85+
86+
-- CreateIndex
87+
CREATE UNIQUE INDEX "tags_name_key" ON "tags"("name");
88+
89+
-- CreateIndex
90+
CREATE UNIQUE INDEX "job_tags_job_id_tag_id_key" ON "job_tags"("job_id", "tag_id");
91+
92+
-- CreateIndex
93+
CREATE UNIQUE INDEX "job_metadata_jobId_name_key" ON "job_metadata"("jobId", "name");
94+
95+
-- CreateIndex
96+
CREATE UNIQUE INDEX "job_sources_source_external_id_key" ON "job_sources"("source", "external_id");
97+
98+
-- CreateIndex
99+
CREATE INDEX "taggables_tag_type_taggable_id_idx" ON "taggables"("tag_type", "taggable_id");
100+
101+
-- AddForeignKey
102+
ALTER TABLE "jobs" ADD CONSTRAINT "jobs_company_id_fkey" FOREIGN KEY ("company_id") REFERENCES "companies"("id") ON DELETE SET NULL ON UPDATE CASCADE;
103+
104+
-- AddForeignKey
105+
ALTER TABLE "job_tags" ADD CONSTRAINT "job_tags_job_id_fkey" FOREIGN KEY ("job_id") REFERENCES "jobs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
106+
107+
-- AddForeignKey
108+
ALTER TABLE "job_tags" ADD CONSTRAINT "job_tags_tag_id_fkey" FOREIGN KEY ("tag_id") REFERENCES "tags"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
109+
110+
-- AddForeignKey
111+
ALTER TABLE "job_metadata" ADD CONSTRAINT "job_metadata_jobId_fkey" FOREIGN KEY ("jobId") REFERENCES "jobs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
112+
113+
-- AddForeignKey
114+
ALTER TABLE "job_sources" ADD CONSTRAINT "job_sources_job_id_fkey" FOREIGN KEY ("job_id") REFERENCES "jobs"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
115+
116+
-- AddForeignKey
117+
ALTER TABLE "taggables" ADD CONSTRAINT "taggables_tag_id_fkey" FOREIGN KEY ("tag_id") REFERENCES "tags"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

0 commit comments

Comments
 (0)