65 lines
1.4 KiB
TypeScript
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 },
|
|
},
|
|
});
|
|
}
|