Coverage for src/henrri_connect/models/base/models.py: 100%
18 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-05 10:54 +0200
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-05 10:54 +0200
1"""
2Modèles de base Pydantic v2 pour l'API Henrri.
4Attributs:
5- CamelModel: Modèle de base avec conversion automatique camelCase ↔ snake_case.
6- Link: Représente un lien hypertexte.
7- MetaPagedListResponse: Représente les métadonnées d'une réponse de liste paginée.
8- MetaListResponse: Représente les métadonnées d'une réponse de liste.
9"""
11from __future__ import annotations
13from pydantic import BaseModel, ConfigDict
14from pydantic.alias_generators import to_camel
16class CamelModel(BaseModel):
17 """
18 Modèle de base avec conversion automatique camelCase ↔ snake_case.
20 Attributs
21 - model_config: Configuration du modèle pour activer la conversion automatique des
22 noms de champs.
23 """
25 model_config = ConfigDict(
26 populate_by_name=True,
27 alias_generator=to_camel,
28 )
30class Link(CamelModel):
31 """
32 Représente un lien hypertexte.
34 Attributs
35 - href: URL du lien.
36 - rel: Relation du lien.
37 - method: Méthode HTTP du lien.
38 - label: Libellé du lien.
39 """
40 href: str | None = None
41 rel: str | None = None
42 method: str | None = None
43 label: str | None = None
46class MetaPagedListResponse(CamelModel):
47 """
48 Représente les métadonnées d'une réponse de liste paginée.
50 Attributs
51 - page: Numéro de la page.
52 - limit: Nombre d'éléments par page.
53 - total_count: Nombre total d'éléments.
54 - total_pages: Nombre total de pages.
55 - has_next: Indique si une page suivante existe.
56 """
57 page: int = 0
58 limit: int = 0
59 total_count: int = 0
60 total_pages: int = 0
61 has_next: bool = False
64class MetaListResponse(CamelModel):
65 """
66 Représente les métadonnées d'une réponse de liste.
68 Attributs
69 - total_count: Nombre total d'éléments.
70 """
71 total_count: int = 0