Example #1
0
 var del = function*() {
     if(process.env.NODE_ENV === 'development') {
         logger.log('Deleting main database.');
         db = yield* database.deleteDatabase();
         logger.log('Everything is gone now.');
     } else {
         logger.log("Delete database can only be used if NODE_ENV is 'development'");
     }
 };
Example #2
0
    var init = function*() {
        var odm = require('fora-models');
        var database = new odm.Database(conf.db);

        var _globals = {};
        var db, _doHttpRequest;

        var del = function*() {
            if(process.env.NODE_ENV === 'development') {
                logger.log('Deleting main database.');
                db = yield* database.deleteDatabase();
                logger.log('Everything is gone now.');
            } else {
                logger.log("Delete database can only be used if NODE_ENV is 'development'");
            }
        };

        var create = function*() {
            logger.log('This script will setup basic data. Calls the latest HTTP API.');

            //Create Users
            _globals.sessions = {};
            _doHttpRequest = thunkify(doHttpRequest);

            var user, token, resp, cred, adminkey;
            for (var _i = 0; _i < data.users.length; _i++) {
                user = data.users[_i];

                logger.log("Creating a credential for " + user.username);

                cred = {
                    secret: conf.services.auth.adminkeys.default,
                    type: user.credential_type
                };

                switch(cred.type) {
                    case 'builtin':
                        cred.username = user.credential_username;
                        cred.password = user.credential_password;
                        cred.email = user.email;
                        break;
                    case 'twitter':
                        cred.username = user.credential_username;
                        cred.id = user.credential_id;
                        cred.accessToken = user.credential_accessToken;
                        cred.accessTokenSecret = user.credential_accessTokenSecret;
                        cred.email = user.email;
                        break;
                }

                resp = yield* _doHttpRequest('/api/credentials', querystring.stringify(cred), 'post');
                token = JSON.parse(resp).token;

                resp = yield* _doHttpRequest("/api/users?token=" + token, querystring.stringify(user), 'post');
                resp = JSON.parse(resp);
                logger.log("Created " + resp.username);
                _globals.sessions[user.username] = resp;

                logger.log("Creating session for " + resp.username);
                resp = yield* _doHttpRequest("/api/login?token=" + token, querystring.stringify({ token: token, username: user.username }), 'post');
                _globals.sessions[user.username].token = JSON.parse(resp).token;
            }

            var apps = {};

            var app;
            for (_i = 0; _i < data.apps.length; _i++) {
                app = data.apps[_i];
                token = _globals.sessions[app._createdBy].token;
                logger.log("Creating a new app " + app.name + " with token " + token);
                delete app._createdBy;

                if (app._message)
                    app.message = fs.readFileSync(path.resolve(__dirname, "apps/" + app._message), 'utf-8');
                delete app._message;

                if (app._about)
                    app.about = fs.readFileSync(path.resolve(__dirname, "apps/" + app._about), 'utf-8');
                delete app._about;

                app.type = "forum";
                app.version = "1.0.0";
                resp = yield* _doHttpRequest("/api/apps?token=" + token, querystring.stringify(app), 'post');
                var appJson = JSON.parse(resp);
                apps[appJson.stub] = appJson;
                logger.log("Created " + appJson.name);

                for (var u in _globals.sessions) {
                    var uToken = _globals.sessions[u];
                    if (uToken.token !== token) {
                        resp = yield* _doHttpRequest("/api/app/" + appJson.stub + "/members?token=" + uToken.token, querystring.stringify(app), 'post');
                        resp = JSON.parse(resp);
                        logger.log(u + " joined " + app.name);
                    }
                }
            }

            for (_i = 0; _i < data.records.length; _i++) {
                var article = data.records[_i];
                token = _globals.sessions[article._createdBy].token;
                adminkey = _globals.sessions.jeswin.token;

                logger.log("Creating a new article with token " + token);
                logger.log("Creating " + article.title);

                article.content_text = fs.readFileSync(path.resolve(__dirname, "records/" + article._content), 'utf-8');
                article.content_format = 'markdown';
                article.state = 'published';
                app = article._app;
                var meta = article._meta;

                delete article._app;
                delete article._createdBy;
                delete article._content;
                delete article._meta;

                resp = yield* _doHttpRequest("/api/app/" + app + "?token=" + token, querystring.stringify(article), 'post');
                resp = JSON.parse(resp);
                logger.log("Created " + resp.title + " with stub " + resp.stub);

                var metaTags = meta.split(',');
                for (var _i2 = 0; _i2 < metaTags.length; _i2++) {
                    var metaTag = metaTags[_i2];
                    resp = yield* _doHttpRequest("/api/app/" + app + "/admin/records/" + resp.stub + "?token=" + adminkey,
                        querystring.stringify({ meta: metaTag}), 'put');
                    resp = JSON.parse(resp);
                    logger.log("Added " + metaTag + " tag to article " + resp.title);
                }
            }

            //Without this return, CS will create a wrapper function to return the results (array) of: for metaTag in meta.split(',')
            return;
        };

        if (argv["delete"]) {
            _ = yield* del();
            return process.exit();
        } else if (argv.create) {
            _ = yield* create();
            return process.exit();
        } else if (argv.recreate) {
            _ = yield* del();
            _ = yield* create();
            return process.exit();
        } else {
            logger.log('Invalid option.');
            return process.exit();
        }
    };