diff --git a/README.md b/README.md index 9d0383f9..44f08beb 100644 --- a/README.md +++ b/README.md @@ -7,12 +7,13 @@ - clone repo - Update `.env` and `prisma/.env` -- Make sure Postgres is up and running +- Make sure Postgres is up and running, using `docker-compose up` in a separate terminal - `npm i` - `npm run test` -- Create DB structure and apply migrations `npx prisma migrate up -c --experimental` +- Create DB structure `npx prisma db push` +- Apply migrations`npx prisma migrate dev` - `npm run test:e2e` -- Seed initial data `npx ts-node prisma/seed.ts` +- Seed initial data `npx prisma db seed` - `npm run start:debug` ## Local HTTPS config diff --git a/package-lock.json b/package-lock.json index ac924f32..f26f8485 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,7 @@ "@nestjs/swagger": "^5.2.0", "@nestjs/terminus": "^8.0.8", "@nestjs/websockets": "^8.4.1", - "@prisma/client": "^2.12.1", + "@prisma/client": "^3.15.2", "ajv": "^8.10.0", "bcryptjs": "^2.4.3", "cache-manager": "^3.6.0", @@ -46,7 +46,6 @@ "@nestjs/cli": "^8.2.3", "@nestjs/schematics": "^8.0.8", "@nestjs/testing": "^8.4.1", - "@prisma/cli": "2.12.1", "@types/bcryptjs": "^2.4.2", "@types/cache-manager": "^3.4.3", "@types/cron": "^1.7.3", @@ -68,6 +67,7 @@ "eslint-plugin-import": "^2.25.4", "jest": "^27.5.1", "prettier": "^2.6.0", + "prisma": "^3.15.2", "supertest": "^6.2.2", "ts-jest": "^27.1.3", "ts-loader": "^9.2.8", @@ -2288,62 +2288,37 @@ "npm": ">=5.0.0" } }, - "node_modules/@prisma/bar": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@prisma/bar/-/bar-0.0.1.tgz", - "integrity": "sha512-FVLhwVkbfhXlBhroWfIXMLi+3Jh9IEzYp+9z+MUUiw3ZsbcoAil7CN9/QIjHc4/TcCRyRfuSmT7qCnn4O+TjJw==", - "devOptional": true - }, - "node_modules/@prisma/cli": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@prisma/cli/-/cli-2.12.1.tgz", - "integrity": "sha512-obkwK95dEeifCdVehG0rS0BlPQGLsOtc9U1MgbrjNX3MnhXQdwROnvymfPB3DBlNyoLoHGklPgi9UlwBokNXcQ==", - "deprecated": "Prisma CLI package was renamed to 'prisma'. Check it out here: https://www.npmjs.com/package/prisma", - "devOptional": true, - "hasInstallScript": true, - "dependencies": { - "@prisma/bar": "^0.0.1", - "@prisma/engines": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" - }, - "bin": { - "prisma": "build/index.js", - "prisma2": "build/index.js" - }, - "engines": { - "node": ">=10.4" - } - }, "node_modules/@prisma/client": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-2.12.1.tgz", - "integrity": "sha512-HP4/E9sRdxw/FB7XP4EeRa5ri8Lp1U/L7G4VAA95aM8C+8ARioQHMNDpEjC83NrOrOr4EcaZV5pXDDQL1H+F0g==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-3.15.2.tgz", + "integrity": "sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==", "hasInstallScript": true, "dependencies": { - "@prisma/engines-version": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" + "@prisma/engines-version": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e" }, "engines": { - "node": ">=10.4" + "node": ">=12.6" }, "peerDependencies": { - "@prisma/cli": "*" + "prisma": "*" }, "peerDependenciesMeta": { - "@prisma/cli": { + "prisma": { "optional": true } } }, "node_modules/@prisma/engines": { - "version": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58.tgz", - "integrity": "sha512-F6RmUZ5JpPWxmGvVDji8c4gepHIGkvYbtuFi0IoDDJVaCVo8yS656stciKFyswI6/BLWXa0X47/MIMbz6nzw7g==", + "version": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e.tgz", + "integrity": "sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==", "devOptional": true, "hasInstallScript": true }, "node_modules/@prisma/engines-version": { - "version": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58.tgz", - "integrity": "sha512-IHb/Jag1Wmoq5tLZhOHP5zqLHEXqQEfrHb6l0drIBSvh2AF7yWQ3yyuD0ZEb1Nq37SvbBgop5wrWMOU8YWFTGQ==" + "version": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e.tgz", + "integrity": "sha512-e3k2Vd606efd1ZYy2NQKkT4C/pn31nehyLhVug6To/q8JT8FpiMrDy7zmm3KLF0L98NOQQcutaVtAPhzKhzn9w==" }, "node_modules/@sinonjs/commons": { "version": "1.8.3", @@ -9532,6 +9507,23 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/prisma": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-3.15.2.tgz", + "integrity": "sha512-nMNSMZvtwrvoEQ/mui8L/aiCLZRCj5t6L3yujKpcDhIPk7garp8tL4nMx2+oYsN0FWBacevJhazfXAbV1kfBzA==", + "devOptional": true, + "hasInstallScript": true, + "dependencies": { + "@prisma/engines": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e" + }, + "bin": { + "prisma": "build/index.js", + "prisma2": "build/index.js" + }, + "engines": { + "node": ">=12.6" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -13372,40 +13364,24 @@ "node-fetch": "^2.6.1" } }, - "@prisma/bar": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@prisma/bar/-/bar-0.0.1.tgz", - "integrity": "sha512-FVLhwVkbfhXlBhroWfIXMLi+3Jh9IEzYp+9z+MUUiw3ZsbcoAil7CN9/QIjHc4/TcCRyRfuSmT7qCnn4O+TjJw==", - "devOptional": true - }, - "@prisma/cli": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@prisma/cli/-/cli-2.12.1.tgz", - "integrity": "sha512-obkwK95dEeifCdVehG0rS0BlPQGLsOtc9U1MgbrjNX3MnhXQdwROnvymfPB3DBlNyoLoHGklPgi9UlwBokNXcQ==", - "devOptional": true, - "requires": { - "@prisma/bar": "^0.0.1", - "@prisma/engines": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" - } - }, "@prisma/client": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-2.12.1.tgz", - "integrity": "sha512-HP4/E9sRdxw/FB7XP4EeRa5ri8Lp1U/L7G4VAA95aM8C+8ARioQHMNDpEjC83NrOrOr4EcaZV5pXDDQL1H+F0g==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-3.15.2.tgz", + "integrity": "sha512-ErqtwhX12ubPhU4d++30uFY/rPcyvjk+mdifaZO5SeM21zS3t4jQrscy8+6IyB0GIYshl5ldTq6JSBo1d63i8w==", "requires": { - "@prisma/engines-version": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58" + "@prisma/engines-version": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e" } }, "@prisma/engines": { - "version": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58.tgz", - "integrity": "sha512-F6RmUZ5JpPWxmGvVDji8c4gepHIGkvYbtuFi0IoDDJVaCVo8yS656stciKFyswI6/BLWXa0X47/MIMbz6nzw7g==", + "version": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e.tgz", + "integrity": "sha512-NHlojO1DFTsSi3FtEleL9QWXeSF/UjhCW0fgpi7bumnNZ4wj/eQ+BJJ5n2pgoOliTOGv9nX2qXvmHap7rJMNmg==", "devOptional": true }, "@prisma/engines-version": { - "version": "2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-2.12.0-18.cf0680a1bfe8d5e743dc659cc7f08009f9587d58.tgz", - "integrity": "sha512-IHb/Jag1Wmoq5tLZhOHP5zqLHEXqQEfrHb6l0drIBSvh2AF7yWQ3yyuD0ZEb1Nq37SvbBgop5wrWMOU8YWFTGQ==" + "version": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e.tgz", + "integrity": "sha512-e3k2Vd606efd1ZYy2NQKkT4C/pn31nehyLhVug6To/q8JT8FpiMrDy7zmm3KLF0L98NOQQcutaVtAPhzKhzn9w==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -18963,6 +18939,15 @@ } } }, + "prisma": { + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-3.15.2.tgz", + "integrity": "sha512-nMNSMZvtwrvoEQ/mui8L/aiCLZRCj5t6L3yujKpcDhIPk7garp8tL4nMx2+oYsN0FWBacevJhazfXAbV1kfBzA==", + "devOptional": true, + "requires": { + "@prisma/engines": "3.15.1-1.461d6a05159055555eb7dfb337c9fb271cbd4d7e" + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", diff --git a/package.json b/package.json index 191e1e4f..018353bb 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@nestjs/swagger": "^5.2.0", "@nestjs/terminus": "^8.0.8", "@nestjs/websockets": "^8.4.1", - "@prisma/client": "2.12.1", + "@prisma/client": "^3.15.2", "ajv": "^8.10.0", "bcryptjs": "^2.4.3", "cache-manager": "^3.6.0", @@ -58,7 +58,6 @@ "@nestjs/cli": "^8.2.3", "@nestjs/schematics": "^8.0.8", "@nestjs/testing": "^8.4.1", - "@prisma/cli": "2.12.1", "@types/bcryptjs": "^2.4.2", "@types/cache-manager": "^3.4.3", "@types/cron": "^1.7.3", @@ -80,11 +79,15 @@ "eslint-plugin-import": "^2.25.4", "jest": "^27.5.1", "prettier": "^2.6.0", + "prisma": "^3.15.2", "supertest": "^6.2.2", "ts-jest": "^27.1.3", "ts-loader": "^9.2.8", "ts-node": "^10.7.0", "tsconfig-paths": "^3.14.0", "typescript": "^4.6.2" + }, + "prisma": { + "seed": "ts-node prisma/seed.ts" } } diff --git a/prisma/manual_migrations.ts b/prisma/manual_migrations.ts index be51893a..e73e7146 100644 --- a/prisma/manual_migrations.ts +++ b/prisma/manual_migrations.ts @@ -21,7 +21,7 @@ async function shouldSkipMigration(migrationKey: string): Promise { SELECT revision, status from "public"."_Migration" WHERE "name" like ${`%${migrationKey}%`} AND "status" = 'MigrationSuccess' - LIMIT 1`.then((migration) => migration?.length > 0); + LIMIT 1`.then((migration) => (migration as any)?.length > 0); } //https://github.com/Visual-Regression-Tracker/Visual-Regression-Tracker/issues/243 diff --git a/prisma/migrations/20200503001556-init/schema.prisma b/prisma/migrations/20200503001556-init/schema.prisma index 7a24e66d..2473112b 100644 --- a/prisma/migrations/20200503001556-init/schema.prisma +++ b/prisma/migrations/20200503001556-init/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -19,10 +19,12 @@ model Build { // user User @relation(fields: [userId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) + User User? @relation(fields: [userId], references: [id]) + userId String? } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String builds Build[] testVariations TestVariation[] @@ -31,7 +33,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -47,7 +49,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String browser String? device String? @@ -63,7 +65,7 @@ model TestVariation { } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? @@ -80,4 +82,4 @@ enum TestStatus { new ok unresolved -} \ No newline at end of file +} diff --git a/prisma/migrations/20200524162125-baseline-history/schema.prisma b/prisma/migrations/20200524162125-baseline-history/schema.prisma index 9d436c64..c2d9a44e 100644 --- a/prisma/migrations/20200524162125-baseline-history/schema.prisma +++ b/prisma/migrations/20200524162125-baseline-history/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -22,7 +22,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String builds Build[] testVariations TestVariation[] @@ -31,7 +31,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -57,7 +57,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String browser String? device String? @@ -74,18 +74,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? @@ -102,4 +102,4 @@ enum TestStatus { new ok unresolved -} \ No newline at end of file +} diff --git a/prisma/migrations/20200526195312-approved-test-status-added/schema.prisma b/prisma/migrations/20200526195312-approved-test-status-added/schema.prisma index b61242f5..41c84acf 100644 --- a/prisma/migrations/20200526195312-approved-test-status-added/schema.prisma +++ b/prisma/migrations/20200526195312-approved-test-status-added/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -22,7 +22,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String builds Build[] testVariations TestVariation[] @@ -31,7 +31,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -57,7 +57,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String browser String? device String? @@ -74,18 +74,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? @@ -103,4 +103,4 @@ enum TestStatus { ok unresolved approved -} \ No newline at end of file +} diff --git a/prisma/migrations/20200627134248-comment-added/schema.prisma b/prisma/migrations/20200627134248-comment-added/schema.prisma index bea33676..62d4075e 100644 --- a/prisma/migrations/20200627134248-comment-added/schema.prisma +++ b/prisma/migrations/20200627134248-comment-added/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -22,7 +22,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String builds Build[] testVariations TestVariation[] @@ -31,7 +31,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -57,7 +57,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String browser String? device String? @@ -75,18 +75,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? diff --git a/prisma/migrations/20200707182652-project-name-unique-constraint/schema.prisma b/prisma/migrations/20200707182652-project-name-unique-constraint/schema.prisma index ff8e18e3..8a1c92ea 100644 --- a/prisma/migrations/20200707182652-project-name-unique-constraint/schema.prisma +++ b/prisma/migrations/20200707182652-project-name-unique-constraint/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -22,7 +22,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String builds Build[] testVariations TestVariation[] @@ -33,7 +33,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -59,7 +59,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String browser String? device String? @@ -77,18 +77,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? diff --git a/prisma/migrations/20200715232608-branch-strategy/schema.prisma b/prisma/migrations/20200715232608-branch-strategy/schema.prisma index aaaed347..4d625b98 100644 --- a/prisma/migrations/20200715232608-branch-strategy/schema.prisma +++ b/prisma/migrations/20200715232608-branch-strategy/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -22,7 +22,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String mainBranchName String @default("master") builds Build[] @@ -34,7 +34,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -63,7 +63,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String branchName String @default("master") browser String? @@ -84,18 +84,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? diff --git a/prisma/migrations/20200728221159-zero-diff-tolerance/schema.prisma b/prisma/migrations/20200728221159-zero-diff-tolerance/schema.prisma index 95cc207a..49b84fdb 100644 --- a/prisma/migrations/20200728221159-zero-diff-tolerance/schema.prisma +++ b/prisma/migrations/20200728221159-zero-diff-tolerance/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -22,7 +22,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String mainBranchName String @default("master") builds Build[] @@ -34,7 +34,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -63,7 +63,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String branchName String @default("master") browser String? @@ -84,18 +84,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? diff --git a/prisma/migrations/20200812213545-build-run-status/schema.prisma b/prisma/migrations/20200812213545-build-run-status/schema.prisma index 264cbfba..6c1c5dc5 100644 --- a/prisma/migrations/20200812213545-build-run-status/schema.prisma +++ b/prisma/migrations/20200812213545-build-run-status/schema.prisma @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -23,7 +23,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String mainBranchName String @default("master") builds Build[] @@ -35,7 +35,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -64,7 +64,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String branchName String @default("master") browser String? @@ -85,18 +85,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? 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 index 2430254d..dcee6e3f 100644 --- 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 @@ -4,11 +4,11 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { - id String @default(uuid()) @id + id String @id @default(uuid()) number Int? branchName String? status String? @@ -23,7 +23,7 @@ model Build { } model Project { - id String @default(uuid()) @id + id String @id @default(uuid()) name String mainBranchName String @default("master") builds Build[] @@ -35,7 +35,7 @@ model Project { } model TestRun { - id String @default(uuid()) @id + id String @id @default(uuid()) imageName String diffName String? diffPercent Float? @@ -64,7 +64,7 @@ model TestRun { } model TestVariation { - id String @default(uuid()) @id + id String @id @default(uuid()) name String branchName String @default("master") browser String? @@ -85,18 +85,18 @@ model TestVariation { } model Baseline { - id String @default(uuid()) @id + id String @id @default(uuid()) baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @default(uuid()) @id + id String @id @default(uuid()) email String @unique password String firstName String? diff --git a/prisma/migrations/20201007145002-builds-counter/schema.prisma b/prisma/migrations/20201007145002-builds-counter/schema.prisma index 46e0624f..5ee54263 100644 --- a/prisma/migrations/20201007145002-builds-counter/schema.prisma +++ b/prisma/migrations/20201007145002-builds-counter/schema.prisma @@ -1,11 +1,10 @@ generator client { provider = "prisma-client-js" - previewFeatures = ["atomicNumberOperations"] } datasource db { - provider = "postgresql" - url = "***" + provider = "postgresql" + url = "***" } model Build { @@ -91,7 +90,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20201115155739-ci-build-id-added/schema.prisma b/prisma/migrations/20201115155739-ci-build-id-added/schema.prisma index 01b6e22e..da83b8a5 100644 --- a/prisma/migrations/20201115155739-ci-build-id-added/schema.prisma +++ b/prisma/migrations/20201115155739-ci-build-id-added/schema.prisma @@ -1,11 +1,10 @@ generator client { - provider = "prisma-client-js" - previewFeatures = ["atomicNumberOperations"] + provider = "prisma-client-js" } datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -92,7 +91,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20201201211711-test-run--temp-ignore-areas-added/schema.prisma b/prisma/migrations/20201201211711-test-run--temp-ignore-areas-added/schema.prisma index 19c416fa..5325b09d 100644 --- a/prisma/migrations/20201201211711-test-run--temp-ignore-areas-added/schema.prisma +++ b/prisma/migrations/20201201211711-test-run--temp-ignore-areas-added/schema.prisma @@ -1,11 +1,10 @@ generator client { - provider = "prisma-client-js" - previewFeatures = ["atomicNumberOperations"] + provider = "prisma-client-js" } datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -93,7 +92,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210118201534-build--project-id---ci-build-id-constraint/schema.prisma b/prisma/migrations/20210118201534-build--project-id---ci-build-id-constraint/schema.prisma index 01ef0d55..2fec95fe 100644 --- a/prisma/migrations/20210118201534-build--project-id---ci-build-id-constraint/schema.prisma +++ b/prisma/migrations/20210118201534-build--project-id---ci-build-id-constraint/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -94,7 +94,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210130115922-test-run-auto-approve-status-added/schema.prisma b/prisma/migrations/20210130115922-test-run-auto-approve-status-added/schema.prisma index f34e30cd..df610edc 100644 --- a/prisma/migrations/20210130115922-test-run-auto-approve-status-added/schema.prisma +++ b/prisma/migrations/20210130115922-test-run-auto-approve-status-added/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -94,7 +94,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210228121726-test-run--nullable-test-variation-id/schema.prisma b/prisma/migrations/20210228121726-test-run--nullable-test-variation-id/schema.prisma index a8ac40c3..8028ffa1 100644 --- a/prisma/migrations/20210228121726-test-run--nullable-test-variation-id/schema.prisma +++ b/prisma/migrations/20210228121726-test-run--nullable-test-variation-id/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -94,7 +94,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210405171118-github_243-set-empty-test-variation-tags-instead-of-null/schema.prisma b/prisma/migrations/20210405171118-github_243-set-empty-test-variation-tags-instead-of-null/schema.prisma index 9019c4ab..74abed73 100644 --- a/prisma/migrations/20210405171118-github_243-set-empty-test-variation-tags-instead-of-null/schema.prisma +++ b/prisma/migrations/20210405171118-github_243-set-empty-test-variation-tags-instead-of-null/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -94,7 +94,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210425191116-github_215_project_config/schema.prisma b/prisma/migrations/20210425191116-github_215_project_config/schema.prisma index 0d1cfc6c..2375c8b3 100644 --- a/prisma/migrations/20210425191116-github_215_project_config/schema.prisma +++ b/prisma/migrations/20210425191116-github_215_project_config/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -100,7 +100,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210517203552-add-custom-tags/schema.prisma b/prisma/migrations/20210517203552-add-custom-tags/schema.prisma index a37836bf..fa22d745 100644 --- a/prisma/migrations/20210517203552-add-custom-tags/schema.prisma +++ b/prisma/migrations/20210517203552-add-custom-tags/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -102,7 +102,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210605124856-image-compare-config-as-json/schema.prisma b/prisma/migrations/20210605124856-image-compare-config-as-json/schema.prisma index f1422676..7d852295 100644 --- a/prisma/migrations/20210605124856-image-compare-config-as-json/schema.prisma +++ b/prisma/migrations/20210605124856-image-compare-config-as-json/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -100,7 +100,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210612140950-limit-build-number/schema.prisma b/prisma/migrations/20210612140950-limit-build-number/schema.prisma index 617ef110..1205c16a 100644 --- a/prisma/migrations/20210612140950-limit-build-number/schema.prisma +++ b/prisma/migrations/20210612140950-limit-build-number/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -101,7 +101,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) diff --git a/prisma/migrations/20210705154453-baseline-author/schema.prisma b/prisma/migrations/20210705154453-baseline-author/schema.prisma index e3dbff04..9dbe079e 100644 --- a/prisma/migrations/20210705154453-baseline-author/schema.prisma +++ b/prisma/migrations/20210705154453-baseline-author/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -101,26 +101,26 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) userId String? user User? @relation(fields: [userId], references: [id]) - updatedAt DateTime @updatedAt + updatedAt DateTime @updatedAt createdAt DateTime @default(now()) } model User { - id String @id @default(uuid()) - email String @unique + id String @id @default(uuid()) + email String @unique password String firstName String? lastName String? - apiKey String @unique - isActive Boolean @default(true) + apiKey String @unique + isActive Boolean @default(true) builds Build[] baselines Baseline[] - updatedAt DateTime @updatedAt - createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + createdAt DateTime @default(now()) } enum TestStatus { diff --git a/prisma/migrations/20210709115233-gh-275-max-branch-lifetime/schema.prisma b/prisma/migrations/20210709115233-gh-275-max-branch-lifetime/schema.prisma index b19e84ac..6917ea55 100644 --- a/prisma/migrations/20210709115233-gh-275-max-branch-lifetime/schema.prisma +++ b/prisma/migrations/20210709115233-gh-275-max-branch-lifetime/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -102,7 +102,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) userId String? user User? @relation(fields: [userId], references: [id]) diff --git a/prisma/migrations/20210709133029-275-project-to-testrun-relation/schema.prisma b/prisma/migrations/20210709133029-275-project-to-testrun-relation/schema.prisma index a91c3cbf..73075b28 100644 --- a/prisma/migrations/20210709133029-275-project-to-testrun-relation/schema.prisma +++ b/prisma/migrations/20210709133029-275-project-to-testrun-relation/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -105,7 +105,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) userId String? user User? @relation(fields: [userId], references: [id]) diff --git a/prisma/migrations/20210724121852-roles/schema.prisma b/prisma/migrations/20210724121852-roles/schema.prisma index 1e96e1e6..1004fcd1 100644 --- a/prisma/migrations/20210724121852-roles/schema.prisma +++ b/prisma/migrations/20210724121852-roles/schema.prisma @@ -4,7 +4,7 @@ generator client { datasource db { provider = "postgresql" - url = "***" + url = "***" } model Build { @@ -105,7 +105,7 @@ model Baseline { baselineName String testVariationId String testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? + testRunId String? @unique testRun TestRun? @relation(fields: [testRunId], references: [id]) userId String? user User? @relation(fields: [userId], references: [id]) diff --git a/prisma/package.json b/prisma/package.json index bf404ecf..7fbfa918 100644 --- a/prisma/package.json +++ b/prisma/package.json @@ -7,12 +7,12 @@ "license": "UNLICENSED", "scripts": {}, "dependencies": { - "@prisma/client": "2.12.1", + "@prisma/client": "^3.15.2", "bcryptjs": "^2.4.3" }, "devDependencies": { - "@prisma/cli": "2.12.1", "@types/bcryptjs": "^2.4.2", + "prisma": "^3.15.2", "ts-node": "^8.10.2", "typescript": "^3.9.7" } diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 72da9e09..5eaa8c2e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,36 +13,33 @@ model Build { 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? + project Project @relation(fields: [projectId], references: [id]) + user User? @relation(fields: [userId], references: [id]) + testRuns TestRun[] @@unique([projectId, ciBuildId]) } model Project { id String @id @default(uuid()) - name String + name String @unique mainBranchName String @default("master") - builds Build[] buildsCounter Int @default(0) maxBuildAllowed Int @default(100) maxBranchLifetime Int @default(30) - testVariations TestVariation[] updatedAt DateTime @updatedAt createdAt DateTime @default(now()) - // config autoApproveFeature Boolean @default(false) imageComparison ImageComparison @default(pixelmatch) imageComparisonConfig String @default("{ \"threshold\": 0.1, \"ignoreAntialiasing\": true, \"allowDiffDimensions\": false }") - - TestRun TestRun[] - @@unique([name]) + builds Build[] + TestRun TestRun[] + testVariations TestVariation[] } model TestRun { @@ -54,15 +51,11 @@ model TestRun { pixelMisMatchCount Int? status TestStatus buildId String - build Build @relation(fields: [buildId], references: [id]) testVariationId String? - testVariation TestVariation? @relation(fields: [testVariationId], references: [id]) projectId String? - project Project? @relation(fields: [projectId], references: [id]) merge Boolean @default(false) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) - // Test variation data name String @default("") browser String? device String? @@ -71,11 +64,14 @@ model TestRun { customTags String? @default("") baselineName String? comment String? - baseline Baseline? branchName String @default("master") baselineBranchName String? ignoreAreas String @default("[]") tempIgnoreAreas String @default("[]") + build Build @relation(fields: [buildId], references: [id]) + project Project? @relation(fields: [projectId], references: [id]) + testVariation TestVariation? @relation(fields: [testVariationId], references: [id]) + baseline Baseline? } model TestVariation { @@ -90,12 +86,12 @@ model TestVariation { 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()) + project Project @relation(fields: [projectId], references: [id]) + baselines Baseline[] + testRuns TestRun[] @@unique([projectId, name, browser, device, os, viewport, customTags, branchName]) } @@ -104,13 +100,13 @@ model Baseline { id String @id @default(uuid()) baselineName String testVariationId String - testVariation TestVariation @relation(fields: [testVariationId], references: [id]) - testRunId String? - testRun TestRun? @relation(fields: [testRunId], references: [id]) + testRunId String? @unique userId String? - user User? @relation(fields: [userId], references: [id]) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) + testRun TestRun? @relation(fields: [testRunId], references: [id]) + testVariation TestVariation @relation(fields: [testVariationId], references: [id]) + user User? @relation(fields: [userId], references: [id]) } model User { @@ -121,11 +117,11 @@ model User { lastName String? apiKey String @unique isActive Boolean @default(true) - builds Build[] - baselines Baseline[] role Role @default(guest) updatedAt DateTime @updatedAt createdAt DateTime @default(now()) + baselines Baseline[] + builds Build[] } enum TestStatus { diff --git a/src/health/health.controller.ts b/src/health/health.controller.ts index 891bddeb..a7709c45 100644 --- a/src/health/health.controller.ts +++ b/src/health/health.controller.ts @@ -13,7 +13,7 @@ export class HealthController { @HealthCheck() check() { return this.health.check([ - () => this.prismaService.$queryRaw('SELECT 1'), + () => this.prismaService.$queryRaw`SELECT 1`, ]); } } diff --git a/src/test-variations/test-variations.service.ts b/src/test-variations/test-variations.service.ts index a2e88ef5..7b08d3a4 100644 --- a/src/test-variations/test-variations.service.ts +++ b/src/test-variations/test-variations.service.ts @@ -1,6 +1,6 @@ import { Injectable, Inject, forwardRef, Logger } from '@nestjs/common'; import { PrismaService } from '../prisma/prisma.service'; -import { TestVariation, Baseline, Prisma, Build } from '@prisma/client'; +import { TestVariation, Baseline, Build } from '@prisma/client'; import { StaticService } from '../shared/static/static.service'; import { BuildsService } from '../builds/builds.service'; import { TestRunsService } from '../test-runs/test-runs.service'; @@ -42,7 +42,7 @@ export class TestVariationsService { } async findUnique( - data: Prisma.ProjectIdNameBrowserDeviceOsViewportCustomTagsBranchNameCompoundUniqueInput + data: BaselineDataDto & { projectId: string } ): Promise { return this.prismaService.testVariation.findUnique({ where: {