src/api/v2/projects/assets/assets.controller.tsmodified
import { Request, Response } from "express";
import { LoggerFactory } from "../../../../util/logger";
import { createApiErrorResponse } from "../../../../util/errorFormatter";
import * as service from "../../../../services/assets.service";
import { PagingQueryParam } from "../../../../models/ingress";
import { parsePagingQueryParam } from "../../../../middleware/middleware";
import { buildPaginatedQueryResponse } from "../../../../util/pagination.util";

const logger = LoggerFactory("AssetsController");

export const listAssets = async (req: Request, res: Response) => {
    const { projectId } = req.params;
    const paging: PagingQueryParam = parsePagingQueryParam(req);
    try {
        const assets = await service.listAssets(projectId, paging);
        return res.status(200).json(buildPaginatedQueryResponse(assets));
    } catch (err) {
        logger.error("Error listing assets", err);
        return createApiErrorResponse(err, res);
    }
};

export const getAsset = async (req: Request, res: Response) => {
    const { projectId, assetId } = req.params;
    try {
        const asset = await service.getAssetById(projectId, assetId);
        return res.status(200).json(asset);
    } catch (err) {
        logger.error("Error getting asset", err);
        return createApiErrorResponse(err, res);
    }
};

export const createAsset = async (req: Request, res: Response) => {
    const { projectId } = req.params;
    const { name, assetTypeId } = req.body;
    try {
        const asset = await service.createAsset(projectId, assetTypeId, name);
        return res.status(201).json(asset);
    } catch (err) {
        logger.error("Error creating asset", err);
        return createApiErrorResponse(err, res);
    }
};

export const patchAsset = async (req: Request, res: Response) => {
    const { projectId, assetId } = req.params;
    const { name } = req.body;
    try {
        const asset = await service.updateAsset(projectId, assetId, { name });
        return res.status(200).json(asset);
    } catch (err) {
        logger.error("Error updating asset", err);
        return createApiErrorResponse(err, res);
    }
};