labelCategoryService.ts 2.12 KB
import { createApiClient } from "../lib/apiClient";
import type {
  LabelCategoryCreateInput,
  LabelCategoryDto,
  LabelCategoryGetListInput,
  LabelCategoryUpdateInput,
  PagedResultDto,
} from "../types/labelCategory";

const api = createApiClient({
  getToken: () => {
    try {
      return localStorage.getItem("access_token") ?? localStorage.getItem("token") ?? null;
    } catch {
      return null;
    }
  },
});

const PATH = "/label-category";

export async function getLabelCategories(input: LabelCategoryGetListInput, signal?: AbortSignal): Promise<PagedResultDto<LabelCategoryDto>> {
  return api.requestJson<PagedResultDto<LabelCategoryDto>>({
    path: PATH,
    method: "GET",
    query: {
      SkipCount: input.skipCount,
      MaxResultCount: input.maxResultCount,
      Sorting: input.sorting,
      Keyword: input.keyword,
      State: input.state,
    },
    signal,
  });
}

export async function getLabelCategory(id: string, signal?: AbortSignal): Promise<LabelCategoryDto> {
  return api.requestJson<LabelCategoryDto>({
    path: `${PATH}/${encodeURIComponent(id)}`,
    method: "GET",
    signal,
  });
}

export async function createLabelCategory(input: LabelCategoryCreateInput): Promise<LabelCategoryDto> {
  return api.requestJson<LabelCategoryDto>({
    path: PATH,
    method: "POST",
    body: {
      categoryCode: input.categoryCode,
      categoryName: input.categoryName,
      categoryPhotoUrl: input.categoryPhotoUrl,
      state: input.state ?? true,
      orderNum: input.orderNum,
    },
  });
}

export async function updateLabelCategory(id: string, input: LabelCategoryUpdateInput): Promise<LabelCategoryDto> {
  return api.requestJson<LabelCategoryDto>({
    path: `${PATH}/${encodeURIComponent(id)}`,
    method: "PUT",
    body: {
      categoryCode: input.categoryCode,
      categoryName: input.categoryName,
      categoryPhotoUrl: input.categoryPhotoUrl,
      state: input.state ?? true,
      orderNum: input.orderNum,
    },
  });
}

export async function deleteLabelCategory(id: string): Promise<void> {
  await api.requestJson<unknown>({
    path: `${PATH}/${encodeURIComponent(id)}`,
    method: "DELETE",
  });
}