// Auto-generated by create-backlist on <%= new Date().toISOString() %>
import { Request, Response } from 'express';

const modelLabel = '<%= modelName %>';

function serverError(res: Response, action: string, error: unknown) {
  const message = error instanceof Error ? error.message : String(error);
  return res.status(500).json({ success: false, message: `Error ${action} ${modelLabel}`, error: message });
}

export const create<%= modelName %> = async (req: Request, res: Response) => {
  try {
    // TODO: implement create logic (DB)
    return res.status(201).json({ success: true, message: `${modelLabel} created`, data: req.body });
  } catch (error) {
    return serverError(res, 'creating', error);
  }
};

export const getAll<%= modelName %>s = async (req: Request, res: Response) => {
  try {
    // Optional scaffold for pagination
    const page = Number(req.query.page || 1);
    const limit = Number(req.query.limit || 20);

    // TODO: implement list logic (DB)
    return res.status(200).json({ success: true, page, limit, data: [] });
  } catch (error) {
    return serverError(res, 'fetching', error);
  }
};

export const get<%= modelName %>ById = async (req: Request, res: Response) => {
  try {
    const { id } = req.params;
    // TODO: implement get by id logic (DB)
    // If not found: return res.status(404).json({ success:false, message:`${modelLabel} not found` })
    return res.status(200).json({ success: true, data: { id } });
  } catch (error) {
    return serverError(res, 'fetching', error);
  }
};

export const update<%= modelName %>ById = async (req: Request, res: Response) => {
  try {
    const { id } = req.params;
    // TODO: implement update logic (DB)
    // If not found: return 404
    return res.status(200).json({ success: true, message: `${modelLabel} updated`, data: { id, ...req.body } });
  } catch (error) {
    return serverError(res, 'updating', error);
  }
};

export const delete<%= modelName %>ById = async (req: Request, res: Response) => {
  try {
    const { id } = req.params;
    // TODO: implement delete logic (DB)
    // If not found: return 404
    return res.status(204).send();
  } catch (error) {
    return serverError(res, 'deleting', error);
  }
};