Post controller and repository for interfacing db.
This commit is contained in:
37
api/post.js
Normal file
37
api/post.js
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
const logger = require(`${__base}/logger`)
|
||||||
|
const establishedDatabase = require(`${__base}/database`);
|
||||||
|
|
||||||
|
const md = require("markdown-it")();
|
||||||
|
|
||||||
|
class PostRepository {
|
||||||
|
constructor(database) {
|
||||||
|
this.database = database || establishedDatabase;
|
||||||
|
}
|
||||||
|
|
||||||
|
renderPost(id) {
|
||||||
|
return this.getPost(id)
|
||||||
|
.then(post => {
|
||||||
|
if (post) {
|
||||||
|
return Promise.resolve(md.render(post.markdown))
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error("Post not found");
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
getPost(id) {
|
||||||
|
const query = "SELECT * from posts where id = $1";
|
||||||
|
return this.database.get(query, [id])
|
||||||
|
}
|
||||||
|
|
||||||
|
updatePost(id, markdown="## database testost") {
|
||||||
|
const query = `UPDATE posts SET markdown = $1 WHERE id = $2`;
|
||||||
|
|
||||||
|
const post = this.database.update(query, [markdown, id]);
|
||||||
|
|
||||||
|
return post
|
||||||
|
.then(post => true)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = PostRepository;
|
||||||
50
api/webserver/controllers/postController.js
Normal file
50
api/webserver/controllers/postController.js
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
const logger = require(`${__base}/logger`);
|
||||||
|
|
||||||
|
const PostRepository = require(`${__base}/post`);
|
||||||
|
const postRepository = new PostRepository();
|
||||||
|
|
||||||
|
function getPost(req, res) {
|
||||||
|
const { id } = req.params;
|
||||||
|
|
||||||
|
return postRepository.getPost(id)
|
||||||
|
.then(post => res.json({
|
||||||
|
success: true,
|
||||||
|
post: post
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
function renderPost(req, res) {
|
||||||
|
const { id } = req.params;
|
||||||
|
|
||||||
|
return postRepository.renderPost(id)
|
||||||
|
.then(markdown => res.json({
|
||||||
|
success: true,
|
||||||
|
markdown: markdown
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
function updatePost(req, res) {
|
||||||
|
const { id } = req.params;
|
||||||
|
const { markdown } = req.body;
|
||||||
|
|
||||||
|
return postRepository.updatePost(id, markdown)
|
||||||
|
.then(fileUpdated => res.json({
|
||||||
|
message: "Successfully updated post " + id,
|
||||||
|
filename: fileUpdated,
|
||||||
|
success: true
|
||||||
|
}))
|
||||||
|
.catch(error => {
|
||||||
|
const { httpStatus, message } = error;
|
||||||
|
|
||||||
|
return res.status(httpStatus || 500).json({
|
||||||
|
message: message,
|
||||||
|
success: false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
getPost,
|
||||||
|
renderPost,
|
||||||
|
updatePost
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user