| Current Path : /var/node/inatote/Inatote-Backend/categories/ |
| Current File : /var/node/inatote/Inatote-Backend/categories/categories-endpoint.js |
import {
UniqueConstraintError,
InvalidPropertyError,
RequiredParameterError
} from '../helpers/errors.js'
import makeHttpError from '../helpers/http-error.js'
import makeCategory from './category.js'
import validateHeaders from '../helpers/validate-headers.js'
export default function makeCategoriesEndpointHandler({ categoryList }) {
return {
postcategory: postcategory,
getcategories : getcategorys,
deletecategory : deletecategory,
updatecategory : updatecategory
}
// return async function handle(httpRequest) {
// switch (httpRequest.method) {
// case 'POST':
// return postcategory(httpRequest)
// case 'GET':
// return getcategorys(httpRequest)
// case 'DELETE':
// return deletecategory(httpRequest)
// case 'PUT':
// return updatecategory(httpRequest)
// case 'PATCH':
// return replacecategory(httpRequest)
// default:
// return makeHttpError({
// statusCode: 405,
// errorMessage: `${httpRequest.method} method not allowed.`
// })
// }
// }
// todo
async function updatecategory(req , res) {
let category_id = req.params.id
let categoryInfo = req.body;
if (!categoryInfo) {
return makeHttpError({
statusCode: 400,
errorMessage: 'Bad request. No POST body.'
})
}
if (typeof req.body === 'string') {
try {
categoryInfo = JSON.parse(categoryInfo)
} catch {
return makeHttpError({
statusCode: 400,
errorMessage: 'Bad request. POST body must be valid JSON.'
})
}
}
try {
let files = []
if(req.files && req.files.length > 0){
let imageFile = req.files;
imageFile.map(f=>{
files = [...files , f.path]
})
categoryInfo.imageURL = files;
}
if(Object.keys(categoryInfo).includes("isEnabled")){
categoryInfo.isEnabled = categoryInfo.isEnabled == "true" || categoryInfo.isEnabled == true ? true : false
}
//console.log("category" , categoryInfo);
const category =categoryInfo
const result = await categoryList.update({categoryId : category_id , category: category });
return res.status(200).json({
headers: {
'Content-Type': 'application/json'
},
statusCode: 201,
data:result
})
} catch (e) {
//console.log("e" , e);
return res.status(400).json({
errorMessage: e.message ? e.message : e,
statusCode:
e instanceof UniqueConstraintError
? 409
: e instanceof InvalidPropertyError ||
e instanceof RequiredParameterError
? 400
: 500
})
}
}
// todo
async function replacecategory(httpRequest) { }
// todo
async function postcategory(req , res) {
let categoryInfo = req.body
if (!categoryInfo) {
return makeHttpError({
statusCode: 400,
errorMessage: 'Bad request. No POST body.'
})
}
if (typeof req.body === 'string') {
try {
categoryInfo = JSON.parse(categoryInfo)
} catch {
return makeHttpError({
statusCode: 400,
errorMessage: 'Bad request. POST body must be valid JSON.'
})
}
}
try {
let files = []
if(req.files && req.files.length > 0){
let imageFile = req.files;
imageFile.map(f=>{
files = [...files , f.path]
})
}
categoryInfo.imageURL = files;
categoryInfo.products = [];
//console.log("category" , categoryInfo);
const category = makeCategory(categoryInfo)
const result = await categoryList.add(category)
return res.status(200).json({
headers: {
'Content-Type': 'application/json'
},
statusCode: 201,
data:result
})
} catch (e) {
//console.log("e" , e);
return res.status(400).json({
errorMessage: e.message ? e.message : e,
statusCode:
e instanceof UniqueConstraintError
? 409
: e instanceof InvalidPropertyError ||
e instanceof RequiredParameterError
? 400
: 500
})
}
}
// todo
async function getcategorys(req , res) {
const { id } = req.params || {}
const { max, before, after } = req.query || {}
const result = id
? await categoryList.findById({ categoryId: id })
: await categoryList.getItems({ max, before, after })
return res.status(200).json({
headers: {
'Content-Type': 'application/json'
},
statusCode: 200,
data: result
})
}
// todo
async function deletecategory(req , res) {
const { id } = req.params || {}
const result = await categoryList.remove({ categoryId: id })
return res.status(200).json({
headers: {
'Content-Type': 'application/json'
},
statusCode: 200,
data: JSON.stringify(result)
})
}
}