hexo
Version:
A fast, simple & powerful blog framework, powered by Node.js.
66 lines (56 loc) • 1.75 kB
JavaScript
var Database = require('warehouse'),
fs = require('graceful-fs'),
path = require('path'),
async = require('async'),
Model = require('../model');
module.exports = function(callback){
var db = new Database(),
dbPath = path.join(hexo.base_dir, 'db.json');
/**
* The model instance.
*
* @property model
* @type Model
* @for Hexo
*/
var model = hexo.model = new Model(db);
async.series([
function(next){
fs.exists(dbPath, function(exist){
if (!exist) return next();
hexo.log.d('Loading database.');
db.load(dbPath, function(err){
if (!err) return next();
hexo.log.e('Database load failed. Deleting database.');
fs.unlink(dbPath, next);
});
});
},
function(next){
var schema = require('../model/schema');
model.register('Asset', schema.Asset, require('../model/asset'));
model.register('Cache', schema.Cache, require('../model/cache'));
model.register('Category', schema.Category, require('../model/category'));
model.register('Page', schema.Page);
model.register('Post', schema.Post, require('../model/post'));
model.register('PostAsset', schema.PostAsset, require('../model/post_asset'));
model.register('Tag', schema.Tag, require('../model/tag'));
model.register('Token');
hexo.locals({
posts: function(){
return model('Post').populate('categories').populate('tags');
},
pages: function(){
return model('Page');
},
categories: function(){
return model('Category');
},
tags: function(){
return model('Tag');
}
});
next();
}
], callback);
};