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

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

[Client] Changed store and pages to use CouchDB.
[Client] Disabled login for now, have to figure out some more details about CouchDB.

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