bb6880ea49
Moving towards using an API which we can both expose publicly, and use internally. Due to issues with JugglingDB, this breaks updating contentHTML on edit Also, language, status, featured etc are all no long set / updated.
77 lines
2.4 KiB
JavaScript
77 lines
2.4 KiB
JavaScript
// # Ghost Data API
|
|
// Provides access to the data model
|
|
|
|
/**
|
|
* This is intended to replace the old dataProvider files and should access & manipulate the models directly
|
|
*/
|
|
|
|
/*global module, require */
|
|
(function () {
|
|
"use strict";
|
|
|
|
var Ghost = require('../ghost'),
|
|
when = require('when/node/function'),
|
|
_ = require('underscore'),
|
|
|
|
ghost = new Ghost(),
|
|
posts,
|
|
users,
|
|
requestHandler;
|
|
|
|
// # Posts
|
|
posts = {
|
|
// takes filter / pagination parameters
|
|
// returns a list of posts in a json response
|
|
browse: function (options) {
|
|
return when.call(ghost.dataProvider().posts.findAll);
|
|
},
|
|
// takes an identifier (id or slug?)
|
|
// returns a single post in a json response
|
|
read: function (id) {
|
|
return when.call(ghost.dataProvider().posts.findOne, {id: id});
|
|
},
|
|
// takes a json object with all the properties which should be updated
|
|
// returns the resulting post in a json response
|
|
edit: function (postData) {
|
|
console.log('edit data', postData);
|
|
return when.call(ghost.dataProvider().posts.edit, postData);
|
|
},
|
|
// takes a json object representing a post,
|
|
// returns the resulting post in a json response
|
|
add: function (postData) {
|
|
console.log('data', postData);
|
|
return when.call(ghost.dataProvider().posts.add, postData);
|
|
},
|
|
// takes an identifier (id or slug?)
|
|
// returns a json response with the id of the deleted post
|
|
destroy: function (id) {
|
|
return when.call(ghost.dataProvider().posts.destroy, id);
|
|
}
|
|
};
|
|
|
|
// # Users
|
|
users = {};
|
|
// settings: {},
|
|
// categories: {},
|
|
// post_categories: {}
|
|
|
|
|
|
// requestHandler
|
|
// decorator for api functions which are called via an HTTP request
|
|
// takes the API method and wraps it so that it gets data from the request and returns a sensible JSON response
|
|
requestHandler = function (apiMethod) {
|
|
return function (req, res) {
|
|
var options = _.extend(req.body, req.params);
|
|
return apiMethod(options).then(function (result) {
|
|
res.json(result);
|
|
}, function (error) {
|
|
res.json(400, {error: error});
|
|
});
|
|
};
|
|
};
|
|
|
|
|
|
module.exports.posts = posts;
|
|
module.exports.users = users;
|
|
module.exports.requestHandler = requestHandler;
|
|
}()); |