You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
2.6 KiB

11 months ago
  1. const prisma = require("../utils/prisma");
  2. const WorkspaceUser = {
  3. createMany: async function (userId, workspaceIds = []) {
  4. if (workspaceIds.length === 0) return;
  5. try {
  6. await prisma.$transaction(
  7. workspaceIds.map((workspaceId) =>
  8. prisma.workspace_users.create({
  9. data: { user_id: userId, workspace_id: workspaceId },
  10. })
  11. )
  12. );
  13. } catch (error) {
  14. console.error(error.message);
  15. }
  16. return;
  17. },
  18. /**
  19. * Create many workspace users.
  20. * @param {Array<number>} userIds - An array of user IDs to create workspace users for.
  21. * @param {number} workspaceId - The ID of the workspace to create workspace users for.
  22. * @returns {Promise<void>} A promise that resolves when the workspace users are created.
  23. */
  24. createManyUsers: async function (userIds = [], workspaceId) {
  25. if (userIds.length === 0) return;
  26. try {
  27. await prisma.$transaction(
  28. userIds.map((userId) =>
  29. prisma.workspace_users.create({
  30. data: {
  31. user_id: Number(userId),
  32. workspace_id: Number(workspaceId),
  33. },
  34. })
  35. )
  36. );
  37. } catch (error) {
  38. console.error(error.message);
  39. }
  40. return;
  41. },
  42. create: async function (userId = 0, workspaceId = 0) {
  43. try {
  44. await prisma.workspace_users.create({
  45. data: { user_id: Number(userId), workspace_id: Number(workspaceId) },
  46. });
  47. return true;
  48. } catch (error) {
  49. console.error(
  50. "FAILED TO CREATE WORKSPACE_USER RELATIONSHIP.",
  51. error.message
  52. );
  53. return false;
  54. }
  55. },
  56. get: async function (clause = {}) {
  57. try {
  58. const result = await prisma.workspace_users.findFirst({ where: clause });
  59. return result || null;
  60. } catch (error) {
  61. console.error(error.message);
  62. return null;
  63. }
  64. },
  65. where: async function (clause = {}, limit = null) {
  66. try {
  67. const results = await prisma.workspace_users.findMany({
  68. where: clause,
  69. ...(limit !== null ? { take: limit } : {}),
  70. });
  71. return results;
  72. } catch (error) {
  73. console.error(error.message);
  74. return [];
  75. }
  76. },
  77. count: async function (clause = {}) {
  78. try {
  79. const count = await prisma.workspace_users.count({ where: clause });
  80. return count;
  81. } catch (error) {
  82. console.error(error.message);
  83. return 0;
  84. }
  85. },
  86. delete: async function (clause = {}) {
  87. try {
  88. await prisma.workspace_users.deleteMany({ where: clause });
  89. } catch (error) {
  90. console.error(error.message);
  91. }
  92. return;
  93. },
  94. };
  95. module.exports.WorkspaceUser = WorkspaceUser;