65 lines
2.5 KiB
TypeScript
65 lines
2.5 KiB
TypeScript
import apiClient from './client'
|
|
import type {
|
|
LabelCreate,
|
|
LabelResponse,
|
|
LabelTreeResponse,
|
|
LabelUpdate,
|
|
MessageBulkLabelRequest,
|
|
MessageBulkLabelResponse,
|
|
MessageLabelAddRequest,
|
|
MessageLabelRemoveRequest,
|
|
MessageLabelSetRequest,
|
|
} from '@/types/api.types'
|
|
|
|
export const labelsApi = {
|
|
// ─── CRUD Tag ─────────────────────────────────────────────────────────────
|
|
|
|
list: () =>
|
|
apiClient.get<LabelResponse[]>('/labels').then((r) => r.data),
|
|
|
|
/** Restituisce la tassonomia come albero annidato (Ambito > Processo > Classificazione). */
|
|
getTree: () =>
|
|
apiClient.get<LabelTreeResponse[]>('/labels/tree').then((r) => r.data),
|
|
|
|
create: (data: LabelCreate) =>
|
|
apiClient.post<LabelResponse>('/labels', data).then((r) => r.data),
|
|
|
|
update: (id: string, data: LabelUpdate) =>
|
|
apiClient.patch<LabelResponse>(`/labels/${id}`, data).then((r) => r.data),
|
|
|
|
delete: (id: string) =>
|
|
apiClient.delete(`/labels/${id}`).then((r) => r.data),
|
|
|
|
// ─── Tag su singolo messaggio ─────────────────────────────────────────────
|
|
|
|
getMessageLabels: (messageId: string) =>
|
|
apiClient
|
|
.get<LabelResponse[]>(`/messages/${messageId}/labels`)
|
|
.then((r) => r.data),
|
|
|
|
/** Sostituisce tutti i tag di un messaggio. */
|
|
setMessageLabels: (messageId: string, data: MessageLabelSetRequest) =>
|
|
apiClient
|
|
.put<LabelResponse[]>(`/messages/${messageId}/labels`, data)
|
|
.then((r) => r.data),
|
|
|
|
/** Aggiunge tag a un messaggio senza rimuovere quelli esistenti. */
|
|
addMessageLabels: (messageId: string, data: MessageLabelAddRequest) =>
|
|
apiClient
|
|
.post<LabelResponse[]>(`/messages/${messageId}/labels/add`, data)
|
|
.then((r) => r.data),
|
|
|
|
/** Rimuove specifici tag da un messaggio. */
|
|
removeMessageLabels: (messageId: string, data: MessageLabelRemoveRequest) =>
|
|
apiClient
|
|
.post<LabelResponse[]>(`/messages/${messageId}/labels/remove`, data)
|
|
.then((r) => r.data),
|
|
|
|
// ─── Bulk ─────────────────────────────────────────────────────────────────
|
|
|
|
bulkLabels: (data: MessageBulkLabelRequest) =>
|
|
apiClient
|
|
.post<MessageBulkLabelResponse>('/messages/bulk-labels', data)
|
|
.then((r) => r.data),
|
|
}
|