Skip to content

Commit ddddcd7

Browse files
authored
Merge pull request #4 from Visual-Regression-Tracker/12-db-seed
12 db seed
2 parents 0dc393e + 60fd384 commit ddddcd7

File tree

12 files changed

+330
-90
lines changed

12 files changed

+330
-90
lines changed

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vrt-backend",
3-
"version": "1.0.0",
3+
"version": "1.1.0",
44
"description": "",
55
"author": "",
66
"private": true,
@@ -19,8 +19,7 @@
1919
"test:cov": "jest --coverage",
2020
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
2121
"test:e2e": "jest --config ./test/jest-e2e.json",
22-
"docker:build_api": "npm run test && npm run test:e2e && docker build -t visualregressiontracker/api:$npm_package_version -f ./Dockerfile . && docker push visualregressiontracker/api:$npm_package_version",
23-
"docker:build_migration": "docker build -t visualregressiontracker/migration:1.0.0 -f ./prisma/Dockerfile ./prisma"
22+
"docker:build_api": "npm run test && npm run test:e2e && docker build -t visualregressiontracker/api:$npm_package_version -f ./Dockerfile . && docker push visualregressiontracker/api:$npm_package_version"
2423
},
2524
"dependencies": {
2625
"@nestjs/common": "^7.0.0",
@@ -30,7 +29,7 @@
3029
"@nestjs/passport": "^7.0.0",
3130
"@nestjs/platform-express": "^7.0.0",
3231
"@nestjs/swagger": "^4.5.1",
33-
"@prisma/client": "^2.0.0-beta.5",
32+
"@prisma/client": "^2.0.0-beta.6",
3433
"bcryptjs": "^2.4.3",
3534
"class-transformer": "^0.2.3",
3635
"class-validator": "^0.11.1",
@@ -52,7 +51,7 @@
5251
"@nestjs/cli": "^7.0.0",
5352
"@nestjs/schematics": "^7.0.0",
5453
"@nestjs/testing": "^7.0.0",
55-
"@prisma/cli": "^2.0.0-beta.5",
54+
"@prisma/cli": "^2.0.0-beta.6",
5655
"@types/bcryptjs": "^2.4.2",
5756
"@types/express": "^4.17.3",
5857
"@types/jest": "25.1.4",

prisma/.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/node_modules

prisma/.gitignore

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# compiled output
2+
/dist
3+
/node_modules
4+
5+
# Logs
6+
logs
7+
*.log
8+
npm-debug.log*
9+
yarn-debug.log*
10+
yarn-error.log*
11+
lerna-debug.log*
12+
13+
# OS
14+
.DS_Store
15+
16+
# Tests
17+
/coverage
18+
/.nyc_output
19+
20+
# IDEs and editors
21+
/.idea
22+
.project
23+
.classpath
24+
.c9/
25+
*.launch
26+
.settings/
27+
*.sublime-workspace
28+
29+
# IDE - VSCode
30+
.vscode/*
31+
!.vscode/settings.json
32+
!.vscode/tasks.json
33+
!.vscode/launch.json
34+
!.vscode/extensions.json
35+
36+
/imageUploads

prisma/Dockerfile

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
FROM node:12-alpine
22

3-
# Install @prisma/cli for the migration
4-
RUN npm install -g @prisma/cli --unsafe-perm
3+
WORKDIR /app
54

6-
# Copy schema and migration folder
7-
COPY schema.prisma /schema.prisma
8-
COPY migrations/ /migrations/
5+
COPY . .
96

10-
CMD [ "prisma", "migrate", "up", "-c", "--experimental"]
7+
RUN npm ci
8+
9+
RUN chmod +x /app/entrypoint.sh
10+
11+
ENTRYPOINT ["/app/entrypoint.sh"]
12+
13+
CMD ["sh"]

prisma/entrypoint.sh

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#!/bin/sh
2+
set -e
3+
4+
echo Start applying migrations...
5+
6+
# apply migration
7+
npx prisma migrate up -c --experimental
8+
9+
echo Seeding data...
10+
11+
# seed data
12+
npx ts-node seed.ts

prisma/package-lock.json

Lines changed: 132 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

prisma/package.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "vrt-migration",
3+
"version": "1.1.0",
4+
"description": "",
5+
"author": "",
6+
"private": true,
7+
"license": "UNLICENSED",
8+
"scripts": {
9+
"docker:build_migration": "docker build -t visualregressiontracker/migration:$npm_package_version -f ./Dockerfile ."
10+
},
11+
"dependencies": {
12+
"@prisma/client": "^2.0.0-beta.6",
13+
"bcryptjs": "^2.4.3",
14+
"uuid-apikey": "^1.4.6"
15+
},
16+
"devDependencies": {
17+
"ts-node": "^8.8.2",
18+
"@prisma/cli": "^2.0.0-beta.6",
19+
"@types/bcryptjs": "^2.4.2",
20+
"@types/uuid-apikey": "^1.4.0",
21+
"typescript": "^3.7.4"
22+
}
23+
}

prisma/seed.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { PrismaClient } from '@prisma/client';
2+
import uuidAPIKey from 'uuid-apikey';
3+
import { genSalt, hash } from 'bcryptjs';
4+
5+
const prisma = new PrismaClient({
6+
log: ['query'],
7+
});
8+
9+
async function seed() {
10+
await prisma.connect();
11+
console.log('Seeding default data...');
12+
await Promise.all([createDefaultUser(), createDefaultProject()]);
13+
await prisma.disconnect();
14+
}
15+
16+
seed()
17+
.catch((e) => console.error('e', e))
18+
.finally(async () => await prisma.disconnect());
19+
20+
async function createDefaultUser() {
21+
const userList = await prisma.user.findMany();
22+
console.log(userList);
23+
if (userList.length === 0) {
24+
const defaultEmail = '[email protected]';
25+
const defaultPassword = '123456';
26+
const salt = await genSalt(10);
27+
await prisma.user
28+
.create({
29+
data: {
30+
email: defaultEmail,
31+
firstName: 'fname',
32+
lastName: 'lname',
33+
apiKey: uuidAPIKey.create({ noDashes: true }).apiKey,
34+
password: await hash(defaultPassword, salt),
35+
},
36+
})
37+
.then((user) => {
38+
console.log('###########################');
39+
console.log('## CREATING DEFAULT USER ##');
40+
console.log('###########################');
41+
console.log('');
42+
console.log(`The user with the email "${defaultEmail}" and password "${defaultPassword}" was created`);
43+
console.log(`The Api key is: ${user.apiKey}`);
44+
});
45+
}
46+
}
47+
48+
async function createDefaultProject() {
49+
const projectList = await prisma.project.findMany();
50+
console.log(projectList);
51+
if (projectList.length === 0) {
52+
await prisma.project
53+
.create({
54+
data: {
55+
name: 'Default project',
56+
},
57+
})
58+
.then((project) => {
59+
console.log('##############################');
60+
console.log('## CREATING DEFAULT PROJECT ##');
61+
console.log('##############################');
62+
console.log('');
63+
console.log(`Project name ${project.name}`);
64+
console.log(`Project key: ${project.id}`);
65+
});
66+
}
67+
}

prisma/tsconfig.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"compilerOptions": {
3+
"module": "commonjs",
4+
"declaration": true,
5+
"removeComments": true,
6+
"emitDecoratorMetadata": true,
7+
"experimentalDecorators": true,
8+
"target": "es2018",
9+
"sourceMap": true,
10+
"baseUrl": "./",
11+
"incremental": true,
12+
"skipLibCheck": true,
13+
"esModuleInterop": true
14+
},
15+
"exclude": ["node_modules"]
16+
}
17+

0 commit comments

Comments
 (0)