import { usePaginatedList } from '~/shared/composables/usePaginatedList'

/**
 * Site Starseed rattache a une adresse du fournisseur, tel qu'embarque en LISTE
 * (groupe site:read) pour la colonne « Site » du Repertoire (badges colores).
 * Agrege des adresses cote back via Supplier::getSites() (cf. spec-back M2).
 */
export interface SupplierSite {
    id: number
    name: string
    color: string
}

/**
 * Categorie (type FOURNISSEUR) rattachee au fournisseur, embarquee en LISTE
 * (groupe category:read). La colonne « Catégories » affiche le `name` (et non le
 * `code` comme au M1 clients — decision spec-front M2 § Datatable).
 */
export interface SupplierCategory {
    code: string
    name: string
}

/**
 * Vue MINIMALE d'un fournisseur pour le Repertoire (datatable). Volontairement
 * partielle : seuls les champs des colonnes + l'id (navigation) sont types ici.
 * Le detail complet (onglets) est hors perimetre de cet ecran (ERP-93).
 */
export interface Supplier {
    id: number
    companyName: string
    categories: SupplierCategory[]
    sites: SupplierSite[]
    /** Date ISO de derniere modification (default:read) — colonne « Dernière activité ». */
    updatedAt: string | null
    isArchived: boolean
}

/**
 * Repertoire fournisseurs (ERP-93) — simple enveloppe de `usePaginatedList<Supplier>`
 * sur la ressource `/suppliers` (RG-13 : pagination serveur obligatoire ; jamais
 * de chargement integral en memoire). Miroir de `useClientsRepository` (M1).
 *
 * Les filtres (recherche, categories, sites, archives) sont pilotes par la page
 * via `setFilters` du composable partage — la remise en page 1 est garantie.
 * Cocher « Voir les archivés » envoie `archivedOnly=true` → seules les archives
 * sont listees (aligne sur Client).
 *
 * Volontairement PAR INSTANCE (pas de singleton module-level) : l'etat tableau
 * est propre a l'ecran Repertoire et meurt avec lui, comme tout consommateur de
 * `usePaginatedList`. Aucun reset au logout a gerer.
 */
export function useSuppliersRepository() {
    return usePaginatedList<Supplier>({ url: '/suppliers' })
}
