Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/utils/db/permissions/userGroups.db.server.ts
T

65 lines
1.4 KiB
TypeScript

import { db } from "~/utils/db.server";
export async function createUserGroup(userId: string, groupId: string) {
return await db.groupUser.create({
data: {
userId,
groupId,
},
});
}
export async function createUserGroups(groupId: string, userIds: string[]) {
const uniqueUserIds = [...new Set(userIds)];
if (uniqueUserIds.length === 0) {
return { count: 0 };
}
return await db.groupUser.createMany({
data: uniqueUserIds.map((userId) => ({
userId,
groupId,
})),
skipDuplicates: true,
});
}
export async function deleteUserGroup(userId: string, groupId: string) {
return await db.groupUser.deleteMany({
where: {
userId,
groupId,
},
});
}
export async function replaceGroupUsers(groupId: string, tenantId: string, userIds: string[]) {
const uniqueUserIds = [...new Set(userIds)];
return await db.$transaction(async (tx) => {
await tx.groupUser.deleteMany({
where: {
groupId,
group: { tenantId },
},
});
if (uniqueUserIds.length === 0) {
return { count: 0 };
}
return await tx.groupUser.createMany({
data: uniqueUserIds.map((userId) => ({
userId,
groupId,
})),
skipDuplicates: true,
});
});
}
export async function deleteGroupUsers(groupId: string, tenantId: string) {
return await db.groupUser.deleteMany({
where: {
groupId,
group: { tenantId },
},
});
}