Last active
August 29, 2015 14:02
-
-
Save scarletsky/ebfd2697a44b972461c9 to your computer and use it in GitHub Desktop.
Valkyrie Project Test Data
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'); | |
var mongoose = require('mongoose'); | |
var models = require('./app/models'); | |
var async = require('async'); | |
var shell = require('shelljs'); | |
var eventproxy = require('eventproxy'); | |
var ep = new eventproxy.EventProxy(); | |
var User = models.User; | |
var Source = models.Source; | |
var Character = models.Character; | |
var Quote = models.Quote; | |
var env = 'development'; | |
var config = require('./config/config')[env]; | |
var data = []; | |
fs.readdirSync('./data/').forEach(function (filename) { | |
var name = filename.replace('.js', ''); | |
var fileData = require('./data/' + name)[name]; | |
data.push(fileData); | |
}); | |
var connect = function () { | |
var options = { | |
server: { | |
socketOptions: { | |
keepAlive: 1 | |
} | |
} | |
}; | |
mongoose.connect(config.db, options); | |
}; | |
connect(); | |
async.waterfall([ | |
// remove index | |
function (callback) { | |
shell.exec('curl -XDELETE "http://localhost:9200/sources/"', {silent:true}); | |
shell.exec('curl -XDELETE "http://localhost:9200/characters/"', {silent:true}); | |
shell.exec('curl -XDELETE "http://localhost:9200/quotes/"', {silent:true}); | |
console.log('indexes remove successfully'); | |
callback(null); | |
}, | |
// remove useres | |
function (callback) { | |
User.remove(function (err) { | |
console.log('users remove successfully'); | |
callback(null); | |
}); | |
}, | |
// remove sources | |
function (callback) { | |
Source.remove(function (err) { | |
console.log('sources remove successfully'); | |
callback(null); | |
}); | |
}, | |
// remove characters | |
function (callback) { | |
Character.remove(function (err) { | |
console.log('characters remove successfully'); | |
callback(null); | |
}); | |
}, | |
//remove quotes | |
function (callback) { | |
Quote.remove(function (err) { | |
console.log('quotes remove successfully'); | |
callback(null); | |
}); | |
}, | |
// insert users | |
function (callback) { | |
var userX = {username: 'hello', password: 'world'}; | |
var user = new User(userX); | |
user.save(function () { | |
console.log('user ' + userX.username + ' init successfully!'); | |
callback(null, user); | |
}); | |
}, | |
// insert data | |
function (user, callback) { | |
// insert sources | |
async.each(data, function (object, callback) { | |
var sourceX = { | |
name: object.name, | |
alias: object.alias, | |
info: object.info, | |
cover: object.cover, | |
contributorId: user._id | |
}; | |
var newSource = new Source(sourceX); | |
newSource.save(); | |
(function (source, characters) { | |
// insert characters | |
async.each(characters, function (character, callback) { | |
var characterX = { | |
name: character.name, | |
alias: character.alias, | |
info: character.info, | |
avatar: character.avatar, | |
sourceId: newSource._id, | |
quotesCount: 0, | |
contributorId: user._id | |
}; | |
var newCharacter = new Character(characterX); | |
newCharacter.save(function (err) { | |
callback(); | |
}); | |
}, function (err) { | |
if (err) { | |
console.log(err); | |
} else { | |
ep.emit('source' + source._id + 'charactersok'); | |
} | |
}); | |
})(newSource, object.characters); | |
(function (source, quotes) { | |
// insert quotes | |
ep.once('source' + source._id + 'charactersok', function () { | |
async.each(quotes, function (quote, callback) { | |
var characterIds = []; | |
var quoteX = { | |
quote: quote.quote, | |
likeCount: 0, | |
scene: quote.scene, | |
tags: quote.tags, | |
reference: quote.reference, | |
contributorId: user._id | |
}; | |
var newQuote = new Quote(quoteX); | |
// query quote's characters | |
async.map(quote.characters, function (characterName, callback) { | |
Character | |
.findOneAndUpdate({ | |
sourceId: source._id, | |
$or: [ | |
{name: characterName}, | |
{alias: characterName} | |
] | |
}, { | |
$inc: { | |
quotesCount: 1 | |
} | |
}) | |
.exec(function (err, character) { | |
if (err) { | |
return console.log(err); | |
} else { | |
callback(null, character._id); | |
} | |
}); | |
}, function (err, characterIds) { | |
newQuote.characterIds = characterIds; | |
newQuote.save(function () { | |
callback(null); // what's this? | |
}); | |
}); // end of async on mapping characterIds of quote | |
}, function () { | |
callback(null); // what's this? | |
}); // end of async on inserting quotes | |
}); // end of event proxy | |
})(newSource, object.quotes); | |
}, function (err) { | |
// finish! | |
callback(null); | |
}); | |
} | |
// finish | |
], function (err, results) { | |
if (err) { | |
console.log(err); | |
process.exit(1); | |
} | |
console.log('----- insert finished -----'); | |
setTimeout(function () { | |
console.log('----- adding index -----'); | |
shell.exec('node addIndex.js'); | |
console.log('----- adding index finished -----'); | |
process.exit(0); | |
}, 1000); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment