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.

65 lines
1.7 KiB

11 months ago
  1. const prisma = require("../utils/prisma");
  2. const WelcomeMessages = {
  3. get: async function (clause = {}) {
  4. try {
  5. const message = await prisma.welcome_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.welcome_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) {
  27. try {
  28. await prisma.welcome_messages.deleteMany({}); // Delete all existing messages
  29. // Create new messages
  30. // We create each message individually because prisma
  31. // with sqlite does not support createMany()
  32. for (const [index, message] of messages.entries()) {
  33. if (!message.response && !message.user) continue;
  34. await prisma.welcome_messages.create({
  35. data: {
  36. user: message.user,
  37. response: message.response,
  38. orderIndex: index,
  39. },
  40. });
  41. }
  42. } catch (error) {
  43. console.error("Failed to save all messages", error.message);
  44. }
  45. },
  46. getMessages: async function () {
  47. try {
  48. const messages = await prisma.welcome_messages.findMany({
  49. orderBy: { orderIndex: "asc" },
  50. select: { user: true, response: true },
  51. });
  52. return messages;
  53. } catch (error) {
  54. console.error("Failed to get all messages", error.message);
  55. return [];
  56. }
  57. },
  58. };
  59. module.exports.WelcomeMessages = WelcomeMessages;