spee.ch/task-scripts/update-channel-names.js

56 lines
1.6 KiB
JavaScript
Raw Normal View History

2018-03-07 22:45:51 +01:00
// load dependencies
const logger = require('winston');
const db = require('../models'); // require our models for syncing
// configure logging
2018-03-09 20:20:13 +01:00
require('../helpers/configureLogger.js')(logger);
2018-03-07 22:45:51 +01:00
let totalClaims = 0;
let totalClaimsNoCertificate = 0;
db.sequelize.sync() // sync sequelize
.then(() => {
logger.info('finding claims with no channels');
return db.Claim.findAll({
where: {
channelName : null,
certificateId: {
$ne: null,
},
},
});
})
.then(claimsArray => {
totalClaims = claimsArray.length;
const claimsUpdatePromises = claimsArray.map(claim => {
return db.Certificate
.findOne({
where: { claimId: claim.get('certificateId') },
})
.then(certificate => {
// if a certificate is found...
if (certificate) {
logger.debug('certificate found');
// update the claim's channel name with the certificate's name
return claim
.update({
channelName: certificate.get('name'),
})
.then(() => {})
.catch(error => logger.error(error));
}
logger.warn('no record found for certificate: ', claim.get('certificateId'));
totalClaimsNoCertificate += 1;
})
.catch(error => logger.error(error));
});
return Promise.all(claimsUpdatePromises);
})
.then(() => {
logger.info('total claims found', totalClaims);
logger.info('total claims found with no matching certificate record', totalClaimsNoCertificate);
logger.debug('all done');
})
.catch((error) => {
logger.error(error);
});