refactor: schema modularization
This commit is contained in:
parent
d9e3a9e61f
commit
82b5db6908
35 changed files with 2423 additions and 685 deletions
15
lib/new-admin/graphql/resolvers/blacklist.resolver.js
Normal file
15
lib/new-admin/graphql/resolvers/blacklist.resolver.js
Normal 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
|
||||
11
lib/new-admin/graphql/resolvers/config.resolver.js
Normal file
11
lib/new-admin/graphql/resolvers/config.resolver.js
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
const { accounts: accountsConfig, countries, languages } = require('../../config')
|
||||
|
||||
const resolver = {
|
||||
Query: {
|
||||
countries: () => countries,
|
||||
languages: () => languages,
|
||||
accountsConfig: () => accountsConfig
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = resolver
|
||||
10
lib/new-admin/graphql/resolvers/currency.resolver.js
Normal file
10
lib/new-admin/graphql/resolvers/currency.resolver.js
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
const { coins, currencies } = require('../../config')
|
||||
|
||||
const resolver = {
|
||||
Query: {
|
||||
currencies: () => currencies,
|
||||
cryptoCurrencies: () => coins
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = resolver
|
||||
21
lib/new-admin/graphql/resolvers/customer.resolver.js
Normal file
21
lib/new-admin/graphql/resolvers/customer.resolver.js
Normal 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
|
||||
9
lib/new-admin/graphql/resolvers/funding.resolver.js
Normal file
9
lib/new-admin/graphql/resolvers/funding.resolver.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const funding = require('../../modules/funding')
|
||||
|
||||
const resolvers = {
|
||||
Query: {
|
||||
funding: () => funding.getFunding()
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = resolvers
|
||||
35
lib/new-admin/graphql/resolvers/index.js
Normal file
35
lib/new-admin/graphql/resolvers/index.js
Normal 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)
|
||||
19
lib/new-admin/graphql/resolvers/log.resolver.js
Normal file
19
lib/new-admin/graphql/resolvers/log.resolver.js
Normal 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
|
||||
25
lib/new-admin/graphql/resolvers/machine.resolver.js
Normal file
25
lib/new-admin/graphql/resolvers/machine.resolver.js
Normal 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
|
||||
9
lib/new-admin/graphql/resolvers/pairing.resolver.js
Normal file
9
lib/new-admin/graphql/resolvers/pairing.resolver.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const pairing = require('../../modules/pairing')
|
||||
|
||||
const resolvers = {
|
||||
Mutation: {
|
||||
createPairingTotem: (...[, { name }]) => pairing.totem(name)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = resolvers
|
||||
13
lib/new-admin/graphql/resolvers/promo.resolver.js
Normal file
13
lib/new-admin/graphql/resolvers/promo.resolver.js
Normal 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
|
||||
10
lib/new-admin/graphql/resolvers/scalar.resolver.js
Normal file
10
lib/new-admin/graphql/resolvers/scalar.resolver.js
Normal 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
|
||||
25
lib/new-admin/graphql/resolvers/settings.resolver.js
Normal file
25
lib/new-admin/graphql/resolvers/settings.resolver.js
Normal 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
|
||||
9
lib/new-admin/graphql/resolvers/status.resolver.js
Normal file
9
lib/new-admin/graphql/resolvers/status.resolver.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const supervisor = require('../../modules/supervisor')
|
||||
|
||||
const resolvers = {
|
||||
Query: {
|
||||
uptime: () => supervisor.getAllProcessInfo()
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = resolvers
|
||||
24
lib/new-admin/graphql/resolvers/transaction.resolver.js
Normal file
24
lib/new-admin/graphql/resolvers/transaction.resolver.js
Normal 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
|
||||
9
lib/new-admin/graphql/resolvers/version.resolver.js
Normal file
9
lib/new-admin/graphql/resolvers/version.resolver.js
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
const serverVersion = require('../../../../package.json').version
|
||||
|
||||
const resolvers = {
|
||||
Query: {
|
||||
serverVersion: () => serverVersion
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = resolvers
|
||||
Loading…
Add table
Add a link
Reference in a new issue