53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
// ============================================================================
|
|
// Purchases API
|
|
// ============================================================================
|
|
|
|
import { api } from "./client";
|
|
import type {
|
|
Purchase,
|
|
PurchaseDetail,
|
|
PurchaseQueryParams,
|
|
PurchaseCreateRequest,
|
|
PurchaseCreateResponse,
|
|
PurchaseUpdateRequest,
|
|
PurchaseRefreshViewsResponse,
|
|
ListResponse,
|
|
SuccessResponse,
|
|
} from "@/lib/types/api";
|
|
|
|
export const purchasesApi = {
|
|
/**
|
|
* Get list of purchases
|
|
*/
|
|
list: (params?: PurchaseQueryParams) =>
|
|
api.get<ListResponse<Purchase>>("/purchases", { params }),
|
|
|
|
/**
|
|
* Get purchase details
|
|
*/
|
|
get: (id: string) => api.get<PurchaseDetail>(`/purchases/${id}`),
|
|
|
|
/**
|
|
* Create new purchase
|
|
*/
|
|
create: (data: PurchaseCreateRequest) =>
|
|
api.post<PurchaseCreateResponse>("/purchases", data),
|
|
|
|
/**
|
|
* Update purchase
|
|
*/
|
|
update: (id: string, data: PurchaseUpdateRequest) =>
|
|
api.patch<Purchase>(`/purchases/${id}`, data),
|
|
|
|
/**
|
|
* Delete purchase
|
|
*/
|
|
delete: (id: string) => api.delete<SuccessResponse>(`/purchases/${id}`),
|
|
|
|
/**
|
|
* Refresh views count for purchase
|
|
*/
|
|
refreshViews: (id: string) =>
|
|
api.post<PurchaseRefreshViewsResponse>(`/purchases/${id}/refresh-views`),
|
|
};
|