| |
1 | +-- CreateTable |
| |
2 | +CREATE TABLE "Occupation" ( |
| |
3 | + "code" TEXT NOT NULL, |
| |
4 | + "title" TEXT NOT NULL, |
| |
5 | + "description" TEXT, |
| |
6 | + "escoUri" TEXT, |
| |
7 | + "romeCode" TEXT, |
| |
8 | + "crosswalkNote" TEXT, |
| |
9 | + "medianWageCents" INTEGER, |
| |
10 | + "wageCurrency" TEXT NOT NULL DEFAULT 'USD', |
| |
11 | + "employment" INTEGER, |
| |
12 | + |
| |
13 | + CONSTRAINT "Occupation_pkey" PRIMARY KEY ("code") |
| |
14 | +); |
| |
15 | + |
| |
16 | +-- CreateTable |
| |
17 | +CREATE TABLE "Task" ( |
| |
18 | + "id" TEXT NOT NULL, |
| |
19 | + "occupationCode" TEXT NOT NULL, |
| |
20 | + "statement" TEXT NOT NULL, |
| |
21 | + "importance" DOUBLE PRECISION, |
| |
22 | + |
| |
23 | + CONSTRAINT "Task_pkey" PRIMARY KEY ("id") |
| |
24 | +); |
| |
25 | + |
| |
26 | +-- CreateTable |
| |
27 | +CREATE TABLE "TaskRating" ( |
| |
28 | + "id" TEXT NOT NULL, |
| |
29 | + "taskId" TEXT NOT NULL, |
| |
30 | + "dimension" TEXT NOT NULL, |
| |
31 | + "model" TEXT NOT NULL, |
| |
32 | + "promptVersion" TEXT NOT NULL, |
| |
33 | + "sampleIndex" INTEGER NOT NULL DEFAULT 0, |
| |
34 | + "rating" INTEGER NOT NULL, |
| |
35 | + "rationale" TEXT, |
| |
36 | + "rawResponse" JSONB NOT NULL, |
| |
37 | + "ratedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| |
38 | + |
| |
39 | + CONSTRAINT "TaskRating_pkey" PRIMARY KEY ("id") |
| |
40 | +); |
| |
41 | + |
| |
42 | +-- CreateTable |
| |
43 | +CREATE TABLE "ExpertOverride" ( |
| |
44 | + "id" TEXT NOT NULL, |
| |
45 | + "taskId" TEXT NOT NULL, |
| |
46 | + "dimension" TEXT NOT NULL, |
| |
47 | + "ratingLow" INTEGER NOT NULL, |
| |
48 | + "ratingMid" DOUBLE PRECISION NOT NULL, |
| |
49 | + "ratingHigh" INTEGER NOT NULL, |
| |
50 | + "reviewer" TEXT NOT NULL, |
| |
51 | + "note" TEXT, |
| |
52 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| |
53 | + |
| |
54 | + CONSTRAINT "ExpertOverride_pkey" PRIMARY KEY ("id") |
| |
55 | +); |
| |
56 | + |
| |
57 | +-- CreateTable |
| |
58 | +CREATE TABLE "ScoreRun" ( |
| |
59 | + "id" TEXT NOT NULL, |
| |
60 | + "indexVersion" TEXT NOT NULL, |
| |
61 | + "raterPromptVersion" TEXT NOT NULL, |
| |
62 | + "raterModels" TEXT[], |
| |
63 | + "notes" TEXT, |
| |
64 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| |
65 | + |
| |
66 | + CONSTRAINT "ScoreRun_pkey" PRIMARY KEY ("id") |
| |
67 | +); |
| |
68 | + |
| |
69 | +-- CreateTable |
| |
70 | +CREATE TABLE "OccupationScore" ( |
| |
71 | + "id" TEXT NOT NULL, |
| |
72 | + "runId" TEXT NOT NULL, |
| |
73 | + "occupationCode" TEXT NOT NULL, |
| |
74 | + "substitutionLow" DOUBLE PRECISION NOT NULL, |
| |
75 | + "substitution" DOUBLE PRECISION NOT NULL, |
| |
76 | + "substitutionHigh" DOUBLE PRECISION NOT NULL, |
| |
77 | + "exposureLow" DOUBLE PRECISION NOT NULL, |
| |
78 | + "exposure" DOUBLE PRECISION NOT NULL, |
| |
79 | + "exposureHigh" DOUBLE PRECISION NOT NULL, |
| |
80 | + "augmentationLow" DOUBLE PRECISION NOT NULL, |
| |
81 | + "augmentation" DOUBLE PRECISION NOT NULL, |
| |
82 | + "augmentationHigh" DOUBLE PRECISION NOT NULL, |
| |
83 | + "highlyExposedTaskShare" DOUBLE PRECISION NOT NULL, |
| |
84 | + |
| |
85 | + CONSTRAINT "OccupationScore_pkey" PRIMARY KEY ("id") |
| |
86 | +); |
| |
87 | + |
| |
88 | +-- CreateTable |
| |
89 | +CREATE TABLE "TaskScore" ( |
| |
90 | + "id" TEXT NOT NULL, |
| |
91 | + "runId" TEXT NOT NULL, |
| |
92 | + "taskId" TEXT NOT NULL, |
| |
93 | + "substitutionLow" DOUBLE PRECISION NOT NULL, |
| |
94 | + "substitution" DOUBLE PRECISION NOT NULL, |
| |
95 | + "substitutionHigh" DOUBLE PRECISION NOT NULL, |
| |
96 | + "exposureLow" DOUBLE PRECISION NOT NULL, |
| |
97 | + "exposure" DOUBLE PRECISION NOT NULL, |
| |
98 | + "exposureHigh" DOUBLE PRECISION NOT NULL, |
| |
99 | + "augmentationLow" DOUBLE PRECISION NOT NULL, |
| |
100 | + "augmentation" DOUBLE PRECISION NOT NULL, |
| |
101 | + "augmentationHigh" DOUBLE PRECISION NOT NULL, |
| |
102 | + |
| |
103 | + CONSTRAINT "TaskScore_pkey" PRIMARY KEY ("id") |
| |
104 | +); |
| |
105 | + |
| |
106 | +-- CreateTable |
| |
107 | +CREATE TABLE "ApiKey" ( |
| |
108 | + "id" TEXT NOT NULL, |
| |
109 | + "hashedKey" TEXT NOT NULL, |
| |
110 | + "name" TEXT NOT NULL, |
| |
111 | + "rateLimitPerMin" INTEGER NOT NULL DEFAULT 600, |
| |
112 | + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, |
| |
113 | + |
| |
114 | + CONSTRAINT "ApiKey_pkey" PRIMARY KEY ("id") |
| |
115 | +); |
| |
116 | + |
| |
117 | +-- CreateIndex |
| |
118 | +CREATE INDEX "Task_occupationCode_idx" ON "Task"("occupationCode"); |
| |
119 | + |
| |
120 | +-- CreateIndex |
| |
121 | +CREATE INDEX "TaskRating_taskId_dimension_idx" ON "TaskRating"("taskId", "dimension"); |
| |
122 | + |
| |
123 | +-- CreateIndex |
| |
124 | +CREATE INDEX "TaskRating_promptVersion_idx" ON "TaskRating"("promptVersion"); |
| |
125 | + |
| |
126 | +-- CreateIndex |
| |
127 | +CREATE UNIQUE INDEX "TaskRating_taskId_dimension_model_promptVersion_sampleIndex_key" ON "TaskRating"("taskId", "dimension", "model", "promptVersion", "sampleIndex"); |
| |
128 | + |
| |
129 | +-- CreateIndex |
| |
130 | +CREATE UNIQUE INDEX "ExpertOverride_taskId_dimension_key" ON "ExpertOverride"("taskId", "dimension"); |
| |
131 | + |
| |
132 | +-- CreateIndex |
| |
133 | +CREATE INDEX "ScoreRun_indexVersion_idx" ON "ScoreRun"("indexVersion"); |
| |
134 | + |
| |
135 | +-- CreateIndex |
| |
136 | +CREATE INDEX "OccupationScore_occupationCode_idx" ON "OccupationScore"("occupationCode"); |
| |
137 | + |
| |
138 | +-- CreateIndex |
| |
139 | +CREATE UNIQUE INDEX "OccupationScore_runId_occupationCode_key" ON "OccupationScore"("runId", "occupationCode"); |
| |
140 | + |
| |
141 | +-- CreateIndex |
| |
142 | +CREATE INDEX "TaskScore_taskId_idx" ON "TaskScore"("taskId"); |
| |
143 | + |
| |
144 | +-- CreateIndex |
| |
145 | +CREATE UNIQUE INDEX "TaskScore_runId_taskId_key" ON "TaskScore"("runId", "taskId"); |
| |
146 | + |
| |
147 | +-- CreateIndex |
| |
148 | +CREATE UNIQUE INDEX "ApiKey_hashedKey_key" ON "ApiKey"("hashedKey"); |
| |
149 | + |
| |
150 | +-- AddForeignKey |
| |
151 | +ALTER TABLE "Task" ADD CONSTRAINT "Task_occupationCode_fkey" FOREIGN KEY ("occupationCode") REFERENCES "Occupation"("code") ON DELETE RESTRICT ON UPDATE CASCADE; |
| |
152 | + |
| |
153 | +-- AddForeignKey |
| |
154 | +ALTER TABLE "TaskRating" ADD CONSTRAINT "TaskRating_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE; |
| |
155 | + |
| |
156 | +-- AddForeignKey |
| |
157 | +ALTER TABLE "ExpertOverride" ADD CONSTRAINT "ExpertOverride_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE; |
| |
158 | + |
| |
159 | +-- AddForeignKey |
| |
160 | +ALTER TABLE "OccupationScore" ADD CONSTRAINT "OccupationScore_runId_fkey" FOREIGN KEY ("runId") REFERENCES "ScoreRun"("id") ON DELETE RESTRICT ON UPDATE CASCADE; |
| |
161 | + |
| |
162 | +-- AddForeignKey |
| |
163 | +ALTER TABLE "OccupationScore" ADD CONSTRAINT "OccupationScore_occupationCode_fkey" FOREIGN KEY ("occupationCode") REFERENCES "Occupation"("code") ON DELETE RESTRICT ON UPDATE CASCADE; |
| |
164 | + |
| |
165 | +-- AddForeignKey |
| |
166 | +ALTER TABLE "TaskScore" ADD CONSTRAINT "TaskScore_runId_fkey" FOREIGN KEY ("runId") REFERENCES "ScoreRun"("id") ON DELETE RESTRICT ON UPDATE CASCADE; |
| |
167 | + |
| |
168 | +-- AddForeignKey |
| |
169 | +ALTER TABLE "TaskScore" ADD CONSTRAINT "TaskScore_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE RESTRICT ON UPDATE CASCADE; |