From 8c77b1be4f91cf3d482c8daa4dceab75ebf584cc Mon Sep 17 00:00:00 2001 From: MTG2000 Date: Tue, 6 Sep 2022 11:41:09 +0300 Subject: [PATCH] feat: add recruit_roles to project DB modal/api --- api/functions/graphql/nexus-typegen.ts | 2 ++ api/functions/graphql/schema.graphql | 1 + api/functions/graphql/types/project.js | 23 +++++++++++++++++++ api/functions/graphql/types/users.js | 1 + .../migration.sql | 14 +++++++++++ prisma/schema.prisma | 22 ++++++++++++++---- 6 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 prisma/migrations/20220906083327_add_project_recruit_roles_tabel/migration.sql diff --git a/api/functions/graphql/nexus-typegen.ts b/api/functions/graphql/nexus-typegen.ts index 0137828..21ab32b 100644 --- a/api/functions/graphql/nexus-typegen.ts +++ b/api/functions/graphql/nexus-typegen.ts @@ -436,6 +436,7 @@ export interface NexusGenFieldTypes { id: number; // Int! lightning_address: string | null; // String lnurl_callback_url: string | null; // String + recruit_roles: NexusGenRootTypes['MakerRole'][]; // [MakerRole!]! screenshots: string[]; // [String!]! tags: NexusGenRootTypes['Tag'][]; // [Tag!]! thumbnail_image: string; // String! @@ -728,6 +729,7 @@ export interface NexusGenFieldTypeNames { id: 'Int' lightning_address: 'String' lnurl_callback_url: 'String' + recruit_roles: 'MakerRole' screenshots: 'String' tags: 'Tag' thumbnail_image: 'String' diff --git a/api/functions/graphql/schema.graphql b/api/functions/graphql/schema.graphql index 75e6573..995093b 100644 --- a/api/functions/graphql/schema.graphql +++ b/api/functions/graphql/schema.graphql @@ -234,6 +234,7 @@ type Project { id: Int! lightning_address: String lnurl_callback_url: String + recruit_roles: [MakerRole!]! screenshots: [String!]! tags: [Tag!]! thumbnail_image: String! diff --git a/api/functions/graphql/types/project.js b/api/functions/graphql/types/project.js index a9fed49..cc663bb 100644 --- a/api/functions/graphql/types/project.js +++ b/api/functions/graphql/types/project.js @@ -8,6 +8,7 @@ const { const { prisma } = require('../../../prisma'); const { paginationArgs, getLnurlDetails, lightningAddressToLnurl } = require('./helpers'); +const { MakerRole } = require('./users'); const Project = objectType({ @@ -44,6 +45,28 @@ const Project = objectType({ return prisma.project.findUnique({ where: { id: parent.id } }).tags(); } }) + + t.nonNull.list.nonNull.field('recruit_roles', { + type: MakerRole, + resolve: async (parent) => { + const data = await prisma.project.findUnique({ + where: { + id: parent.id + }, + select: { + recruit_roles: { + select: { + role: true, + level: true + } + }, + } + }) + return data.recruit_roles.map(data => { + return ({ ...data.role, level: data.level }) + }) + } + }) } }) diff --git a/api/functions/graphql/types/users.js b/api/functions/graphql/types/users.js index 8b9cd1c..7bdb310 100644 --- a/api/functions/graphql/types/users.js +++ b/api/functions/graphql/types/users.js @@ -451,6 +451,7 @@ module.exports = { User, MyProfile, WalletKey, + MakerRole, // Queries me, profile, diff --git a/prisma/migrations/20220906083327_add_project_recruit_roles_tabel/migration.sql b/prisma/migrations/20220906083327_add_project_recruit_roles_tabel/migration.sql new file mode 100644 index 0000000..54a0f2f --- /dev/null +++ b/prisma/migrations/20220906083327_add_project_recruit_roles_tabel/migration.sql @@ -0,0 +1,14 @@ +-- CreateTable +CREATE TABLE "ProjectRecruitRoles" ( + "projectId" INTEGER NOT NULL, + "roleId" INTEGER NOT NULL, + "level" INTEGER NOT NULL, + + CONSTRAINT "ProjectRecruitRoles_pkey" PRIMARY KEY ("projectId","roleId") +); + +-- AddForeignKey +ALTER TABLE "ProjectRecruitRoles" ADD CONSTRAINT "ProjectRecruitRoles_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "WorkRole"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ProjectRecruitRoles" ADD CONSTRAINT "ProjectRecruitRoles_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1a5b903..c7c5c26 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -89,10 +89,11 @@ model UsersOnWorkRoles { } model WorkRole { - id Int @id @default(autoincrement()) - title String @unique - icon String - users UsersOnWorkRoles[] + id Int @id @default(autoincrement()) + title String @unique + icon String + users UsersOnWorkRoles[] + projects ProjectRecruitRoles[] } model Skill { @@ -133,6 +134,19 @@ model Project { awards Award[] tags Tag[] + + recruit_roles ProjectRecruitRoles[] +} + +model ProjectRecruitRoles { + project Project @relation(fields: [projectId], references: [id]) + projectId Int + role WorkRole @relation(fields: [roleId], references: [id]) + roleId Int + + level Int + + @@id([projectId, roleId]) } model Award {