64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
import { api } from './client';
|
|
import { apiFormData } from './client';
|
|
import type {
|
|
AssignOwnerPayload,
|
|
Business,
|
|
BusinessImage,
|
|
CreateBusinessPayload,
|
|
UpdateBusinessPayload,
|
|
} from './types';
|
|
|
|
export function fetchBusinesses(params?: {
|
|
categoryId?: string;
|
|
isActive?: boolean;
|
|
}) {
|
|
const search = new URLSearchParams();
|
|
if (params?.categoryId) search.set('categoryId', params.categoryId);
|
|
if (params?.isActive !== undefined) search.set('isActive', String(params.isActive));
|
|
const query = search.toString();
|
|
return api<Business[]>(`/businesses${query ? `?${query}` : ''}`);
|
|
}
|
|
|
|
export function fetchBusiness(id: string) {
|
|
return api<Business>(`/businesses/${id}`);
|
|
}
|
|
|
|
export function createBusiness(payload: CreateBusinessPayload) {
|
|
return api<Business>('/businesses', {
|
|
method: 'POST',
|
|
body: JSON.stringify(payload),
|
|
});
|
|
}
|
|
|
|
export function updateBusiness(id: string, payload: UpdateBusinessPayload) {
|
|
return api<Business>(`/businesses/${id}`, {
|
|
method: 'PATCH',
|
|
body: JSON.stringify(payload),
|
|
});
|
|
}
|
|
|
|
export function deleteBusiness(id: string) {
|
|
return api<{ success: true }>(`/businesses/${id}`, { method: 'DELETE' });
|
|
}
|
|
|
|
export function assignBusinessOwner(id: string, payload: AssignOwnerPayload) {
|
|
return api<Business>(`/businesses/${id}/assign-owner`, {
|
|
method: 'POST',
|
|
body: JSON.stringify(payload),
|
|
});
|
|
}
|
|
|
|
export function uploadBusinessImages(businessId: string, files: File[]) {
|
|
const form = new FormData();
|
|
for (const file of files) {
|
|
form.append('files', file);
|
|
}
|
|
return apiFormData<BusinessImage[]>(`/businesses/${businessId}/images`, form);
|
|
}
|
|
|
|
export function deleteBusinessImage(businessId: string, imageId: string) {
|
|
return api<{ success: true }>(`/businesses/${businessId}/images/${imageId}`, {
|
|
method: 'DELETE',
|
|
});
|
|
}
|