source: Dev/trunk/src/server/config/config-couchdb.js @ 479

Last change on this file since 479 was 479, checked in by hendrikvanantwerpen, 11 years ago

Changes for validation

  • Split command line wrappers from processing logic.
  • Created a JSON Schema for the database
  • Allow off-line validation of database documents.
File size: 2.3 KB
RevLine 
[475]1var Q = require('q')
2  , _ = require('underscore')
3  , CouchDB = require('../util/couch').CouchDB
[479]4  , util = require('util')
5  ;
[455]6
7var designDocs = require('./couchdb-design-docs');
8
[479]9module.exports = function(couchServerURL) {
10    var server = new CouchDB(couchServerURL);
[464]11
12    console.log("Configuring CouchDB for QED");
13    console.log("Checking CouchDB version");
[475]14    return server.get('')
15    .then(function(info){
16        if (info.version !== "1.2.0" ) {
17            console.log("Found "+info.version+", only tested with CouchDB 1.2.0");
[464]18        } else {
19            console.log("CouchDB 1.2.0 found");
20        }
21    }).then(function(res){
22        console.log("Checking database 'qed'");
[475]23        return server.get('qed')
24        .then(function(db){
[464]25            console.log("Database 'qed' found.");
26        },function(err){
27            console.log("Creating database 'qed'");
[475]28            return server.put('qed');
[464]29        });
30    }).then(function(){
31        console.log("Putting documents in database.");
[475]32        return _.reduce(designDocs, function(memo, doc, docUrl) {
[479]33            return memo.then(function(){
34                var configAction = doc.__configAction || "replace";
35                delete doc.__configAction;
36                switch (configAction) {
37                case "ignore":
38                    console.log(docUrl+" ignored.");
39                    return null;
40                case "update":
41                    console.log(docUrl+" updating.");
42                    return server.get(docUrl)
[475]43                    .then(function(oldDoc){
44                        _.extend(oldDoc,doc);
45                        return server.put(docUrl,oldDoc);
46                    },function(){
47                        return server.put(docUrl,doc);
48                    });
[479]49                case "replace":
50                    console.log(docUrl+" replacing.");
51                    return server.get(docUrl)
[475]52                    .then(function(oldDoc){
53                        _.extend(doc,_.pick(oldDoc,'_id','_rev'));
54                        return server.put(docUrl,doc);
55                    },function(){
56                        return server.put(docUrl,doc);
57                    });
[479]58                default:
59                    console.warn("Unknown action",configAction);
60                    return null;
61                }
62            });
[475]63        }, Q.resolve());
[455]64    });
[464]65};
Note: See TracBrowser for help on using the repository browser.