sub-manager-backend/objects/Endpoints.mjs

69 lines
1.7 KiB
JavaScript
Raw Normal View History

2023-09-06 16:26:15 +00:00
import express from "express";
2023-09-09 14:04:53 +00:00
import logger from "../logger.mjs";
import Story from "./Story.mjs"
import Publication from "./Publication.mjs"
import Submission from "./Submission.mjs";
2023-09-06 16:26:15 +00:00
2023-09-09 14:04:53 +00:00
export const getEndpoints = (dbObject) => {
2023-09-06 16:26:15 +00:00
const router = express.Router()
router.get('/stories', (req,res)=>{
2023-09-09 14:04:53 +00:00
res.statusCode=200
res.send(dbObject.stories)
2023-09-06 16:26:15 +00:00
})
router.get('/publications', (req,res)=>{
res.statusCode=200
2023-09-09 14:04:53 +00:00
res.send(dbObject.publications)
2023-09-06 16:26:15 +00:00
})
router.get('/submissions', (req,res)=>{
res.statusCode=200
2023-09-09 14:04:53 +00:00
res.send(dbObject.submissions)
2023-09-06 16:26:15 +00:00
})
return router
}
2023-09-09 14:04:53 +00:00
export const endpoints = (db) => {
const router = express.Router()
endpoint(router,Story,'create','insert',db)
endpoint(router,Story,'edit','update',db)
endpoint(router,Story,'delete','del',db)
endpoint(router,Submission,'create','insert',db)
endpoint(router,Submission,'edit','update',db)
endpoint(router,Submission,'delete','del',db)
endpoint(router,Publication,'create','insert',db)
endpoint(router,Publication,'edit','update',db)
endpoint(router,Publication,'delete','del',db)
return router
}
const endpoint = (router,Entity,path,method,db) =>{
router.post(`/${Entity.name.toLowerCase()}/${path}`, async (req,res) => {
try {
2023-09-10 15:01:21 +00:00
logger.trace({data:req.body},"POST request received")
2023-09-09 14:04:53 +00:00
const entity = new Entity(req.body)
await entity[method](db)
res.sendStatus(200)
} catch (error) {
2023-09-10 15:01:21 +00:00
logger.error(error)
2023-09-09 14:04:53 +00:00
if(error instanceof TypeError){
res.sendStatus(400)
}
res.sendStatus(500)
}
})
}
2023-09-06 16:26:15 +00:00