import type { FastifyInstance } from 'fastify';
import { listHandler, createHandler, updateHandler, deleteHandler } from '../controllers/hallmarkGrade.controller.js';
import { authorize, authorizeAny } from '../plugins/authorize.js';
import { PERMISSIONS } from '../constants/permissions.js';
import { createHallmarkGradeSchema, updateHallmarkGradeSchema } from '../schemas/hallmarkGrade.schema.js';

const CAN_BROWSE_PRODUCTS = [PERMISSIONS.PRODUCTS_VIEW, PERMISSIONS.ORDERS_VIEW, PERMISSIONS.ORDERS_CREATE, PERMISSIONS.ORDERS_EDIT];

export default async function hallmarkGradeRoutes(fastify: FastifyInstance) {
  fastify.get('/api/hallmark-grades', { preHandler: [authorizeAny(CAN_BROWSE_PRODUCTS)] }, listHandler);
  fastify.post('/api/hallmark-grades', { preHandler: [authorize(PERMISSIONS.PRODUCTS_CREATE)], schema: createHallmarkGradeSchema }, createHandler);
  fastify.put('/api/hallmark-grades/:id', { preHandler: [authorize(PERMISSIONS.PRODUCTS_EDIT)], schema: updateHallmarkGradeSchema }, updateHandler);
  fastify.delete('/api/hallmark-grades/:id', { preHandler: [authorize(PERMISSIONS.PRODUCTS_DELETE)] }, deleteHandler);
}
