import "reflect-metadata";
import { Controller, Get, Query, Route, Path } from "@tsoa/runtime";
import itemSetsService from "~/services/item/sets";

@Route("itemSets")
export class ItemSetsController extends Controller {
	/**
	 * Retrieves list of item sets
	 * @param category Optional category filter
	 */
	@Get()
	public async getList(@Query() category?: string): Promise<any[]> {
		const data = await itemSetsService.getList(category);
		return Array.isArray(data) ? data : [data];
	}

	/**
	 * Retrieves a specific item set
	 */
	@Get("/:itemSetID")
	public async getOne(@Path() itemSetID: string | number): Promise<any> {
		return await itemSetsService.getOne(itemSetID);
	}

	/**
	 * Retrieves items in a specific set
	 */
	@Get("/:itemSetID/items")
	public async getItems(@Path() itemSetID: string | number): Promise<any[]> {
		const data = await itemSetsService.getItems(itemSetID);
		return Array.isArray(data) ? data : [data];
	}
}
