candymail
Version:
Email Automation Library for Node.js
94 lines (93 loc) • 4.27 kB
JavaScript
;
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;