lamassu-server/lib/new-admin/graphql/resolvers/transaction.resolver.js
2021-05-25 10:45:04 +01:00

35 lines
1.7 KiB
JavaScript

const DataLoader = require('dataloader')
const { parseAsync } = require('json2csv')
const transactions = require('../../services/transactions')
const anonymous = require('../../../constants').anonymousCustomer
const transactionsLoader = new DataLoader(ids => transactions.getCustomerTransactionsBatch(ids))
const tx_logFields = ["txClass", "id", "deviceId", "toAddress", "cryptoAtoms",
"cryptoCode", "fiat", "fiatCode", "fee", "status",
"dispense", "notified", "redeem", "phone", "error",
"created", "confirmedAt", "hdIndex", "swept", "timedout",
"dispenseConfirmed", "provisioned1", "provisioned2",
"denomination1", "denomination2", "errorCode", "customerId",
"txVersion", "publishedAt", "termsAccepted", "layer2Address",
"commissionPercentage", "rawTickerPrice", "receivedCryptoAtoms",
"discount", "txHash", "customerPhone", "customerIdCardDataNumber",
"customerIdCardDataExpiration", "customerIdCardData", "customerName",
"customerFrontCameraPath", "customerIdCardPhotoPath", "expired", "machineName"]
const resolvers = {
Customer: {
transactions: parent => transactionsLoader.load(parent.id)
},
Transaction: {
isAnonymous: parent => (parent.customerId === anonymous.uuid)
},
Query: {
transactions: (...[, { from, until, limit, offset, deviceId }]) =>
transactions.batch(from, until, limit, offset, deviceId),
transactionsCsv: (...[, { from, until, limit, offset }]) =>
transactions.batch(from, until, limit, offset).then(data => parseAsync(data, {fields: tx_logFields}))
}
}
module.exports = resolvers