Code source de henrri_connect.document_lines.asynchro

"""
Sous-client pour les endpoints /v1/documents/{documentId}/lines.

Classes:
- ``henrri_connect.document_lines.asynchro.AsyncDocumentLinesClient``
    Accès asynchrone aux endpoints lignes de documents.

Notes:
- Utiliser de préférence l'objet ``henrri_connect.AsyncHenrriClient`` pour acceder
aux endpoints.
"""

from __future__ import annotations

from typing import TYPE_CHECKING, Optional

from ..models import DocumentLine, ListResponse, DocumentLineListQueryParameters

if TYPE_CHECKING:
    from ..connect import AsyncHenrriClient

DOCUMENT_ENDPOINT = "/v1/documents"

[docs] class AsyncDocumentLinesClient: """ Accès asynchrone aux lignes de document. Arguments - ``client`` : Objet ``henrri_connect.AsyncHenrriClient``. Methods - ``list_document_lines`` : Liste les lignes d'un document. - ``add`` : Ajoute une ligne à un document. - ``get`` : Récupère une ligne de document par son identifiant. - ``modify`` : Modifie une ligne de document par son identifiant. - ``delete`` : Supprime une ligne de document par son identifiant. - ``move`` : Déplace une ligne vers une position donnée. """ def __init__(self, client: AsyncHenrriClient) -> None: self._c = client
[docs] async def list_document_lines( self, document_id: int, query_params: Optional[DocumentLineListQueryParameters] = None, ) -> ListResponse[DocumentLine]: """ Liste les lignes d'un document. Arguments - ``document_id`` (int) : Identifiant du document (min 1 et max 2 147 483 647). - ``query_params`` (DocumentLineListQueryParameters, optional) : Paramètres de requête. Returns - ``ListResponse[DocumentLine]`` : Liste de lignes de document. """ if query_params: resp = await self._c.request( "GET", f"{DOCUMENT_ENDPOINT}/{document_id}/lines", params=query_params.model_dump( by_alias=True, exclude_unset=True, exclude_none=True ), ) else: resp = await self._c.request("GET", f"{DOCUMENT_ENDPOINT}/{document_id}/lines") return ListResponse[DocumentLine].model_validate(resp.json())
[docs] async def add(self, document_id: int, line: DocumentLine) -> DocumentLine: """ Ajoute une ligne à un document. Arguments - ``document_id`` : Identifiant du document. - ``line`` : Ligne de document. Returns - ``DocumentLine`` : Ligne de document ajoutée. """ resp = await self._c.request( "POST", f"{DOCUMENT_ENDPOINT}/{document_id}/lines", json=line.model_dump(by_alias=True, exclude_unset=True, exclude_none=True), ) return DocumentLine.model_validate(resp.json())
[docs] async def get(self, document_id: int, line_id: int) -> DocumentLine: """ Récupère une ligne de document par son identifiant. Arguments - ``document_id`` : Identifiant du document. - ``line_id`` : Identifiant de la ligne de document. Returns - ``DocumentLine`` : Ligne de document. """ resp = await self._c.request("GET", f"{DOCUMENT_ENDPOINT}/{document_id}/lines/{line_id}") return DocumentLine.model_validate(resp.json())
[docs] async def modify(self, document_id: int, line_id: int, line: DocumentLine) -> DocumentLine: """ Met à jour une ligne de document. Arguments - ``document_id`` : Identifiant du document. - ``line_id`` : Identifiant de la ligne de document. - ``line`` : Ligne de document. Returns - ``DocumentLine`` : Ligne de document modifiée. """ resp = await self._c.request( "PUT", f"{DOCUMENT_ENDPOINT}/{document_id}/lines/{line_id}", json=line.model_dump(by_alias=True, exclude_unset=True, exclude_none=True), ) return DocumentLine.model_validate(resp.json())
[docs] async def delete(self, document_id: int, line_id: int) -> None: """ Supprime une ligne de document. Arguments - ``document_id`` : Identifiant du document. - ``line_id`` : Identifiant de la ligne de document. Returns - ``None`` """ await self._c.request("DELETE", f"{DOCUMENT_ENDPOINT}/{document_id}/lines/{line_id}")
[docs] async def move(self, document_id: int, line_id: int, to: int) -> None: """ Déplace une ligne vers une position donnée. Arguments - ``document_id`` : Identifiant du document. - ``line_id`` : Identifiant de la ligne de document. - ``to`` : Position de destination. Returns - ``None`` """ await self._c.request( "POST", f"{DOCUMENT_ENDPOINT}/{document_id}/lines/{line_id}/move", json={"to": to}, )