feat: change custom SMS instances to SMS notices and all its interfaces

This commit is contained in:
Sérgio Salgado 2022-02-04 19:39:35 +00:00
parent 04f4891291
commit 0d5f5167ef
12 changed files with 153 additions and 149 deletions

View file

@ -20,6 +20,7 @@ const MANUAL = 'manual'
const CASH_OUT_DISPENSE_READY = 'cash_out_dispense_ready'
const CONFIRMATION_CODE = 'sms_code'
const RECEIPT = 'sms_receipt'
const WALLET_SCORE_THRESHOLD = 9
@ -37,5 +38,6 @@ module.exports = {
CONFIRMATION_CODE,
CASH_OUT_MINIMUM_AMOUNT_OF_CASSETTES,
CASH_OUT_MAXIMUM_AMOUNT_OF_CASSETTES,
WALLET_SCORE_THRESHOLD
WALLET_SCORE_THRESHOLD,
RECEIPT
}

View file

@ -1,41 +0,0 @@
const _ = require('lodash/fp')
const uuid = require('uuid')
const db = require('./db')
const getCustomMessages = () => {
const sql = `SELECT * FROM custom_messages ORDER BY created`
return db.any(sql).then(res => _.map(
it => ({
id: it.id,
event: _.camelCase(it.event),
message: it.message
}), res))
}
const createCustomMessage = (event, message) => {
const sql = `INSERT INTO custom_messages (id, event, message) VALUES ($1, $2, $3)`
return db.none(sql, [uuid.v4(), _.snakeCase(event), message])
}
const editCustomMessage = (id, event, message) => {
const sql = `UPDATE custom_messages SET event=$2, message=$3 WHERE id=$1`
return db.none(sql, [id, _.snakeCase(event), message])
}
const deleteCustomMessage = id => {
const sql = `DELETE FROM custom_messages WHERE id=$1`
return db.none(sql, [id])
}
const getCustomMessage = event => {
const sql = `SELECT * FROM custom_messages WHERE event=$1 LIMIT 1`
return db.oneOrNone(sql, [event])
}
module.exports = {
getCustomMessages,
createCustomMessage,
editCustomMessage,
deleteCustomMessage,
getCustomMessage
}

View file

@ -1,13 +1,13 @@
const customSms = require('../../../custom-sms')
const customSms = require('../../../sms-notices')
const resolvers = {
Query: {
customMessages: () => customSms.getCustomMessages()
SMSNotices: () => customSms.getSMSNotices()
},
Mutation: {
createCustomMessage: (...[, { event, message }]) => customSms.createCustomMessage(event, message),
editCustomMessage: (...[, { id, event, message }]) => customSms.editCustomMessage(id, event, message),
deleteCustomMessage: (...[, { id }]) => customSms.deleteCustomMessage(id)
editSMSNotice: (...[, { id, event, message }]) => customSms.editSMSNotice(id, event, message),
enableSMSNotice: (...[, { id }]) => customSms.enableSMSNotice(id),
disableSMSNotice: (...[, { id }]) => customSms.disableSMSNotice(id)
}
}

View file

@ -1,25 +1,29 @@
const { gql } = require('apollo-server-express')
const typeDef = gql`
type CustomMessage {
type SMSNotice {
id: ID!
event: CustomMessageEvent!
event: SMSNoticeEvent!
message: String!
messageName: String!
enabled: Boolean!
allowToggle: Boolean!
}
enum CustomMessageEvent {
enum SMSNoticeEvent {
smsCode
cashOutDispenseReady
smsReceipt
}
type Query {
customMessages: [CustomMessage] @auth
SMSNotices: [SMSNotice] @auth
}
type Mutation {
createCustomMessage(event: CustomMessageEvent!, message: String!): CustomMessage @auth
editCustomMessage(id: ID!, event: CustomMessageEvent!, message: String!): CustomMessage @auth
deleteCustomMessage(id: ID!): CustomMessage @auth
editSMSNotice(id: ID!, event: SMSNoticeEvent!, message: String!): SMSNotice @auth
enableSMSNotice(id: ID!): SMSNotice @auth
disableSMSNotice(id: ID!): SMSNotice @auth
}
`

56
lib/sms-notices.js Normal file
View file

@ -0,0 +1,56 @@
const _ = require('lodash/fp')
const uuid = require('uuid')
const db = require('./db')
const getSMSNotices = () => {
const sql = `SELECT * FROM sms_notices ORDER BY created`
return db.any(sql).then(res => _.map(
it => ({
id: it.id,
event: _.camelCase(it.event),
message: it.message,
messageName: it.message_name,
enabled: it.enabled,
allowToggle: it.allow_toggle
}), res))
}
const createSMSNotice = (event, messageName, message, enabled, allowToggle) => {
const sql = `INSERT INTO sms_notices (id, event, message_name, message${enabled ? `, enabled`: ``}${allowToggle ? `, allowToggle`: ``}) VALUES ($1, $2, $3, $4${enabled ? `, $5`: ``}${allowToggle ? `, $6`: ``})`
return db.none(sql, [uuid.v4(), _.snakeCase(event), messageName, message, enabled, allowToggle])
}
const editSMSNotice = (id, event, message) => {
const sql = `UPDATE sms_notices SET event=$2, message=$3 WHERE id=$1`
return db.none(sql, [id, _.snakeCase(event), message])
}
const deleteSMSNotice = id => {
const sql = `DELETE FROM sms_notices WHERE id=$1`
return db.none(sql, [id])
}
const getSMSNotice = event => {
const sql = `SELECT * FROM sms_notices WHERE event=$1 LIMIT 1`
return db.oneOrNone(sql, [event])
}
const enableSMSNotice = id => {
const sql = `UPDATE sms_notices SET enabled = true WHERE id=$1 LIMIT 1`
return db.oneOrNone(sql, [id])
}
const disableSMSNotice = id => {
const sql = `UPDATE sms_notices SET enabled = false WHERE id=$1 LIMIT 1`
return db.oneOrNone(sql, [id])
}
module.exports = {
getSMSNotices,
createSMSNotice,
editSMSNotice,
deleteSMSNotice,
getSMSNotice,
enableSMSNotice,
disableSMSNotice
}

View file

@ -3,7 +3,7 @@ const argv = require('minimist')(process.argv.slice(2))
const { utils: coinUtils } = require('lamassu-coins')
const _ = require('lodash/fp')
const customSms = require('./custom-sms')
const customSms = require('./sms-notices')
const getDefaultMessageContent = content => ({
smsCode: `Your cryptomat code: ${content.code}`,