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[] groupRoles GroupRole[]
userRoles UserRole[] userRoles UserRole[]
RolePermission RolePermission[] RolePermission RolePermission[]
TeamUser TeamUser[]
@@map("role") @@map("role")
} }
@ -162,15 +163,13 @@ model UserRole {
id String @id() @unique() @map("user_role_id") @db.Uuid id String @id() @unique() @map("user_role_id") @db.Uuid
roleId String @map("role_id") @db.Uuid roleId String @map("role_id") @db.Uuid
userId String @map("user_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) createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
isDeleted Boolean @default(false) @map("is_deleted") isDeleted Boolean @default(false) @map("is_deleted")
role Role @relation(fields: [roleId], references: [id]) role Role @relation(fields: [roleId], references: [id])
user User @relation(fields: [userId], references: [id]) user User @relation(fields: [userId], references: [id])
team Team? @relation(fields: [teamId], references: [id])
@@unique([roleId, userId, teamId]) @@unique([roleId, userId])
@@map("user_role") @@map("user_role")
} }
@ -181,7 +180,6 @@ model Team {
isDeleted Boolean @default(false) @map("is_deleted") isDeleted Boolean @default(false) @map("is_deleted")
teamUsers TeamUser[] teamUsers TeamUser[]
UserRole UserRole[]
Website Website[] Website Website[]
@@map("team") @@map("team")
@ -191,12 +189,14 @@ model TeamUser {
id String @id() @unique() @map("team_user_id") @db.Uuid id String @id() @unique() @map("team_user_id") @db.Uuid
teamId String @map("team_id") @db.Uuid teamId String @map("team_id") @db.Uuid
userId String @map("user_id") @db.Uuid userId String @map("user_id") @db.Uuid
roleId String @map("role_id") @db.Uuid
isOwner Boolean @default(false) @map("is_owner") isOwner Boolean @default(false) @map("is_owner")
createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6) createdAt DateTime? @default(now()) @map("created_at") @db.Timestamptz(6)
isDeleted Boolean @default(false) @map("is_deleted") isDeleted Boolean @default(false) @map("is_deleted")
team Team @relation(fields: [teamId], references: [id]) team Team @relation(fields: [teamId], references: [id])
user User @relation(fields: [userId], references: [id]) user User @relation(fields: [userId], references: [id])
role Role @relation(fields: [roleId], references: [id])
@@map("team_user") @@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( export async function updatePermission(
data: Prisma.PermissionUpdateInput, data: Prisma.PermissionUpdateInput,
where: Prisma.PermissionWhereUniqueInput, 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 { uuid } from 'lib/crypto';
import prisma from 'lib/prisma'; import prisma from 'lib/prisma';
@ -6,26 +6,15 @@ export async function createTeamUser(
userId: string, userId: string,
teamId: string, teamId: string,
roleId: string, roleId: string,
): Promise<[TeamUser, UserRole]> { ): Promise<TeamUser> {
const { client } = prisma; return prisma.client.teamUser.create({
data: {
return client.$transaction([ id: uuid(),
client.teamUser.create({ userId,
data: { teamId,
id: uuid(), roleId,
userId, },
teamId, });
},
}),
client.userRole.create({
data: {
id: uuid(),
userId,
teamId,
roleId,
},
}),
]);
} }
export async function getTeamUser(where: Prisma.TeamUserWhereInput): Promise<TeamUser> { 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({ return prisma.client.userRole.findMany({
where: { where: {
userId, userId,
teamId,
}, },
}); });
} }