Skip to content
This repository was archived by the owner on Jul 2, 2022. It is now read-only.

Commit d2af4cd

Browse files
committed
Merge branch 'v3/api' of github.com:opensummerofcode/selections into feat/applicant-list
2 parents e1b0d4c + 1e0fbb0 commit d2af4cd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+848
-203
lines changed

common/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ export * from './types/Suggestion';
44
export * from './types/User';
55
export * from './types/Project';
66
export * from './types/Profile';
7-
7+
export * from './types/Skill';
88
export * as queries from './graphql/queries';

common/src/types/Skill.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
export interface ISkill {
2+
readonly id: number;
3+
name: string;
4+
}

server/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@
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",
2222
"prisma:generate": "npx prisma generate",
23-
"prisma:migrate": "npx prisma migrate dev"
23+
"prisma:migrate": "npx prisma migrate dev",
24+
"ts-node": "ts-node --compiler-options \"{\\\"module\\\":\\\"commonjs\\\"}\"",
25+
"seed": "npx prisma db seed --preview-feature"
2426
},
2527
"dependencies": {
2628
"@nestjs/cli": "^7.6.0",
@@ -53,6 +55,7 @@
5355
"eslint": "^7.22.0",
5456
"eslint-config-prettier": "^8.1.0",
5557
"eslint-plugin-prettier": "^3.3.1",
58+
"faker": "^5.5.3",
5659
"jest": "^26.6.3",
5760
"prettier": "^2.2.1",
5861
"prisma": "^2.26.0",

server/prisma/migrations/20210719195324_add_unique_constraint/migration.sql

Lines changed: 0 additions & 8 deletions
This file was deleted.

server/prisma/migrations/20210720133549_/migration.sql

Lines changed: 0 additions & 10 deletions
This file was deleted.

server/prisma/migrations/20210720200816_add_ondelete_cascade/migration.sql

Lines changed: 0 additions & 21 deletions
This file was deleted.

server/prisma/migrations/20210721142537_cascading_ondelete_setnull/migration.sql

Lines changed: 0 additions & 14 deletions
This file was deleted.

server/prisma/migrations/20210721143009_optional/migration.sql

Lines changed: 0 additions & 2 deletions
This file was deleted.

server/prisma/migrations/20210722083320_optional_imageurl/migration.sql

Lines changed: 0 additions & 26 deletions
This file was deleted.

server/prisma/migrations/20210722083728_/migration.sql

Lines changed: 0 additions & 23 deletions
This file was deleted.

server/prisma/migrations/20210725080216_name_to_displayname/migration.sql

Lines changed: 0 additions & 10 deletions
This file was deleted.

server/prisma/migrations/20210725125303_/migration.sql

Lines changed: 0 additions & 15 deletions
This file was deleted.

server/prisma/migrations/20210725201313_add_provider_column/migration.sql

Lines changed: 0 additions & 5 deletions
This file was deleted.

server/prisma/migrations/20210719191604_init/migration.sql renamed to server/prisma/migrations/20210727092840_init/migration.sql

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,19 @@ CREATE TYPE "Role" AS ENUM ('USER', 'COACH', 'ADMIN');
44
-- CreateEnum
55
CREATE TYPE "Status" AS ENUM ('YES', 'MAYBE', 'NO');
66

7+
-- CreateEnum
8+
CREATE TYPE "OAuthProvider" AS ENUM ('GITHUB');
9+
710
-- CreateTable
811
CREATE TABLE "User" (
912
"id" SERIAL NOT NULL,
1013
"uuid" TEXT NOT NULL,
14+
"externalId" TEXT,
15+
"provider" "OAuthProvider",
1116
"email" TEXT NOT NULL,
12-
"firstname" TEXT NOT NULL,
13-
"lastname" TEXT NOT NULL,
17+
"displayName" TEXT NOT NULL,
18+
"firstname" TEXT,
19+
"lastname" TEXT,
1420
"imageUrl" TEXT,
1521
"role" "Role" NOT NULL DEFAULT E'USER',
1622
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -26,8 +32,8 @@ CREATE TABLE "Project" (
2632
"name" TEXT NOT NULL,
2733
"description" TEXT,
2834
"client" TEXT,
29-
"template_url" TEXT,
30-
"leadCoachId" INTEGER NOT NULL,
35+
"templateUrl" TEXT,
36+
"leadCoachId" INTEGER,
3137
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
3238
"updatedAt" TIMESTAMP(3) NOT NULL,
3339

@@ -87,7 +93,7 @@ CREATE TABLE "Address" (
8793
CREATE TABLE "Suggestion" (
8894
"id" SERIAL NOT NULL,
8995
"status" "Status" NOT NULL,
90-
"Comment" TEXT NOT NULL,
96+
"comment" TEXT NOT NULL,
9197
"applicantId" INTEGER NOT NULL,
9298
"suggesterId" INTEGER NOT NULL,
9399

@@ -98,7 +104,7 @@ CREATE TABLE "Suggestion" (
98104
CREATE TABLE "Profile" (
99105
"id" SERIAL NOT NULL,
100106
"name" TEXT NOT NULL,
101-
"image_url" TEXT NOT NULL,
107+
"image_url" TEXT,
102108

103109
PRIMARY KEY ("id")
104110
);
@@ -130,7 +136,7 @@ CREATE TABLE "Skill" (
130136
-- CreateTable
131137
CREATE TABLE "SkillLevel" (
132138
"id" SERIAL NOT NULL,
133-
"level" TEXT NOT NULL,
139+
"name" TEXT NOT NULL,
134140

135141
PRIMARY KEY ("id")
136142
);
@@ -141,7 +147,7 @@ CREATE TABLE "ApplicantSkill" (
141147
"skillId" INTEGER NOT NULL,
142148
"levelId" INTEGER NOT NULL,
143149

144-
PRIMARY KEY ("applicantId","skillId","levelId")
150+
PRIMARY KEY ("applicantId","skillId")
145151
);
146152

147153
-- CreateTable
@@ -175,41 +181,53 @@ CREATE TABLE "Question" (
175181
-- CreateIndex
176182
CREATE UNIQUE INDEX "User.uuid_unique" ON "User"("uuid");
177183

184+
-- CreateIndex
185+
CREATE UNIQUE INDEX "User.externalId_unique" ON "User"("externalId");
186+
178187
-- CreateIndex
179188
CREATE UNIQUE INDEX "User.email_unique" ON "User"("email");
180189

190+
-- CreateIndex
191+
CREATE UNIQUE INDEX "Project.uuid_unique" ON "Project"("uuid");
192+
193+
-- CreateIndex
194+
CREATE UNIQUE INDEX "Applicant.uuid_unique" ON "Applicant"("uuid");
195+
181196
-- CreateIndex
182197
CREATE UNIQUE INDEX "Applicant.email_unique" ON "Applicant"("email");
183198

184199
-- CreateIndex
185200
CREATE UNIQUE INDEX "Applicant.addressId_unique" ON "Applicant"("addressId");
186201

187202
-- CreateIndex
188-
CREATE UNIQUE INDEX "SkillLevel.level_unique" ON "SkillLevel"("level");
203+
CREATE UNIQUE INDEX "Skill.name_unique" ON "Skill"("name");
204+
205+
-- CreateIndex
206+
CREATE UNIQUE INDEX "SkillLevel.name_unique" ON "SkillLevel"("name");
189207

190208
-- AddForeignKey
191-
ALTER TABLE "Project" ADD FOREIGN KEY ("leadCoachId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
209+
ALTER TABLE "Project" ADD FOREIGN KEY ("leadCoachId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
192210

193211
-- AddForeignKey
194-
ALTER TABLE "UsersOnProjects" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
212+
ALTER TABLE "UsersOnProjects" ADD FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
195213

196214
-- AddForeignKey
197-
ALTER TABLE "UsersOnProjects" ADD FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
215+
ALTER TABLE "UsersOnProjects" ADD FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
198216

199217
-- AddForeignKey
200218
ALTER TABLE "Applicant" ADD FOREIGN KEY ("addressId") REFERENCES "Address"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
201219

202220
-- AddForeignKey
203-
ALTER TABLE "ApplicantsOnProjects" ADD FOREIGN KEY ("applicantId") REFERENCES "Applicant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
221+
ALTER TABLE "ApplicantsOnProjects" ADD FOREIGN KEY ("applicantId") REFERENCES "Applicant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
204222

205223
-- AddForeignKey
206-
ALTER TABLE "ApplicantsOnProjects" ADD FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
224+
ALTER TABLE "ApplicantsOnProjects" ADD FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
207225

208226
-- AddForeignKey
209-
ALTER TABLE "Suggestion" ADD FOREIGN KEY ("applicantId") REFERENCES "Applicant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
227+
ALTER TABLE "Suggestion" ADD FOREIGN KEY ("applicantId") REFERENCES "Applicant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
210228

211229
-- AddForeignKey
212-
ALTER TABLE "Suggestion" ADD FOREIGN KEY ("suggesterId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
230+
ALTER TABLE "Suggestion" ADD FOREIGN KEY ("suggesterId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
213231

214232
-- AddForeignKey
215233
ALTER TABLE "ApplicantProfile" ADD FOREIGN KEY ("applicantId") REFERENCES "Applicant"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

server/prisma/schema.prisma

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ datasource db {
66

77
generator client {
88
provider = "prisma-client-js"
9-
previewFeatures = ["referentialActions"]
9+
previewFeatures = ["referentialActions", "selectRelationCount"]
1010
}
1111

1212
enum Role {
@@ -150,14 +150,14 @@ model ProjectProfile {
150150

151151
model Skill {
152152
id Int @id @default(autoincrement())
153-
name String
153+
name String @unique
154154
applicants ApplicantSkill[]
155155
projects ProjectSkill[]
156156
}
157157

158158
model SkillLevel {
159159
id Int @id @default(autoincrement())
160-
level String @unique
160+
name String @unique
161161
ApplicantSkill ApplicantSkill[]
162162
}
163163

@@ -169,7 +169,7 @@ model ApplicantSkill {
169169
level SkillLevel @relation(fields: [levelId], references: [id])
170170
levelId Int
171171
172-
@@id([applicantId, skillId, levelId])
172+
@@id([applicantId, skillId])
173173
}
174174

175175
model ProjectSkill {

server/prisma/seed.ts

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import { PrismaClient, Role } from '@prisma/client';
2+
import * as faker from 'faker';
3+
4+
const prisma = new PrismaClient();
5+
6+
async function main() {
7+
console.log('seeding...');
8+
9+
// for (let i = 0; i < 10; i++) {
10+
// await prisma.user.upsert({
11+
// where: { email: faker.internet.email() },
12+
// update: {},
13+
// create: {
14+
// uuid: faker.datatype.uuid(),
15+
// email: faker.internet.email(),
16+
// firstname: faker.name.firstName(),
17+
// lastname: faker.name.lastName(),
18+
// role: Math.random() < 0.5 ? Role.COACH : Role.USER
19+
// }
20+
// });
21+
22+
// const genders = ['male', 'female', 'nonbinary'];
23+
24+
// await prisma.applicant.upsert({
25+
// where: { email: faker.internet.email() },
26+
// update: {},
27+
// create: {
28+
// uuid: faker.datatype.uuid(),
29+
// email: faker.internet.email(),
30+
// firstname: faker.name.firstName(),
31+
// lastname: faker.name.lastName(),
32+
// gender: genders[Math.floor(Math.random() * genders.length)],
33+
// nationality: 'Belgian',
34+
// phone: faker.phone.phoneNumber(),
35+
// address: {
36+
// create: {
37+
// addressLine: faker.address.streetAddress(),
38+
// city: faker.address.cityName(),
39+
// postalCode: faker.address.zipCode(),
40+
// state: faker.address.state(),
41+
// country: faker.address.country()
42+
// }
43+
// },
44+
// isAlumni: Math.random() < 0.5
45+
// }
46+
// });
47+
// }
48+
}
49+
50+
main()
51+
.catch((e) => {
52+
console.error(e);
53+
process.exit(1);
54+
})
55+
.finally(async () => {
56+
await prisma.$disconnect();
57+
});

0 commit comments

Comments
 (0)