Files
PecHub/frontend/src/api/labels.api.ts
T

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),
}