var env = require('../env') , upgradeCouch = require('../config/upgrade-couchdb') , cryptoken = require('../util/crypto-token') , HTTPResult = require('../util/http-result') , _ = require('underscore') ; var qcodeMap = { PT1GF: 'ST1GF' }; var subcodeMap = { SAPY: { // really called, team psychological safety 10: '1', 11: '2', 12: '3', 13: '4', 14: '5', 15: '6', 16: '7' }, SAPI2: { 1: '' }, PT1GF: { 10: '1', 11: '2', 12: '3', 13: '4', 14: '5', 15: '10', 16: '11' }, SVAG12: { 0: '' }, SVTCQ: { 10: '1', 11: '2', 12: '3', 13: '4', 14: '5', 15: '6', 16: '7', 17: '8', 18: '9', 19: '10', 110: '11', 111: '12', 112: '13', 113: '14', 114: '15', 115: '16' }, SAGE: { 10: '1', 11: '2', 12: '3', 13: '4', 14: '5', 15: '6', 16: '7', 17: '8', 18: '9', 19: '10', 110: '11', 111: '12', 112: '13', 113: '14', 114: '15', 115: '16', 116: '17', 117: '18' }, SAPI1: { 10: 'a', 11: 'b', 12: 'c', 13: 'd' }, SVAG2: { 0: '' }, GROUPID: { 0: '' }, RESPONDENTID: { 0: '' } }; var fullcodeMap = {}; _.each(subcodeMap, function(subcodes,oldCode){ var newCode = oldCode in qcodeMap ? qcodeMap[oldCode] : oldCode; _.each(subcodes,function(newSubcode,oldSubcode){ fullcodeMap[oldCode+oldSubcode] = newCode+newSubcode; }); }); function rewriteQuestion(question) { if ( question.code in subcodeMap ) { rewriteContent(question.content,subcodeMap[question.code]); } if ( question.code in qcodeMap ) { question.code = qcodeMap[question.code]; } } function rewriteContent(obj,map) { if ( _.isObject(obj) ) { if ( 'subcode' in obj && obj.subcode in map ) { obj.subcode = map[obj.subcode]; } _.each(obj,function(item){ rewriteContent(item,map); }); } } function rewriteAnswers(answers) { _.each(answers,function(answer,code){ if ( code in fullcodeMap ) { delete answers[code]; answers[fullcodeMap[code]] = answer; } }); } function rewriteDoc(doc) { switch(doc.type) { case 'SurveyRun': _.each(doc.survey.questions,rewriteQuestion); return doc; case 'Survey': _.each(doc.questions,rewriteQuestion); return doc; case 'Question': rewriteQuestion(doc); return doc; case 'Response': rewriteAnswers(doc.answers); return doc; default: return HTTPResult.fail(); } } upgradeCouch(env.couchServerURL,env.dbName,rewriteDoc) .then(function(res){ console.log("done",res); }, function(err){ console.error("fail",err); });