source: Dev/branches/rest-dojo-ui/client/config/db.js @ 353

Last change on this file since 353 was 352, checked in by hendrikvanantwerpen, 13 years ago

Allow CouchDB to be configured through redirect as well.

File size: 3.7 KB
Line 
1require([
2         'dojo/_base/json',
3         'dojo/_base/lang',
4         'dojo/_base/xhr',
5         'dojo/parser',
6         'dojo/query',
7         '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/domReady!',
13         'dijit/form/TextBox',
14         'dijit/form/Button',
15         'dijit/form/CheckBox',
16         ],
17    function(json,lang,xhr,parser,query,registry,xhrPlugins,
18        securityDoc,rft_adminDoc,design_defaultDoc){
19    parser.parse();
20
21    var logNode;
22    query("#log").forEach(function(n){ logNode = n; });
23
24    function log(text,overwrite) {
25        if ( overwrite ) logNode.innerHTML = text
26        else logNode.innerHTML = logNode.innerHTML + '\n' + text;
27    }
28
29    var usernameInput = registry.byId('username');
30    var passwordInput = registry.byId('password');
31    var resetInput = registry.byId('reset');
32
33    usernameInput.set('value','rft_admin');
34    passwordInput.set('value','Welkom01');
35
36    log("Give CouchDB admin username & password and click 'Configure' to start.\nIf the database already exists, rft_admin password will suffice.",true);
37
38    registry.byId('configure').on('click',function(){
39        log("Configuring CouchDB for RFT:",true);
40
41        var baseUrl = '../data';
42        var username = usernameInput.get('value');
43        var password = passwordInput.get('value');
44        var reset = resetInput.get('value');
45
46        function req(method,url,body) {
47            args = {
48                url: baseUrl+url,
49                contentType: 'application/json',
50                handleAs: 'json',
51                sync: true,
52                error: function(err) {
53                    log("ERROR: "+err);
54                }
55            };
56            if ( !body || lang.isObject(body) ) {
57                body = json.toJson(body || {});
58            }
59            args.rawBody = body;
60            if ( username ) {
61                args.user = username;
62                args.password = password;
63            }
64            return xhr(method,args,true);
65        }
66
67        log("Checking CouchDB version");
68        req('GET','/')
69        .then(function(res){
70            if (res.version !== "1.2.0" ) {
71                log("Found "+res.version+", only tested with CouchDB 1.2.0")
72            } else {
73                log("CouchDB 1.2.0 found")
74            }
75        });
76
77
78        var exists = false;
79        log("Checking database 'rft'");
80        req('GET','/rft')
81        .then(function(res){
82            log("Database 'rft' found.\nLeaving security and users as they are.")
83            exists = true;
84        });
85        if ( exists && reset ) {
86            req('DELETE','/rft');
87            exists = false;
88        }
89        if ( !exists ) {
90            log("Creating database 'rft'")
91            req('PUT','/rft')
92           
93            /*log("Setting _security on database 'rft'");
94            req('PUT','/rft/_security', securityDoc);
95
96            log("Checking 'rft_admin' user");
97            req('GET','/_users/org.couchdb.user:rft_admin')
98            .then(function(){
99                log("User 'rft_admin' already exists.");
100            }, function() {
101                log("Creating user 'rft_admin' with password 'Welkom01'");
102                req('PUT','/_users/org.couchdb.user:rft_admin', rft_adminDoc);
103            });*/
104        };
105
106        log("Updating design documents");
107        newDoc = json.fromJson(design_defaultDoc);
108        req('GET','/rft/_design/default')
109        .then(function(doc){
110            newDoc['_rev'] = doc['_rev'];
111        });
112        req('PUT','/rft/_design/default', newDoc);
113
114        log("Done!");
115    });
116
117});
Note: See TracBrowser for help on using the repository browser.