Changeset 479 for Dev


Ignore:
Timestamp:
11/24/13 18:43:47 (11 years ago)
Author:
hendrikvanantwerpen
Message:

Changes for validation

  • Split command line wrappers from processing logic.
  • Created a JSON Schema for the database
  • Allow off-line validation of database documents.
Location:
Dev/trunk
Files:
6 added
7 edited
1 moved

Legend:

Unmodified
Added
Removed
  • Dev/trunk/package.json

    r475 r479  
    1616    "grunt-coffeelint": "~0.0.6",
    1717    "grunt-banner": "~0.1.4",
    18     "grunt-amd-check": "~0.5.2"
    19   }
     18    "grunt-amd-check": "~0.5.2",
     19    "mocha": "~1.14.0",
     20    "should": "~2.1.0"
     21  },
     22  "dependencies": {}
    2023}
  • Dev/trunk/src/.jshintrc-generated

    r475 r479  
    11{
    22    "bitwise": true,
    3     "curly": true,
     3    "curly": false,
    44    "eqeqeq": true,
    55    "forin": true,
     
    77    "indent": 2,
    88    "latedef": true,
    9     "newcap": true,
     9    "newcap": false,
    1010    "noarg": true,
    1111    "noempty": true,
     
    1616
    1717    "loopfunc": true,
     18    "shadow": true,
    1819
    1920    "devel": true,
  • Dev/trunk/src/Procfile

    r463 r479  
    1 web: node server/heroku.js
     1web: node server/bin/heroku.js
  • Dev/trunk/src/package.json

    r475 r479  
    1010    "q": "~0.9.6",
    1111    "request": "~2.21.0",
    12     "ya-csv": "~0.9.2"
     12    "ya-csv": "~0.9.2",
     13    "tv4": "~1.0.11"
    1314  },
    1415  "engines": {
  • Dev/trunk/src/server/bin/heroku.js

    r475 r479  
    1 var port = process.env.PORT || 5000;
    2 var couchDbURL = (process.env.CLOUDANT_URL || 'http://localhost:5984')+'/';
     1var env = require('../env');
     2var configCouch = require('../config/config-couchdb');
    33
    4 var configCouch = require('./config/config-couchdb');
     4console.log("Running on",env.couchServerURL);
    55
    6 console.log("Running on",couchDbURL);
    7 
    8 configCouch(couchDbURL)
     6configCouch(env.couchServerURL)
    97.then(function(){
    10     var app = require('./app').App({
    11         couchDbURL: couchDbURL+'qed'
     8    var app = require('../app').App({
     9        couchDbURL: env.couchDbURL
    1210    });
    1311
    14     app.listen(port, function() {
    15         console.log('Listening on port',port);
     12    app.listen(env.port, function() {
     13        console.log('Listening on port',env.port);
    1614    });
    1715}, function(error){
  • Dev/trunk/src/server/config/config-couchdb.js

    r475 r479  
    11var Q = require('q')
    2   , request = require('../util/q-request')
    32  , _ = require('underscore')
    43  , CouchDB = require('../util/couch').CouchDB
    5   , util = require('util');
     4  , util = require('util')
     5  ;
    66
    77var designDocs = require('./couchdb-design-docs');
    88
    9 module.exports = function(couchDbURL) {
    10     var server = new CouchDB(couchDbURL);
     9module.exports = function(couchServerURL) {
     10    var server = new CouchDB(couchServerURL);
    1111
    1212    console.log("Configuring CouchDB for QED");
     
    3131        console.log("Putting documents in database.");
    3232        return _.reduce(designDocs, function(memo, doc, docUrl) {
    33             var configAction = doc.__configAction || "replace";
    34             delete doc.__configAction;
    35             switch (configAction) {
    36             case "ignore":
    37                 console.log(docUrl+" ignored.");
    38                 return memo;
    39             case "update":
    40                 console.log(docUrl+" updating.");
    41                 return memo.then(function(){
    42                     server.get(docUrl)
     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)
    4343                    .then(function(oldDoc){
    4444                        _.extend(oldDoc,doc);
     
    4747                        return server.put(docUrl,doc);
    4848                    });
    49                 });
    50             case "replace":
    51                 console.log(docUrl+" replacing.");
    52                 return memo.then(function(){
    53                     server.get(docUrl)
     49                case "replace":
     50                    console.log(docUrl+" replacing.");
     51                    return server.get(docUrl)
    5452                    .then(function(oldDoc){
    5553                        _.extend(doc,_.pick(oldDoc,'_id','_rev'));
     
    5856                        return server.put(docUrl,doc);
    5957                    });
    60                 });
    61             default:
    62                 console.warn("Unknown action",configAction);
    63                 return memo;
    64             }
     58                default:
     59                    console.warn("Unknown action",configAction);
     60                    return null;
     61                }
     62            });
    6563        }, Q.resolve());
    66     }).then(function(results){
    67         console.log("Done!", results);
    68     },function(err){
    69         console.error("ERROR",err,err.stack);
    7064    });
    71 
    7265};
  • Dev/trunk/src/server/util/couch.coffee

    r478 r479  
    33Q = require 'q'
    44
     5class CouchError extends Error
     6 
    57class CouchDB
    68    constructor: (url) ->
     
    2931            'accept': 'application/json'
    3032        body: JSON.stringify (stringifyFunctions (data || {}))
    31     request(url, options)
     33    req = request(url, options)
     34    req.response
    3235    .then (res) =>
    33         JSON.parse res
     36        req.then (res) =>
     37            JSON.parse res
     38        , (err) =>
     39            Q.reject (JSON.parse err)
    3440    , (err) =>
    35         Q.reject (JSON.parse err)
     41        Q.reject err
    3642
    3743stringifyFunctions = (value) ->
  • Dev/trunk/src/server/util/q-request.js

    r470 r479  
    66module.exports = function(url, options) {
    77
    8     var dfd = q.defer();
    9     dfd.response = q.defer();
     8    var dfd_body = q.defer();
     9    var dfd_response = q.defer();
     10    dfd_body.promise.response = dfd_response.promise;
    1011   
    1112    options = options ? _.clone(options) : {};
     
    1415    request(options,function(err,res,body){
    1516        if ( err ) {
    16             dfd.response.reject(err);
     17            dfd_response.reject(err);
    1718        } else {
     19            dfd_response.resolve(res);
    1820            if ( res.statusCode >= 200 && res.statusCode < 300 ) {
    19                 dfd.resolve(body);
     21                dfd_body.resolve(body);
    2022            } else {
    21                 dfd.reject(body);
     23                dfd_body.reject(body);
    2224            }
    2325        }
    24         dfd.response.resolve(res);
    2526    });
    2627
    27     return dfd.promise;
     28    return dfd_body.promise;
    2829   
    2930};
Note: See TracChangeset for help on using the changeset viewer.