73 lines
1.6 KiB
TypeScript
73 lines
1.6 KiB
TypeScript
import { apiFetch } from "@/lib/useApi";
|
|
|
|
export type AdminCategory = {
|
|
id: number;
|
|
slug: string;
|
|
name: string;
|
|
description?: string | null;
|
|
groupName?: string | null;
|
|
sortOrder?: number | null;
|
|
};
|
|
|
|
export type AdminPartRoleMapping = {
|
|
id: number;
|
|
platform: string;
|
|
partRole: string;
|
|
categorySlug: string;
|
|
categoryName: string;
|
|
groupName?: string | null;
|
|
notes?: string | null;
|
|
};
|
|
|
|
export async function fetchAdminCategories(token: string) {
|
|
return apiFetch<AdminCategory[]>("/api/admin/categories", {
|
|
token,
|
|
});
|
|
}
|
|
|
|
export async function fetchPartRoleMappings(token: string, platform = "AR-15") {
|
|
const params = new URLSearchParams({ platform });
|
|
return apiFetch<AdminPartRoleMapping[]>(`/api/admin/category-mappings?${params.toString()}`, {
|
|
token,
|
|
});
|
|
}
|
|
|
|
export async function createPartRoleMapping(
|
|
token: string,
|
|
payload: {
|
|
platform: string;
|
|
partRole: string;
|
|
categorySlug: string;
|
|
notes?: string;
|
|
},
|
|
) {
|
|
return apiFetch<AdminPartRoleMapping>("/api/admin/category-mappings", {
|
|
method: "POST",
|
|
token,
|
|
body: payload,
|
|
});
|
|
}
|
|
|
|
export async function updatePartRoleMapping(
|
|
token: string,
|
|
id: number,
|
|
payload: {
|
|
platform: string;
|
|
partRole: string;
|
|
categorySlug: string;
|
|
notes?: string;
|
|
},
|
|
) {
|
|
return apiFetch<AdminPartRoleMapping>(`/api/admin/category-mappings/${id}`, {
|
|
method: "PUT",
|
|
token,
|
|
body: payload,
|
|
});
|
|
}
|
|
|
|
export async function deletePartRoleMapping(token: string, id: number) {
|
|
await apiFetch<void>(`/api/admin/category-mappings/${id}`, {
|
|
method: "DELETE",
|
|
token,
|
|
});
|
|
} |