UNPKG

candymail

Version:

Email Automation Library for Node.js

94 lines (93 loc) 4.27 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasUnsubscribedEmail = exports.addUnsubscribedEmail = exports.clearAllRows = exports.setEmailSent = exports.getAllEmailRows = exports.getEmailRowsToBeSent = exports.addEmailRow = void 0; const logger_1 = require("../utils/logger"); const moment = require("moment"); const typeorm_1 = require("typeorm"); const User_1 = require("../entity/User"); const Message_1 = require("../entity/Message"); const addEmailRow = (messageOptions) => __awaiter(void 0, void 0, void 0, function* () { const userRepository = typeorm_1.getRepository(User_1.User); const messageRepository = typeorm_1.getRepository(Message_1.Message); logger_1.log(`adding email row for ${messageOptions.sendAt} with message: ${messageOptions.body}`); const { template, sendFrom, sendTo, sendAt, subject, body } = messageOptions; const user = yield userRepository.find({ email: sendTo }); if (!user) { const newUser = new User_1.User(); newUser.email = sendTo; newUser.isSubscribed = true; yield userRepository.save(newUser); } const message = new Message_1.Message(); message.template = template; message.sendFrom = sendFrom; message.sendTo = sendTo; message.sendAt = sendAt; message.subject = subject; message.body = body; yield messageRepository.save(message); }); exports.addEmailRow = addEmailRow; const getEmailRowsToBeSent = (time) => __awaiter(void 0, void 0, void 0, function* () { const messageRepository = typeorm_1.getRepository(Message_1.Message); const messages = yield messageRepository.find({ where: { sent: false, sendAt: typeorm_1.LessThan(moment.utc().format("YYYY-MM-DD HH:mm:ss")), }, }); if (messages === undefined) { return []; } return messages; }); exports.getEmailRowsToBeSent = getEmailRowsToBeSent; const getAllEmailRows = () => __awaiter(void 0, void 0, void 0, function* () { const messageRepository = typeorm_1.getRepository(Message_1.Message); const messages = yield messageRepository.find({}); return messages; }); exports.getAllEmailRows = getAllEmailRows; const setEmailSent = (id) => __awaiter(void 0, void 0, void 0, function* () { const messageRepository = typeorm_1.getRepository(Message_1.Message); const message = yield messageRepository.findOne({ id }); if (message === undefined) { return; } message.sent = true; yield messageRepository.save(message); }); exports.setEmailSent = setEmailSent; const clearAllRows = () => __awaiter(void 0, void 0, void 0, function* () { const messageRepository = typeorm_1.getRepository(Message_1.Message); yield messageRepository.clear(); }); exports.clearAllRows = clearAllRows; const addUnsubscribedEmail = (email) => __awaiter(void 0, void 0, void 0, function* () { const userRepository = typeorm_1.getRepository(User_1.User); const user = yield userRepository.findOne({ email }); if (user === undefined) { return; } user.isSubscribed = false; yield userRepository.save(user); }); exports.addUnsubscribedEmail = addUnsubscribedEmail; const hasUnsubscribedEmail = (email) => __awaiter(void 0, void 0, void 0, function* () { const userRepository = typeorm_1.getRepository(User_1.User); const user = yield userRepository.findOne({ email, isSubscribed: false }); if (user === undefined) { return false; } return user.isSubscribed; }); exports.hasUnsubscribedEmail = hasUnsubscribedEmail;