import { Modification, ModificationRequest, Page, PageQueryParams } from "@/types" import { WebClient } from "@/shared/web-client" import { asUrlSearchParam } from "@/utils/query-param-utils.ts" interface ModificationParams extends PageQueryParams { firearmId?: string tags?: string[] } export async function getModifications(params?: ModificationParams): Promise> { let uri = "/modifications" const urlSearchParams = asUrlSearchParam(params) if (params?.firearmId) { urlSearchParams.append("firearmId", "" + params.firearmId) } if (params?.tags) { params.tags.forEach((tag) => urlSearchParams.append("tags", tag)) } if (urlSearchParams.size > 0) { uri = uri.concat("?", urlSearchParams.toString()) } const { data } = await WebClient.get>(uri) return data } export async function getModification(id: number): Promise { const { data } = await WebClient.get(`/modifications/${id}`) return data } export async function addModification(modification: ModificationRequest): Promise { const { data } = await WebClient.post("/modifications", modification) return data } export async function addModifications( modifications: ModificationRequest[] ): Promise { const { data } = await WebClient.post("/modifications/batch", { modifications, }) return data } export async function editModification( id: number, modification: ModificationRequest ): Promise { const { data } = await WebClient.put(`/modifications/${id}`, modification) return data } export async function removeModification( id: number ): Promise { await WebClient.delete(`/modifications/${id}`) } export async function removeModifications(ids: number[]) { const urlSearchParams = new URLSearchParams() ids.forEach((id) => urlSearchParams.append("ids", "" + id)) await WebClient.delete(`/modifications/batch-delete?${urlSearchParams.toString()}`) }