test_task_crm/frontend/src/features/contacts/api.ts

36 lines
1.1 KiB
TypeScript

import { apiClient } from '@/lib/api-client'
import type { Contact } from '@/types/crm'
export interface ContactFilters {
page?: number
pageSize?: number
search?: string
ownerId?: number
}
export interface ContactPayload {
name: string
email?: string | null
phone?: string | null
owner_id?: number | null
}
export type ContactUpdatePayload = Partial<Omit<ContactPayload, 'owner_id'>>
const mapFilters = (filters?: ContactFilters) => ({
page: filters?.page,
page_size: filters?.pageSize,
search: filters?.search,
owner_id: filters?.ownerId,
})
export const listContacts = (filters?: ContactFilters) =>
apiClient.get<Contact[]>('/contacts/', { params: mapFilters(filters) })
export const createContact = (payload: ContactPayload) => apiClient.post<Contact, ContactPayload>('/contacts/', payload)
export const updateContact = (contactId: number, payload: ContactUpdatePayload) =>
apiClient.patch<Contact, ContactUpdatePayload>(`/contacts/${contactId}`, payload)
export const deleteContact = (contactId: number) => apiClient.delete<void>(`/contacts/${contactId}`)