@coko/server
Version:
Reusable server for use by Coko's projects
63 lines • 2.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteMessage = exports.editMessage = exports.sendMessage = void 0;
const logger_1 = __importDefault(require("../../logger"));
const chatMessage_model_1 = __importDefault(require("./chatMessage.model"));
const useTransaction_1 = __importDefault(require("../useTransaction"));
const constants_1 = require("./constants");
const { CHAT_MESSAGE_CONTROLLER } = constants_1.labels;
const sendMessage = async (chatChannelId, content, userId, mentions = [], options = {}) => {
try {
const { trx, ...restOptions } = options;
const newMessage = await (0, useTransaction_1.default)(async (tr) => {
logger_1.default.info(`${CHAT_MESSAGE_CONTROLLER} sendMessage: creating a new message for chat channel with id ${chatChannelId}`);
return chatMessage_model_1.default.insert({ chatChannelId, userId, content, mentions }, { trx: tr, ...restOptions });
}, { trx, passedTrxOnly: true });
// notify?
return newMessage;
}
catch (e) {
logger_1.default.error(`${CHAT_MESSAGE_CONTROLLER} sendMessage: ${e.message}`);
throw e;
}
};
exports.sendMessage = sendMessage;
const editMessage = async (id, content, mentions, options = {}) => {
try {
const { trx, ...restOptions } = options;
return (0, useTransaction_1.default)(async (tr) => {
logger_1.default.info(`${CHAT_MESSAGE_CONTROLLER} editMessage: patching message with id ${id}`);
const patchData = { content };
if (mentions) {
patchData.mentions = mentions;
}
return chatMessage_model_1.default.patchAndFetchById(id, patchData, {
trx: tr,
...restOptions,
});
}, { trx, passedTrxOnly: true });
}
catch (e) {
logger_1.default.error(`${CHAT_MESSAGE_CONTROLLER} editMessage: ${e.message}`);
throw e;
}
};
exports.editMessage = editMessage;
const deleteMessage = async (id, options = {}) => {
try {
const { trx } = options;
return (0, useTransaction_1.default)(async (tr) => {
logger_1.default.info(`${CHAT_MESSAGE_CONTROLLER} deleteMessage: deleting message with id ${id}`);
return chatMessage_model_1.default.deleteById(id, { trx: tr });
}, { trx, passedTrxOnly: true });
}
catch (e) {
logger_1.default.error(`${CHAT_MESSAGE_CONTROLLER} deleteMessage: ${e.message}`);
throw e;
}
};
exports.deleteMessage = deleteMessage;
//# sourceMappingURL=chatMessage.controller.js.map