import "reflect-metadata";
import { Controller, Get, Post, Put, Delete, Route, Path, Query, Body } from "@tsoa/runtime";
import itemSubCategoriesService from "~/services/item/subCategories";

@Route("itemSubCategories")
export class ItemSubCategoriesController extends Controller {
	/**
	 * Retrieves list of item sub-categories
	 * @param filter Optional filter parameter
	 */
	@Get()
	public async getList(@Query() filter?: string): Promise<any[]> {
		const data = await itemSubCategoriesService.getList(filter);
		return Array.isArray(data) ? data : [data];
	}

	/**
	 * Creates a new item sub-category
	 */
	@Post()
	public async createSubCategory(@Body() body: any): Promise<any> {
		return await itemSubCategoriesService.create(body);
	}

	/**
	 * Updates an item sub-category
	 */
	@Put("/:id")
	public async updateSubCategory(@Path() id: string | number, @Body() body: any): Promise<any> {
		return await itemSubCategoriesService.update(id, body);
	}

	/**
	 * Deletes an item sub-category
	 */
	@Delete("/:id")
	public async deleteSubCategory(@Path() id: string | number): Promise<any> {
		return await itemSubCategoriesService.remove(id);
	}
}
