mirror of
https://github.com/UniversityOfHelsinkiCS/ohtuilmo.git
synced 2026-10-12 19:03:41 +03:00
74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
const randomstring = require('randomstring')
|
|
|
|
/**
|
|
* @typedef {'topicAccepted' | 'topicRejected' | 'customerReviewLink'} MessageType
|
|
* @typedef {'finnish' | 'english'} MessageLanguage
|
|
* @typedef {'topic_accepted_fin' | 'topic_accepted_eng' | 'topic_rejected_fin' | 'topic_rejected_eng' | 'customer_review_link_fin' | 'customer_review_link_eng'} TemplateName
|
|
*/
|
|
|
|
/**
|
|
* @type {{[key: string]: { [key: string]: TemplateName }}}
|
|
*/
|
|
const msgTypeToDbColumn = {
|
|
topicAccepted: {
|
|
finnish: 'topic_accepted_fin',
|
|
english: 'topic_accepted_eng'
|
|
},
|
|
topicRejected: {
|
|
finnish: 'topic_rejected_fin',
|
|
english: 'topic_rejected_eng'
|
|
},
|
|
customerReviewLink: {
|
|
finnish: 'customer_review_link_fin',
|
|
english: 'customer_review_link_eng'
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @type {{[key: string]: {type: MessageType, language: MessageLanguage}}}
|
|
*/
|
|
const dbColumnToMsgType = {
|
|
topic_accepted_fin: { type: 'topicAccepted', language: 'finnish' },
|
|
topic_accepted_eng: { type: 'topicAccepted', language: 'english' },
|
|
topic_rejected_fin: { type: 'topicRejected', language: 'finnish' },
|
|
topic_rejected_eng: { type: 'topicRejected', language: 'english' },
|
|
customer_review_link_fin: { type: 'customerReviewLink', language: 'finnish' },
|
|
customer_review_link_eng: { type: 'customerReviewLink', language: 'english' }
|
|
}
|
|
|
|
/**
|
|
* @param {MessageType} messageType
|
|
* @param {MessageLanguage} messageLanguage
|
|
* @returns {TemplateName}
|
|
*/
|
|
const emailTypeToTemplateName = (messageType, messageLanguage) =>
|
|
msgTypeToDbColumn[messageType][messageLanguage]
|
|
|
|
/**
|
|
* @param {TemplateName} templateName
|
|
* @returns {{type: MessageType, language: MessageLanguage}}
|
|
*/
|
|
const templateNameToEmailType = (templateName) =>
|
|
dbColumnToMsgType[templateName]
|
|
|
|
/**
|
|
* reverse(uppercase(trim(str)))
|
|
* is same as ↓
|
|
* pipe(trim, uppercase, reverse)(str)
|
|
*/
|
|
const pipe = (...fns) => (value) => fns.reduce((v, fn) => fn(v), value)
|
|
|
|
const getRandomId = () => {
|
|
return 'a' + randomstring.generate(16)
|
|
}
|
|
|
|
const isDevelopmentEnvironment = () => process.env.NODE_ENV === 'development'
|
|
|
|
module.exports = {
|
|
emailTypeToTemplateName,
|
|
templateNameToEmailType,
|
|
pipe,
|
|
getRandomId,
|
|
isDevelopmentEnvironment
|
|
}
|