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.

83 lines
2.2 KiB

11 months ago
  1. const prisma = require("../utils/prisma");
  2. const WorkspaceSuggestedMessages = {
  3. get: async function (clause = {}) {
  4. try {
  5. const message = await prisma.workspace_suggested_messages.findFirst({
  6. where: clause,
  7. });
  8. return message || null;
  9. } catch (error) {
  10. console.error(error.message);
  11. return null;
  12. }
  13. },
  14. where: async function (clause = {}, limit) {
  15. try {
  16. const messages = await prisma.workspace_suggested_messages.findMany({
  17. where: clause,
  18. take: limit || undefined,
  19. });
  20. return messages;
  21. } catch (error) {
  22. console.error(error.message);
  23. return [];
  24. }
  25. },
  26. saveAll: async function (messages, workspaceSlug) {
  27. try {
  28. const workspace = await prisma.workspaces.findUnique({
  29. where: { slug: workspaceSlug },
  30. });
  31. if (!workspace) throw new Error("Workspace not found");
  32. // Delete all existing messages for the workspace
  33. await prisma.workspace_suggested_messages.deleteMany({
  34. where: { workspaceId: workspace.id },
  35. });
  36. // Create new messages
  37. // We create each message individually because prisma
  38. // with sqlite does not support createMany()
  39. for (const message of messages) {
  40. await prisma.workspace_suggested_messages.create({
  41. data: {
  42. workspaceId: workspace.id,
  43. heading: message.heading,
  44. message: message.message,
  45. },
  46. });
  47. }
  48. } catch (error) {
  49. console.error("Failed to save all messages", error.message);
  50. }
  51. },
  52. getMessages: async function (workspaceSlug) {
  53. try {
  54. const workspace = await prisma.workspaces.findUnique({
  55. where: { slug: workspaceSlug },
  56. });
  57. if (!workspace) throw new Error("Workspace not found");
  58. const messages = await prisma.workspace_suggested_messages.findMany({
  59. where: { workspaceId: workspace.id },
  60. orderBy: { createdAt: "asc" },
  61. });
  62. return messages.map((msg) => ({
  63. heading: msg.heading,
  64. message: msg.message,
  65. }));
  66. } catch (error) {
  67. console.error("Failed to get all messages", error.message);
  68. return [];
  69. }
  70. },
  71. };
  72. module.exports.WorkspaceSuggestedMessages = WorkspaceSuggestedMessages;