import type { Request, Response, NextFunction } from 'express';
import { ProductService } from '../services/product.service';
import { toProduct } from '../models/product.model';

export const ProductController = {
  async getAll(req: Request, res: Response, next: NextFunction) {
    try {
      const inStock = req.query.inStock === 'true';
      const products = await ProductService.getAll({ inStock });
      res.json(products);
    } catch (err) {
      next(err);
    }
  },

  async getById(req: Request, res: Response, next: NextFunction) {
    try {
      const raw = await ProductService.getById(Number(req.params.id));
      res.json(toProduct(raw));
    } catch (err) {
      next(err);
    }
  },
};