From 05e4689bd4406bb7a79478a0738816af309aeebc Mon Sep 17 00:00:00 2001 From: Pavel Strunkin Date: Thu, 10 Sep 2020 00:16:45 +0200 Subject: [PATCH 1/2] Update schema.prisma --- prisma/schema.prisma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index cee0b333..58d2da6c 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -81,7 +81,7 @@ model TestVariation { updatedAt DateTime @updatedAt createdAt DateTime @default(now()) - @@unique([name, browser, device, os, viewport, branchName]) + @@unique([projectId, name, browser, device, os, viewport, branchName]) } model Baseline { From 49d6c1a57157035f7dbb5f6ff8ece9441a05c992 Mon Sep 17 00:00:00 2001 From: Pavel Strunkin Date: Thu, 10 Sep 2020 00:34:43 +0200 Subject: [PATCH 2/2] migration added --- .../README.md | 41 ++++++ .../schema.prisma | 117 ++++++++++++++++++ .../steps.json | 37 ++++++ prisma/migrations/migrate.lock | 3 +- 4 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/README.md create mode 100644 prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/schema.prisma create mode 100644 prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/steps.json diff --git a/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/README.md b/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/README.md new file mode 100644 index 00000000..97a150bb --- /dev/null +++ b/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/README.md @@ -0,0 +1,41 @@ +# Migration `20200909223305-test-variation-project-id-added-into-unique-constraint` + +This migration has been generated by Pavel Strunkin at 9/10/2020, 12:33:05 AM. +You can check out the [state of the schema](./schema.prisma) after the migration. + +## Database Steps + +```sql +DROP INDEX "public"."TestVariation.name_browser_device_os_viewport_branchName_unique" + +CREATE UNIQUE INDEX "TestVariation.projectId_name_browser_device_os_viewport_branchName_unique" ON "public"."TestVariation"("projectId","name","browser","device","os","viewport","branchName") +``` + +## Changes + +```diff +diff --git schema.prisma schema.prisma +migration 20200812213545-build-run-status..20200909223305-test-variation-project-id-added-into-unique-constraint +--- datamodel.dml ++++ datamodel.dml +@@ -3,9 +3,9 @@ + } + datasource db { + provider = "postgresql" +- url = "***" ++ url = "***" + } + model Build { + id String @default(uuid()) @id +@@ -80,9 +80,9 @@ + comment String? + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) +- @@unique([name, browser, device, os, viewport, branchName]) ++ @@unique([projectId, name, browser, device, os, viewport, branchName]) + } + model Baseline { + id String @default(uuid()) @id +``` + + diff --git a/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/schema.prisma b/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/schema.prisma new file mode 100644 index 00000000..2430254d --- /dev/null +++ b/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/schema.prisma @@ -0,0 +1,117 @@ +generator client { + provider = "prisma-client-js" +} + +datasource db { + provider = "postgresql" + url = "***" +} + +model Build { + id String @default(uuid()) @id + number Int? + branchName String? + status String? + testRuns TestRun[] + projectId String + project Project @relation(fields: [projectId], references: [id]) + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + user User? @relation(fields: [userId], references: [id]) + userId String? + isRunning Boolean? +} + +model Project { + id String @default(uuid()) @id + name String + mainBranchName String @default("master") + builds Build[] + testVariations TestVariation[] + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + + @@unique([name]) +} + +model TestRun { + id String @default(uuid()) @id + imageName String + diffName String? + diffPercent Float? + diffTollerancePercent Float @default(0) + pixelMisMatchCount Int? + status TestStatus + buildId String + build Build @relation(fields: [buildId], references: [id]) + testVariationId String + testVariation TestVariation @relation(fields: [testVariationId], references: [id]) + merge Boolean @default(false) + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + // Test variation data + name String @default("") + browser String? + device String? + os String? + viewport String? + baselineName String? + ignoreAreas String @default("[]") + comment String? + baseline Baseline? + branchName String @default("master") + baselineBranchName String? +} + +model TestVariation { + id String @default(uuid()) @id + name String + branchName String @default("master") + browser String? + device String? + os String? + viewport String? + baselineName String? + ignoreAreas String @default("[]") + projectId String + project Project @relation(fields: [projectId], references: [id]) + testRuns TestRun[] + baselines Baseline[] + comment String? + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) + + @@unique([projectId, name, browser, device, os, viewport, branchName]) +} + +model Baseline { + id String @default(uuid()) @id + baselineName String + testVariationId String + testVariation TestVariation @relation(fields: [testVariationId], references: [id]) + testRunId String? + testRun TestRun? @relation(fields: [testRunId], references: [id]) + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) +} + +model User { + id String @default(uuid()) @id + email String @unique + password String + firstName String? + lastName String? + apiKey String @unique + isActive Boolean @default(true) + builds Build[] + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) +} + +enum TestStatus { + failed + new + ok + unresolved + approved +} diff --git a/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/steps.json b/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/steps.json new file mode 100644 index 00000000..f089fa2a --- /dev/null +++ b/prisma/migrations/20200909223305-test-variation-project-id-added-into-unique-constraint/steps.json @@ -0,0 +1,37 @@ +{ + "version": "0.3.14-fixed", + "steps": [ + { + "tag": "CreateDirective", + "location": { + "path": { + "tag": "Model", + "model": "TestVariation", + "arguments": [ + { + "name": "", + "value": "[projectId, name, browser, device, os, viewport, branchName]" + } + ] + }, + "directive": "unique" + } + }, + { + "tag": "DeleteDirective", + "location": { + "path": { + "tag": "Model", + "model": "TestVariation", + "arguments": [ + { + "name": "", + "value": "[name, browser, device, os, viewport, branchName]" + } + ] + }, + "directive": "unique" + } + } + ] +} \ No newline at end of file diff --git a/prisma/migrations/migrate.lock b/prisma/migrations/migrate.lock index ae8a3b2d..1be6e40b 100644 --- a/prisma/migrations/migrate.lock +++ b/prisma/migrations/migrate.lock @@ -7,4 +7,5 @@ 20200707182652-project-name-unique-constraint 20200715232608-branch-strategy 20200728221159-zero-diff-tolerance -20200812213545-build-run-status \ No newline at end of file +20200812213545-build-run-status +20200909223305-test-variation-project-id-added-into-unique-constraint \ No newline at end of file