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; }