Ghost/core/server/models/index.js
Jason Williams 696fbaaee4 Follow symlinks when resolving theme paths.
Closes #4225
- If a theme is symlinked in the themes directory, follow
  the symlink so that the theme object is populated correctly.
- Only do the fallback loading of theme data in the validations
  module if it doesn't exist in config.
2014-10-02 13:37:18 +00:00

62 lines
2.0 KiB
JavaScript

var _ = require('lodash'),
Promise = require('bluebird'),
requireTree = require('../require-tree'),
models;
models = {
excludeFiles: ['_messages', 'basetoken.js', 'base.js', 'index.js'],
// ### init
// Scan all files in this directory and then require each one and cache
// the objects exported onto this `models` object so that every other
// module can safely access models without fear of introducing circular
// dependency issues.
// @returns {Promise}
init: function () {
var self = this;
// One off inclusion of Base file.
self.Base = require('./base');
// Require all files in this directory
return requireTree.readAll(__dirname, {followSymlinks: false}).then(function (modelFiles) {
// For each found file, excluding those we don't want,
// we will require it and cache it here.
_.each(modelFiles, function (path, fileName) {
// Return early if this fileName is one of the ones we want
// to exclude.
if (_.contains(self.excludeFiles, fileName)) {
return;
}
// Require the file.
var file = require(path);
// Cache its `export` object onto this object.
_.extend(self, file);
});
return;
});
},
// ### deleteAllContent
// Delete all content from the database (posts, tags, tags_posts)
deleteAllContent: function () {
var self = this;
return self.Post.findAll().then(function (posts) {
return Promise.all(_.map(posts.toJSON(), function (post) {
return self.Post.destroy({id: post.id});
}));
}).then(function () {
return self.Tag.findAll().then(function (tags) {
return Promise.all(_.map(tags.toJSON(), function (tag) {
return self.Tag.destroy({id: tag.id});
}));
});
});
}
};
module.exports = models;