source: Dev/trunk/src/server/bin/upgrade-db-dates-2014-03-26.js @ 531

Last change on this file since 531 was 531, checked in by hendrikvanantwerpen, 11 years ago
  • Return to using truly ISO formatted dates, including milliseconds.
  • Also set constraint on surveyrun dates when value is initially set.
  • Separate runs & results from surveys and questions.
  • Moved date & email format to schema itself.
File size: 1.3 KB
RevLine 
[531]1var env = require('../env')
2  , upgradeCouch = require('../config/upgrade-couchdb')
3  , cryptoken = require('../util/crypto-token')
4  , HTTPResult = require('../util/http-result')
5  , _ = require('underscore')
6  ;
7
8var rewrites = {
9    SurveyRun: function(doc) {
10        rewriteDate(doc,'publicationDate');
11        rewriteDate(doc,'startDate');
12        rewriteDate(doc,'endDate');
13        rewriteDoc(doc.survey);
14        return doc;
15    },
16    Survey: function(doc) {
17        rewriteDate(doc,'publicationDate');
18        _.each(doc.questions,rewriteDoc);
19        return doc;
20    },
21    Question: function(doc) {
22        rewriteDate(doc,'publicationDate');
23        return doc;
24    },
25    Response: function(doc) {
26        rewriteDate(doc,'publicationDate');
27        return doc;
28    }
29};
30
31function rewriteDate(doc,field) {
32    if ( field in doc ) {
33        doc[field] = new Date(doc[field]).toISOString();
34        return true;
35    } else {
36        return false;
37    }
38}
39
40function rewriteDoc(doc) {
41    if ( doc.type in rewrites ) {
42        return rewrites[doc.type](doc);
43    } else {
44        return HTTPResult.fail();
45    }
46}
47
48upgradeCouch(env.couchServerURL,env.dbName,rewriteDoc)
49.then(function(res){
50    console.log("done",res);
51}, function(err){
52    console.error("fail",err);
53});
Note: See TracBrowser for help on using the repository browser.