Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"prisma-dev-migrate": "prisma migrate dev",
"prisma-migrate": "prisma migrate deploy",
"seed": "NODE_ENV=development node -r ts-node/register --env-file=.env.development ./scripts/seed.ts",
"sync-releases": "NODE_ENV=development node -r ts-node/register --env-file=.env.development ./scripts/sync-releases.ts",
"build": "tsc",
"test": "vitest run",
"test:watch": "vitest",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-- CreateTable
CREATE TABLE "ReleaseArtifact" (
"id" BIGSERIAL NOT NULL,
"releaseId" BIGINT NOT NULL,
"url" TEXT NOT NULL,
"hash" TEXT NOT NULL,
"compatibleSkus" TEXT[] NOT NULL,

CONSTRAINT "ReleaseArtifact_pkey" PRIMARY KEY ("id")
);

-- Backfill one artifact for every existing release.
INSERT INTO "ReleaseArtifact" ("releaseId", "url", "hash", "compatibleSkus")
SELECT
"id",
"url",
"hash",
CASE
WHEN "type" = 'app' THEN ARRAY['jetkvm-v2', 'jetkvm-v2-sdmmc']::TEXT[]
ELSE ARRAY['jetkvm-v2']::TEXT[]
END
FROM "Release";

-- CreateIndex
CREATE UNIQUE INDEX "ReleaseArtifact_releaseId_url_key" ON "ReleaseArtifact"("releaseId", "url");

-- AddForeignKey
ALTER TABLE "ReleaseArtifact" ADD CONSTRAINT "ReleaseArtifact_releaseId_fkey" FOREIGN KEY ("releaseId") REFERENCES "Release"("id") ON DELETE CASCADE ON UPDATE CASCADE;
22 changes: 17 additions & 5 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,26 @@ model TurnActivity {
}

model Release {
id BigInt @id @default(autoincrement())
id BigInt @id @default(autoincrement())
version String
rolloutPercentage Int @default(10) // 10% of users
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
rolloutPercentage Int @default(10) // 10% of users
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
url String
type String @default("app") // "app" or "system"
type String @default("app") // "app" or "system"
hash String
artifacts ReleaseArtifact[]

@@unique([version, type])
}

model ReleaseArtifact {
id BigInt @id @default(autoincrement())
release Release @relation(fields: [releaseId], references: [id], onDelete: Cascade)
releaseId BigInt
url String
hash String
compatibleSkus String[]

@@unique([releaseId, url])
}
Loading
Loading