lamassu-server/lib/new-admin/graphql/resolvers/sanctions.resolver.js
2024-11-26 15:40:13 +00:00

38 lines
1.1 KiB
JavaScript

const _ = require('lodash/fp')
const logger = require('../../../logger')
const ofac = require('../../../ofac')
const T = require('../../../time')
const sanctionStatus = {
loaded: false,
timestamp: null
}
const loadOrUpdateSanctions = () => {
if (!sanctionStatus.loaded || (sanctionStatus.timestamp && Date.now() > sanctionStatus.timestamp + T.day)) {
logger.info('No sanction lists loaded. Loading sanctions...')
return ofac.load()
.then(() => {
logger.info('OFAC sanction list loaded!')
sanctionStatus.loaded = true
sanctionStatus.timestamp = Date.now()
})
.catch(e => {
logger.error('Couldn\'t load OFAC sanction list!')
})
}
return Promise.resolve()
}
const resolvers = {
Query: {
checkAgainstSanctions: (...[, { firstName, lastName, birthdate }]) => loadOrUpdateSanctions()
.then(() => {
const ofacMatches = ofac.match({ firstName, lastName }, birthdate, { threshold: 0.85, fullNameThreshold: 0.95, debug: false })
return { ofacSanctioned: _.size(ofacMatches) > 0 }
})
}
}
module.exports = resolvers