Add Role to TeamUser.

This commit is contained in:
Brian Cao 2022-11-28 13:08:48 -08:00
parent 502facd426
commit d5437c895e
4 changed files with 38 additions and 29 deletions

View File

@ -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")
}

View File

@ -40,6 +40,27 @@ export async function getPermissionsByUserId(userId, name?: string): Promise<Per
});
}
export async function getPermissionsByTeamId(teamId, name?: string): Promise<Permission[]> {
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,

View File

@ -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<TeamUser> {
return prisma.client.teamUser.create({
data: {
id: uuid(),
userId,
teamId,
roleId,
},
});
}
export async function getTeamUser(where: Prisma.TeamUserWhereInput): Promise<TeamUser> {

View File

@ -21,11 +21,10 @@ export async function getUserRoles(where: Prisma.UserRoleWhereInput): Promise<Us
});
}
export async function getUserRolesByUserId(userId: string, teamId?: string): Promise<UserRole[]> {
export async function getUserRolesByUserId(userId: string): Promise<UserRole[]> {
return prisma.client.userRole.findMany({
where: {
userId,
teamId,
},
});
}