import "reflect-metadata";
import { Controller, Get, Post, Put, Delete, Route, Path, Query, Body } from "@tsoa/runtime";
import itemSubGroupsService from "~/services/item/subGroups";

@Route("itemSubGroups")
export class ItemSubGroupsController extends Controller {
	/**
	 * Retrieves list of item sub-groups
	 * @param page Optional page number for pagination
	 */
	@Get()
	public async getList(@Query() page?: number): Promise<any[]> {
		const data = await itemSubGroupsService.getList(page);
		return Array.isArray(data) ? data : [data];
	}

	/**
	 * Creates a new item sub-group
	 */
	@Post()
	public async createSubGroup(@Body() body: any): Promise<any> {
		return await itemSubGroupsService.create(body);
	}

	/**
	 * Updates an item sub-group
	 */
	@Put("/:id")
	public async updateSubGroup(@Path() id: string | number, @Body() body: any): Promise<any> {
		return await itemSubGroupsService.update(id, body);
	}

	/**
	 * Deletes an item sub-group
	 */
	@Delete("/:id")
	public async deleteSubGroup(@Path() id: string | number): Promise<any> {
		return await itemSubGroupsService.remove(id);
	}
}
