diff --git a/db/postgresql/schema.prisma b/db/postgresql/schema.prisma index 962d9a15..49661d92 100644 --- a/db/postgresql/schema.prisma +++ b/db/postgresql/schema.prisma @@ -140,6 +140,7 @@ model Role { groupRoles GroupRole[] userRoles UserRole[] RolePermission RolePermission[] + TeamUser TeamUser[] @@map("role") } @@ -162,15 +163,13 @@ model UserRole { id String @id() @unique() @map("user_role_id") @db.Uuid roleId String @map("role_id") @db.Uuid userId String @map("user_id") @db.Uuid - teamId String? @map("team_id") @db.Uuid createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) isDeleted Boolean @default(false) @map("is_deleted") - role Role @relation(fields: [roleId], references: [id]) - user User @relation(fields: [userId], references: [id]) - team Team? @relation(fields: [teamId], references: [id]) + role Role @relation(fields: [roleId], references: [id]) + user User @relation(fields: [userId], references: [id]) - @@unique([roleId, userId, teamId]) + @@unique([roleId, userId]) @@map("user_role") } @@ -181,7 +180,6 @@ model Team { isDeleted Boolean @default(false) @map("is_deleted") teamUsers TeamUser[] - UserRole UserRole[] Website Website[] @@map("team") @@ -191,12 +189,14 @@ model TeamUser { id String @id() @unique() @map("team_user_id") @db.Uuid teamId String @map("team_id") @db.Uuid userId String @map("user_id") @db.Uuid + roleId String @map("role_id") @db.Uuid isOwner Boolean @default(false) @map("is_owner") createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) isDeleted Boolean @default(false) @map("is_deleted") team Team @relation(fields: [teamId], references: [id]) user User @relation(fields: [userId], references: [id]) + role Role @relation(fields: [roleId], references: [id]) @@map("team_user") } diff --git a/queries/admin/permission.ts b/queries/admin/permission.ts index 9c98065c..9667114a 100644 --- a/queries/admin/permission.ts +++ b/queries/admin/permission.ts @@ -40,6 +40,27 @@ export async function getPermissionsByUserId(userId, name?: string): Promise { + return prisma.client.permission.findMany({ + where: { + ...(name ? { name } : {}), + RolePermission: { + every: { + role: { + is: { + TeamUser: { + every: { + teamId, + }, + }, + }, + }, + }, + }, + }, + }); +} + export async function updatePermission( data: Prisma.PermissionUpdateInput, where: Prisma.PermissionWhereUniqueInput, diff --git a/queries/admin/teamUser.ts b/queries/admin/teamUser.ts index 0adf506f..a0160560 100644 --- a/queries/admin/teamUser.ts +++ b/queries/admin/teamUser.ts @@ -1,4 +1,4 @@ -import { Prisma, TeamUser, UserRole } from '@prisma/client'; +import { Prisma, TeamUser } from '@prisma/client'; import { uuid } from 'lib/crypto'; import prisma from 'lib/prisma'; @@ -6,26 +6,15 @@ export async function createTeamUser( userId: string, teamId: string, roleId: string, -): Promise<[TeamUser, UserRole]> { - const { client } = prisma; - - return client.$transaction([ - client.teamUser.create({ - data: { - id: uuid(), - userId, - teamId, - }, - }), - client.userRole.create({ - data: { - id: uuid(), - userId, - teamId, - roleId, - }, - }), - ]); +): Promise { + return prisma.client.teamUser.create({ + data: { + id: uuid(), + userId, + teamId, + roleId, + }, + }); } export async function getTeamUser(where: Prisma.TeamUserWhereInput): Promise { diff --git a/queries/admin/userRole.ts b/queries/admin/userRole.ts index b93b1042..a5c24d8f 100644 --- a/queries/admin/userRole.ts +++ b/queries/admin/userRole.ts @@ -21,11 +21,10 @@ export async function getUserRoles(where: Prisma.UserRoleWhereInput): Promise { +export async function getUserRolesByUserId(userId: string): Promise { return prisma.client.userRole.findMany({ where: { userId, - teamId, }, }); }