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

1""" 

2Modèles de base Pydantic v2 pour l'API Henrri. 

3 

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""" 

10 

11from __future__ import annotations 

12 

13from pydantic import BaseModel, ConfigDict 

14from pydantic.alias_generators import to_camel 

15 

16class CamelModel(BaseModel): 

17 """ 

18 Modèle de base avec conversion automatique camelCase ↔ snake_case. 

19 

20 Attributs 

21 - model_config: Configuration du modèle pour activer la conversion automatique des 

22 noms de champs. 

23 """ 

24 

25 model_config = ConfigDict( 

26 populate_by_name=True, 

27 alias_generator=to_camel, 

28 ) 

29 

30class Link(CamelModel): 

31 """ 

32 Représente un lien hypertexte. 

33 

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 

44 

45 

46class MetaPagedListResponse(CamelModel): 

47 """ 

48 Représente les métadonnées d'une réponse de liste paginée. 

49 

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 

62 

63 

64class MetaListResponse(CamelModel): 

65 """ 

66 Représente les métadonnées d'une réponse de liste. 

67 

68 Attributs 

69 - total_count: Nombre total d'éléments. 

70 """ 

71 total_count: int = 0