import { Request, Response } from 'express';
import { <%- modelName %>Service } from '../../domain/services/<%- modelName %>.service';

<%- typeof aiValidationLogic !== 'undefined' ? aiValidationLogic : '// No external validation logic injected' %>

export class <%- modelName %>Controller {
  
  static async getAll(req: Request, res: Response) {
    try {
      const data = await <%- modelName %>Service.getAll();
      res.status(200).json(data);
    } catch (error: any) {
      res.status(500).json({ message: error.message });
    }
  }

  static async getById(req: Request, res: Response) {
    try {
      const id = req.params.id;
      const data = await <%- modelName %>Service.getById(id);
      if (!data) return res.status(404).json({ message: 'Not found' });
      res.status(200).json(data);
    } catch (error: any) {
      res.status(500).json({ message: error.message });
    }
  }

  static async create(req: Request, res: Response) {
    try {
      const data = await <%- modelName %>Service.create(req.body);
      res.status(201).json(data);
    } catch (error: any) {
      res.status(400).json({ message: error.message });
    }
  }

  static async update(req: Request, res: Response) {
    try {
      const id = req.params.id;
      const data = await <%- modelName %>Service.update(id, req.body);
      res.status(200).json(data);
    } catch (error: any) {
      res.status(400).json({ message: error.message });
    }
  }

  static async delete(req: Request, res: Response) {
    try {
      const id = req.params.id;
      await <%- modelName %>Service.delete(id);
      res.status(204).send();
    } catch (error: any) {
      res.status(500).json({ message: error.message });
    }
  }
}
