refactor: schema modularization

This commit is contained in:
Sérgio Salgado 2021-01-22 18:19:52 +00:00 committed by Josh Harvey
parent d9e3a9e61f
commit 82b5db6908
35 changed files with 2423 additions and 685 deletions

View file

@ -0,0 +1,15 @@
const blacklist = require('../../../blacklist')
const resolvers = {
Query: {
blacklist: () => blacklist.getBlacklist()
},
Mutation: {
deleteBlacklistRow: (...[, { cryptoCode, address }]) =>
blacklist.deleteFromBlacklist(cryptoCode, address),
insertBlacklistRow: (...[, { cryptoCode, address }]) =>
blacklist.insertIntoBlacklist(cryptoCode, address)
}
}
module.exports = resolvers

View file

@ -0,0 +1,11 @@
const { accounts: accountsConfig, countries, languages } = require('../../config')
const resolver = {
Query: {
countries: () => countries,
languages: () => languages,
accountsConfig: () => accountsConfig
}
}
module.exports = resolver

View file

@ -0,0 +1,10 @@
const { coins, currencies } = require('../../config')
const resolver = {
Query: {
currencies: () => currencies,
cryptoCurrencies: () => coins
}
}
module.exports = resolver

View file

@ -0,0 +1,21 @@
const anonymous = require('../../../constants').anonymousCustomer
const customers = require('../../../customers')
const resolvers = {
Customer: {
isAnonymous: parent => (parent.customerId === anonymous.uuid)
},
Query: {
customers: () => customers.getCustomersList(),
customer: (...[, { customerId }]) => customers.getCustomerById(customerId)
},
Mutation: {
setCustomer: (root, { customerId, customerInput }, context, info) => {
const token = context.req.cookies && context.req.cookies.token
if (customerId === anonymous.uuid) return customers.getCustomerById(customerId)
return customers.updateCustomer(customerId, customerInput, token)
}
}
}
module.exports = resolvers

View file

@ -0,0 +1,9 @@
const funding = require('../../modules/funding')
const resolvers = {
Query: {
funding: () => funding.getFunding()
}
}
module.exports = resolvers

View file

@ -0,0 +1,35 @@
const { mergeResolvers } = require('@graphql-tools/merge')
const blacklist = require('./blacklist.resolver')
const config = require('./config.resolver')
const currency = require('./currency.resolver')
const customer = require('./customer.resolver')
const funding = require('./funding.resolver')
const log = require('./log.resolver')
const machine = require('./machine.resolver')
const pairing = require('./pairing.resolver')
const promo = require('./promo.resolver')
const scalar = require('./scalar.resolver')
const settings = require('./settings.resolver')
const status = require('./status.resolver')
const transaction = require('./transaction.resolver')
const version = require('./version.resolver')
const resolvers = [
blacklist,
config,
currency,
customer,
funding,
log,
machine,
pairing,
promo,
scalar,
settings,
status,
transaction,
version
]
module.exports = mergeResolvers(resolvers)

View file

@ -0,0 +1,19 @@
const { parseAsync } = require('json2csv')
const logs = require('../../../logs')
const serverLogs = require('../../modules/server-logs')
const resolvers = {
Query: {
machineLogs: (...[, { deviceId, from, until, limit, offset }]) =>
logs.simpleGetMachineLogs(deviceId, from, until, limit, offset),
machineLogsCsv: (...[, { deviceId, from, until, limit, offset }]) =>
logs.simpleGetMachineLogs(deviceId, from, until, limit, offset).then(parseAsync),
serverLogs: (...[, { from, until, limit, offset }]) =>
serverLogs.getServerLogs(from, until, limit, offset),
serverLogsCsv: (...[, { from, until, limit, offset }]) =>
serverLogs.getServerLogs(from, until, limit, offset).then(parseAsync)
}
}
module.exports = resolvers

View file

@ -0,0 +1,25 @@
const DataLoader = require('dataloader')
const { machineAction } = require('../../modules/machines')
const machineLoader = require('../../../machine-loader')
const machineEventsByIdBatch = require('../../../postgresql_interface').machineEventsByIdBatch
const machineEventsLoader = new DataLoader(ids => {
return machineEventsByIdBatch(ids)
}, { cache: false })
const resolvers = {
Machine: {
latestEvent: parent => machineEventsLoader.load(parent.deviceId)
},
Query: {
machines: () => machineLoader.getMachineNames(),
machine: (...[, { deviceId }]) => machineLoader.getMachine(deviceId)
},
Mutation: {
machineAction: (...[, { deviceId, action, cashbox, cassette1, cassette2, newName }]) => machineAction({ deviceId, action, cashbox, cassette1, cassette2, newName })
}
}
module.exports = resolvers

View file

@ -0,0 +1,9 @@
const pairing = require('../../modules/pairing')
const resolvers = {
Mutation: {
createPairingTotem: (...[, { name }]) => pairing.totem(name)
}
}
module.exports = resolvers

View file

@ -0,0 +1,13 @@
const promoCodeManager = require('../../../promo-codes')
const resolvers = {
Query: {
promoCodes: () => promoCodeManager.getAvailablePromoCodes()
},
Mutation: {
createPromoCode: (...[, { code, discount }]) => promoCodeManager.createPromoCode(code, discount),
deletePromoCode: (...[, { codeId }]) => promoCodeManager.deletePromoCode(codeId)
}
}
module.exports = resolvers

View file

@ -0,0 +1,10 @@
const { GraphQLDateTime } = require('graphql-iso-date')
const { GraphQLJSON, GraphQLJSONObject } = require('graphql-type-json')
const resolvers = {
JSON: GraphQLJSON,
JSONObject: GraphQLJSONObject,
Date: GraphQLDateTime
}
module.exports = resolvers

View file

@ -0,0 +1,25 @@
const got = require('got')
const settingsLoader = require('../../../new-settings-loader')
const notify = () => got.post('http://localhost:3030/dbChange')
.catch(e => console.error('Error: lamassu-server not responding'))
const resolvers = {
Query: {
accounts: () => settingsLoader.loadAccounts(),
config: () => settingsLoader.loadLatestConfigOrNone()
},
Mutation: {
saveAccounts: (...[, { accounts }]) => settingsLoader.saveAccounts(accounts),
resetAccounts: (...[, { schemaVersion }]) => settingsLoader.resetAccounts(schemaVersion),
saveConfig: (...[, { config }]) => settingsLoader.saveConfig(config).then(it => {
notify()
return it
}),
resetConfig: (...[, { schemaVersion }]) => settingsLoader.resetConfig(schemaVersion),
migrateConfigAndAccounts: () => settingsLoader.migrate()
}
}
module.exports = resolvers

View file

@ -0,0 +1,9 @@
const supervisor = require('../../modules/supervisor')
const resolvers = {
Query: {
uptime: () => supervisor.getAllProcessInfo()
}
}
module.exports = resolvers

View file

@ -0,0 +1,24 @@
const DataLoader = require('dataloader')
const { parseAsync } = require('json2csv')
const transactions = require('../../modules/transactions')
const anonymous = require('../../../constants').anonymousCustomer
const transactionsLoader = new DataLoader(ids => transactions.getCustomerTransactionsBatch(ids))
const resolvers = {
Customer: {
transactions: parent => transactionsLoader.load(parent.id)
},
Transaction: {
isAnonymous: parent => (parent.customerId === anonymous.uuid)
},
Query: {
transactions: (...[, { from, until, limit, offset }]) =>
transactions.batch(from, until, limit, offset),
transactionsCsv: (...[, { from, until, limit, offset }]) =>
transactions.batch(from, until, limit, offset).then(parseAsync)
}
}
module.exports = resolvers

View file

@ -0,0 +1,9 @@
const serverVersion = require('../../../../package.json').version
const resolvers = {
Query: {
serverVersion: () => serverVersion
}
}
module.exports = resolvers