Changeset 361


Ignore:
Timestamp:
07/16/12 13:40:53 (13 years ago)
Author:
hendrikvanantwerpen
Message:

Easier to change DB config, all docs in one file now.

Location:
Dev/branches/rest-dojo-ui/client/config
Files:
1 deleted
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/branches/rest-dojo-ui/client/config/db.js

    r360 r361  
    66         'dojo/query',
    77         'dijit/registry',
    8          'dojox/io/xhrPlugins',
    9          'dojo/text!./docs/rft/_security.json',
    10          'dojo/text!./docs/_users/rft_admin.json',
    11          'dojo/text!./docs/rft/_design/default.json',
    12          'dojo/text!./docs/rft/q1.json',
    13          'dojo/text!./docs/rft/q2.json',
    14          'dojo/text!./docs/rft/q3.json',
    15          'dojo/text!./docs/rft/q4.json',
     8         'dojo/text!./docs.json',
    169         'dojo/domReady!',
    1710         'dijit/form/TextBox',
     
    1912         'dijit/form/CheckBox',
    2013         ],
    21     function(json,lang,xhr,parser,query,registry,xhrPlugins,
    22         securityDoc,rft_adminDoc,design_defaultDoc,q1Doc,q2Doc,q3Doc,q4Doc){
     14    function(json,lang,xhr,parser,query,registry,docsJson){
     15    var logNode;
     16    var usernameInput, passwordInput, resetInput, configButton;
     17    var defaultUsername = "", defaultPassword = "";
     18    var dbUrl = "../data/";
     19
    2320    parser.parse();
    2421
    25     var logNode;
    2622    query("#log").forEach(function(n){ logNode = n; });
     23    usernameInput = registry.byId('username');
     24    passwordInput = registry.byId('password');
     25    resetInput = registry.byId('reset');
     26    configButton = registry.byId('configure');
    2727
    28     function log(text,overwrite) {
    29         if ( overwrite ) logNode.innerHTML = text
    30         else logNode.innerHTML = logNode.innerHTML + '\n' + text;
    31     }
    32 
    33     var usernameInput = registry.byId('username');
    34     var passwordInput = registry.byId('password');
    35     var resetInput = registry.byId('reset');
    36 
    37     usernameInput.set('value','rft_admin');
    38     passwordInput.set('value','Welkom01');
     28    usernameInput.set('value',defaultUsername);
     29    passwordInput.set('value',defaultPassword);
     30    configButton.on('click',configure);
    3931
    4032    log("Give CouchDB admin username & password and click 'Configure' to start.\nIf the database already exists, rft_admin password will suffice.",true);
    4133
    42     registry.byId('configure').on('click',function(){
     34   
     35    function configure(){
    4336        log("Configuring CouchDB for RFT:",true);
    4437
    45         var baseUrl = '../data';
    4638        var username = usernameInput.get('value');
    4739        var password = passwordInput.get('value');
    4840        var reset = resetInput.get('value');
    4941
     42        var docs = json.fromJson(docsJson);
     43
    5044        function req(method,url,body) {
    51             args = {
    52                 url: baseUrl+url,
     45            var args = {
     46                url: dbUrl+url,
    5347                contentType: 'application/json',
    5448                handleAs: 'json',
     
    7973        });
    8074
    81 
    8275        var exists = false;
    8376        log("Checking database 'rft'");
    8477        req('GET','/rft')
    85         .then(function(res){
    86             log("Database 'rft' found.\nLeaving security and users as they are.")
     78        .then(function(db){
     79            log("Database 'rft' found.")
    8780            exists = true;
    8881        });
     
    9487            log("Creating database 'rft'")
    9588            req('PUT','/rft')
    96            
    97             /*log("Setting _security on database 'rft'");
    98             req('PUT','/rft/_security', securityDoc);
    99 
    100             log("Checking 'rft_admin' user");
    101             req('GET','/_users/org.couchdb.user:rft_admin')
    102             .then(function(){
    103                 log("User 'rft_admin' already exists.");
    104             }, function() {
    105                 log("Creating user 'rft_admin' with password 'Welkom01'");
    106                 req('PUT','/_users/org.couchdb.user:rft_admin', rft_adminDoc);
    107             });*/
    10889        };
    10990
    110         log("Updating design documents");
    111         newDoc = json.fromJson(design_defaultDoc);
    112         req('GET','/rft/_design/default')
    113         .then(function(doc){
    114             newDoc['_rev'] = doc['_rev'];
    115         });
    116         req('PUT','/rft/_design/default', newDoc);
     91        function processDoc(docUrl,doc){
     92            var configAction = doc.__configAction;
     93            delete doc.__configAction;
     94            switch (configAction) {
     95                case "ignore":
     96                    log(docUrl+" ignored.");
     97                    return false;
     98                case "update":
     99                    log(docUrl+" updating.");
     100                    return req('GET',docUrl)
     101                    .then(function(oldDoc){
     102                        lang.mixin(oldDoc,doc);
     103                        return req('PUT',docUrl,oldDoc);
     104                    },function(){
     105                        return req('PUT',docUrl,doc);
     106                    });
     107                case "replace":
     108                default:
     109                    log(docUrl+" replacing.");
     110                    return req('GET',docUrl)
     111                    .then(function(oldDoc){
     112                        doc['_rev'] = oldDoc['_rev'];
     113                        return req('PUT',docUrl,doc);
     114                    },function(){
     115                        return req('PUT',docUrl,doc);
     116                    });
     117            }
     118        }
    117119
    118         log("Uploading sample question documents");
    119         req('PUT','/rft/q1', json.fromJson(q1Doc));
    120         req('PUT','/rft/q2', json.fromJson(q2Doc));
    121         req('PUT','/rft/q3', json.fromJson(q3Doc));
    122         req('PUT','/rft/q4', json.fromJson(q4Doc));
     120        for (var docUrl in docs) {
     121            processDoc(docUrl,docs[docUrl]);
     122        }
    123123
    124124        log("Done!");
    125     });
     125    }
     126
     127    function log(text,overwrite) {
     128        if ( overwrite ) logNode.innerHTML = text
     129        else logNode.innerHTML = logNode.innerHTML + '\n' + text;
     130    }
    126131
    127132});
Note: See TracChangeset for help on using the changeset viewer.