Skip to content

Commit d320302

Browse files
committed
chore: baseline migrations
1 parent 16de130 commit d320302

1 file changed

Lines changed: 276 additions & 0 deletions

File tree

Lines changed: 276 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,276 @@
1+
-- CreateEnum
2+
CREATE TYPE "ProjectRole" AS ENUM ('OWNER', 'ADMIN', 'MEMBER', 'VIEWER');
3+
4+
-- CreateEnum
5+
CREATE TYPE "InviteStatus" AS ENUM ('PENDING', 'ACCEPTED');
6+
7+
-- CreateTable
8+
CREATE TABLE "user" (
9+
"id" TEXT NOT NULL,
10+
"name" TEXT NOT NULL,
11+
"email" TEXT NOT NULL,
12+
"emailVerified" BOOLEAN NOT NULL DEFAULT false,
13+
"image" TEXT,
14+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
15+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
16+
17+
CONSTRAINT "user_pkey" PRIMARY KEY ("id")
18+
);
19+
20+
-- CreateTable
21+
CREATE TABLE "session" (
22+
"id" TEXT NOT NULL,
23+
"expiresAt" TIMESTAMP(3) NOT NULL,
24+
"token" TEXT NOT NULL,
25+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
26+
"updatedAt" TIMESTAMP(3) NOT NULL,
27+
"ipAddress" TEXT,
28+
"userAgent" TEXT,
29+
"userId" TEXT NOT NULL,
30+
31+
CONSTRAINT "session_pkey" PRIMARY KEY ("id")
32+
);
33+
34+
-- CreateTable
35+
CREATE TABLE "account" (
36+
"id" TEXT NOT NULL,
37+
"accountId" TEXT NOT NULL,
38+
"providerId" TEXT NOT NULL,
39+
"userId" TEXT NOT NULL,
40+
"accessToken" TEXT,
41+
"refreshToken" TEXT,
42+
"idToken" TEXT,
43+
"accessTokenExpiresAt" TIMESTAMP(3),
44+
"refreshTokenExpiresAt" TIMESTAMP(3),
45+
"scope" TEXT,
46+
"password" TEXT,
47+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
48+
"updatedAt" TIMESTAMP(3) NOT NULL,
49+
50+
CONSTRAINT "account_pkey" PRIMARY KEY ("id")
51+
);
52+
53+
-- CreateTable
54+
CREATE TABLE "verification" (
55+
"id" TEXT NOT NULL,
56+
"identifier" TEXT NOT NULL,
57+
"value" TEXT NOT NULL,
58+
"expiresAt" TIMESTAMP(3) NOT NULL,
59+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
60+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
61+
62+
CONSTRAINT "verification_pkey" PRIMARY KEY ("id")
63+
);
64+
65+
-- CreateTable
66+
CREATE TABLE "project" (
67+
"id" TEXT NOT NULL,
68+
"name" TEXT NOT NULL,
69+
"description" TEXT,
70+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
71+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
72+
"starred" BOOLEAN NOT NULL DEFAULT false,
73+
"ownerId" TEXT NOT NULL,
74+
75+
CONSTRAINT "project_pkey" PRIMARY KEY ("id")
76+
);
77+
78+
-- CreateTable
79+
CREATE TABLE "project_invite" (
80+
"id" TEXT NOT NULL,
81+
"projectId" TEXT NOT NULL,
82+
"invitedById" TEXT NOT NULL,
83+
"email" TEXT NOT NULL,
84+
"role" "ProjectRole" NOT NULL,
85+
"token" TEXT NOT NULL,
86+
"status" "InviteStatus" NOT NULL DEFAULT 'PENDING',
87+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
88+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
89+
90+
CONSTRAINT "project_invite_pkey" PRIMARY KEY ("id")
91+
);
92+
93+
-- CreateTable
94+
CREATE TABLE "project_member" (
95+
"id" TEXT NOT NULL,
96+
"userId" TEXT NOT NULL,
97+
"projectId" TEXT NOT NULL,
98+
"role" "ProjectRole" NOT NULL DEFAULT 'MEMBER',
99+
"inviteId" TEXT,
100+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
101+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
102+
103+
CONSTRAINT "project_member_pkey" PRIMARY KEY ("id")
104+
);
105+
106+
-- CreateTable
107+
CREATE TABLE "environment" (
108+
"id" TEXT NOT NULL,
109+
"name" TEXT NOT NULL,
110+
"apiKey" TEXT NOT NULL,
111+
"projectId" TEXT NOT NULL,
112+
"lastSeenAt" TIMESTAMP(3),
113+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
114+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
115+
116+
CONSTRAINT "environment_pkey" PRIMARY KEY ("id")
117+
);
118+
119+
-- CreateTable
120+
CREATE TABLE "flag" (
121+
"id" TEXT NOT NULL,
122+
"key" TEXT NOT NULL,
123+
"description" TEXT,
124+
"projectId" TEXT NOT NULL,
125+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
126+
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
127+
128+
CONSTRAINT "flag_pkey" PRIMARY KEY ("id")
129+
);
130+
131+
-- CreateTable
132+
CREATE TABLE "variation" (
133+
"id" TEXT NOT NULL,
134+
"flagId" TEXT NOT NULL,
135+
"name" TEXT NOT NULL,
136+
"value" JSONB NOT NULL,
137+
"type" TEXT NOT NULL,
138+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
139+
140+
CONSTRAINT "variation_pkey" PRIMARY KEY ("id")
141+
);
142+
143+
-- CreateTable
144+
CREATE TABLE "flag_state" (
145+
"id" TEXT NOT NULL,
146+
"flagId" TEXT NOT NULL,
147+
"environmentId" TEXT NOT NULL,
148+
"enabled" BOOLEAN NOT NULL DEFAULT false,
149+
"defaultVariationId" TEXT,
150+
151+
CONSTRAINT "flag_state_pkey" PRIMARY KEY ("id")
152+
);
153+
154+
-- CreateTable
155+
CREATE TABLE "environment_rule" (
156+
"id" TEXT NOT NULL,
157+
"flagId" TEXT NOT NULL,
158+
"environmentId" TEXT NOT NULL,
159+
"description" TEXT NOT NULL,
160+
"order" INTEGER NOT NULL,
161+
"type" TEXT NOT NULL,
162+
"conditions" JSONB,
163+
"rolloutPercentage" INTEGER,
164+
"variationId" TEXT,
165+
"distribution" JSONB,
166+
167+
CONSTRAINT "environment_rule_pkey" PRIMARY KEY ("id")
168+
);
169+
170+
-- CreateTable
171+
CREATE TABLE "activity_log" (
172+
"id" TEXT NOT NULL,
173+
"projectId" TEXT NOT NULL,
174+
"userId" TEXT,
175+
"actionType" TEXT NOT NULL,
176+
"description" TEXT NOT NULL,
177+
"details" JSONB,
178+
"environmentName" TEXT,
179+
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
180+
181+
CONSTRAINT "activity_log_pkey" PRIMARY KEY ("id")
182+
);
183+
184+
-- CreateIndex
185+
CREATE UNIQUE INDEX "user_email_key" ON "user"("email");
186+
187+
-- CreateIndex
188+
CREATE UNIQUE INDEX "session_token_key" ON "session"("token");
189+
190+
-- CreateIndex
191+
CREATE UNIQUE INDEX "project_invite_token_key" ON "project_invite"("token");
192+
193+
-- CreateIndex
194+
CREATE UNIQUE INDEX "project_invite_projectId_email_key" ON "project_invite"("projectId", "email");
195+
196+
-- CreateIndex
197+
CREATE UNIQUE INDEX "project_member_inviteId_key" ON "project_member"("inviteId");
198+
199+
-- CreateIndex
200+
CREATE UNIQUE INDEX "project_member_userId_projectId_key" ON "project_member"("userId", "projectId");
201+
202+
-- CreateIndex
203+
CREATE UNIQUE INDEX "environment_apiKey_key" ON "environment"("apiKey");
204+
205+
-- CreateIndex
206+
CREATE UNIQUE INDEX "environment_projectId_name_key" ON "environment"("projectId", "name");
207+
208+
-- CreateIndex
209+
CREATE UNIQUE INDEX "flag_projectId_key_key" ON "flag"("projectId", "key");
210+
211+
-- CreateIndex
212+
CREATE UNIQUE INDEX "variation_flagId_name_key" ON "variation"("flagId", "name");
213+
214+
-- CreateIndex
215+
CREATE UNIQUE INDEX "flag_state_flagId_environmentId_key" ON "flag_state"("flagId", "environmentId");
216+
217+
-- CreateIndex
218+
CREATE UNIQUE INDEX "environment_rule_flagId_environmentId_order_key" ON "environment_rule"("flagId", "environmentId", "order");
219+
220+
-- CreateIndex
221+
CREATE INDEX "activity_log_projectId_idx" ON "activity_log"("projectId");
222+
223+
-- AddForeignKey
224+
ALTER TABLE "session" ADD CONSTRAINT "session_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE;
225+
226+
-- AddForeignKey
227+
ALTER TABLE "account" ADD CONSTRAINT "account_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE;
228+
229+
-- AddForeignKey
230+
ALTER TABLE "project" ADD CONSTRAINT "project_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "user"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
231+
232+
-- AddForeignKey
233+
ALTER TABLE "project_invite" ADD CONSTRAINT "project_invite_invitedById_fkey" FOREIGN KEY ("invitedById") REFERENCES "user"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
234+
235+
-- AddForeignKey
236+
ALTER TABLE "project_invite" ADD CONSTRAINT "project_invite_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
237+
238+
-- AddForeignKey
239+
ALTER TABLE "project_member" ADD CONSTRAINT "project_member_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
240+
241+
-- AddForeignKey
242+
ALTER TABLE "project_member" ADD CONSTRAINT "project_member_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
243+
244+
-- AddForeignKey
245+
ALTER TABLE "environment" ADD CONSTRAINT "environment_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
246+
247+
-- AddForeignKey
248+
ALTER TABLE "flag" ADD CONSTRAINT "flag_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
249+
250+
-- AddForeignKey
251+
ALTER TABLE "variation" ADD CONSTRAINT "variation_flagId_fkey" FOREIGN KEY ("flagId") REFERENCES "flag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
252+
253+
-- AddForeignKey
254+
ALTER TABLE "flag_state" ADD CONSTRAINT "flag_state_defaultVariationId_fkey" FOREIGN KEY ("defaultVariationId") REFERENCES "variation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
255+
256+
-- AddForeignKey
257+
ALTER TABLE "flag_state" ADD CONSTRAINT "flag_state_flagId_fkey" FOREIGN KEY ("flagId") REFERENCES "flag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
258+
259+
-- AddForeignKey
260+
ALTER TABLE "flag_state" ADD CONSTRAINT "flag_state_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "environment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
261+
262+
-- AddForeignKey
263+
ALTER TABLE "environment_rule" ADD CONSTRAINT "environment_rule_flagId_fkey" FOREIGN KEY ("flagId") REFERENCES "flag"("id") ON DELETE CASCADE ON UPDATE CASCADE;
264+
265+
-- AddForeignKey
266+
ALTER TABLE "environment_rule" ADD CONSTRAINT "environment_rule_environmentId_fkey" FOREIGN KEY ("environmentId") REFERENCES "environment"("id") ON DELETE CASCADE ON UPDATE CASCADE;
267+
268+
-- AddForeignKey
269+
ALTER TABLE "environment_rule" ADD CONSTRAINT "environment_rule_variationId_fkey" FOREIGN KEY ("variationId") REFERENCES "variation"("id") ON DELETE SET NULL ON UPDATE CASCADE;
270+
271+
-- AddForeignKey
272+
ALTER TABLE "activity_log" ADD CONSTRAINT "activity_log_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"("id") ON DELETE SET NULL ON UPDATE CASCADE;
273+
274+
-- AddForeignKey
275+
ALTER TABLE "activity_log" ADD CONSTRAINT "activity_log_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
276+

0 commit comments

Comments
 (0)