src/api/v2/projects/assettypes/asset.types.validator.tsmodified
import { NextFunction, Request, Response } from "express";
import { LoggerFactory } from "../../../../util/logger";
import { validateProjectId, validateUuidAndThrow, validateString } from "../../common.validator";
import { createInvalidRequestApiError } from "../../../../util/errorFormatter";

const logger = LoggerFactory("AssetTypesValidator");

export const validateListAssetTypesRequest = (req: Request, res: Response, next: NextFunction) => {
    if (!validateProjectId(logger, req.params.projectId, res)) return;
    next();
};

export const validateAssetTypeIdParam = (req: Request, res: Response, next: NextFunction) => {
    if (!validateProjectId(logger, req.params.projectId, res)) return;
    if (!validateUuidAndThrow(logger, "assetTypeId", req.params.assetTypeId, res)) return;
    next();
};

export const validateCreateRequest = (req: Request, res: Response, next: NextFunction) => {
    if (!validateProjectId(logger, req.params.projectId, res)) return;
    const { name, description } = req.body;
    if (!validateString(logger, "name", name, res)) return;
    if (description !== undefined && description !== null && typeof description !== "string") {
        return res.status(400).json(createInvalidRequestApiError("description must be a string when provided."));
    }
    next();
};