ekoetki/controllers/catalog.js

87 lines
2.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const {Application} = require("../core/server");
const Joi = require("joi");
const { PostDataProcess } = require("../core/postdata");
const User = require("../database/user");
const { MiddlewareAuth } = require("./auth");
const express = require("express");
const { countCatalogs, getCatalogs, createCatalog } = require("../database/catalog");
Application.get("/catalogs", MiddlewareAuth,CatalogPage);
/**
* @param {import("express").Request} request
* @param {import("express").Response} response
*/
async function CatalogPage(request, response)
{
response.render("panel/catalogs");
}
Application.post("/catalog/list", MiddlewareAuth, express.urlencoded({extended: true}), CatalogsList);
/**
* @param {import("express").Request} request
* @param {import("express").Response} response
*/
async function CatalogsList(request, response)
{
let start = request.body.start ?? 0;
let length = request.body.length ?? 100;
let term = request.body.search?.value ?? null;
let count = await countCatalogs(request.session.user_id, term);
let data = await getCatalogs(request.session.user_id,start,length, term);
response.json({
"draw": request.body.draw | 0,
"recordsTotal": count,
"recordsFiltered" : count,
"length": 0,
"data": data
});
}
Application.post("/catalog/store", MiddlewareAuth, PostDataProcess(), CatalogStore);
/**
* @param {import("express").Request} request
* @param {import("express").Response} response
*/
async function CatalogStore(request, response)
{
const error = catalogStoreValidation(request.body);
if(error)
{
return response.status(400).json({
status: "fail",
message: error.message
});
}
try{
await createCatalog(
request.session.user_id,
request.body.name,
request.body.score,
request.body.description
);
return response.status(200).json({
status: "success"
});
}catch(err){
console.log(err)
return response.status(500).json({
status: "fail"
});
}
}
function catalogStoreValidation(body)
{
const schema = Joi.object({
id: Joi.number().min(1),
name: Joi.string().min(3).max(200).required().error(new Error('Adı en az 3 karakter ve zorunludur')),
score: Joi.number().min(1).allow('', null).error(new Error('Soyadı formatı hatalı')),
description: Joi.string().allow('', null)
});
const {error} = schema.validate(body);
return error;
}