const prisma = require("../utils/prisma"); const WorkspaceUser = { createMany: async function (userId, workspaceIds = []) { if (workspaceIds.length === 0) return; try { await prisma.$transaction( workspaceIds.map((workspaceId) => prisma.workspace_users.create({ data: { user_id: userId, workspace_id: workspaceId }, }) ) ); } catch (error) { console.error(error.message); } return; }, createManyUsers: async function (userIds = [], workspaceId) { if (userIds.length === 0) return; try { await prisma.$transaction( userIds.map((userId) => prisma.workspace_users.create({ data: { user_id: Number(userId), workspace_id: Number(workspaceId), }, }) ) ); } catch (error) { console.error(error.message); } return; }, create: async function (userId = 0, workspaceId = 0) { try { await prisma.workspace_users.create({ data: { user_id: Number(userId), workspace_id: Number(workspaceId) }, }); return true; } catch (error) { console.error( "FAILED TO CREATE WORKSPACE_USER RELATIONSHIP.", error.message ); return false; } }, get: async function (clause = {}) { try { const result = await prisma.workspace_users.findFirst({ where: clause }); return result || null; } catch (error) { console.error(error.message); return null; } }, where: async function (clause = {}, limit = null) { try { const results = await prisma.workspace_users.findMany({ where: clause, ...(limit !== null ? { take: limit } : {}), }); return results; } catch (error) { console.error(error.message); return []; } }, count: async function (clause = {}) { try { const count = await prisma.workspace_users.count({ where: clause }); return count; } catch (error) { console.error(error.message); return 0; } }, delete: async function (clause = {}) { try { await prisma.workspace_users.deleteMany({ where: clause }); } catch (error) { console.error(error.message); } return; }, }; module.exports.WorkspaceUser = WorkspaceUser;