Skip to content

Commit

Permalink
✨(api) add sessions dynamic router and model
Browse files Browse the repository at this point in the history
For now we only design the API.
  • Loading branch information
jmaupetit committed Apr 11, 2024
1 parent 95737f7 commit af8fc69
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 3 deletions.
8 changes: 7 additions & 1 deletion src/api/qualicharge/api/v1/routers/dynamic.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

from fastapi import APIRouter, Path, status

from qualicharge.models.dynamic import Status
from qualicharge.models.dynamic import Session, Status

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -41,3 +41,9 @@ async def read_status(
async def create_status(status: Status) -> Status:
"""Create a status."""
raise NotImplementedError


@router.post("/session/", status_code=status.HTTP_201_CREATED, tags=["Session"])
async def create_session(session: Session) -> Session:
"""Create a session."""
raise NotImplementedError
6 changes: 5 additions & 1 deletion src/api/qualicharge/factories/dynamic.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

from polyfactory.factories.pydantic_factory import ModelFactory

from ..models.dynamic import Status
from ..models.dynamic import Session, Status


class SessionFactory(ModelFactory[Session]):
"""Session model factory."""


class StatusFactory(ModelFactory[Status]):
Expand Down
9 changes: 9 additions & 0 deletions src/api/qualicharge/models/dynamic.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,12 @@ class Status(BaseModel):
etat_prise_type_combo_ccs: Optional[EtatPriseEnum]
etat_prise_type_chademo: Optional[EtatPriseEnum]
etat_prise_type_ef: Optional[EtatPriseEnum]


class Session(BaseModel):
"""IRVE dynamic model: point of charge sessions."""

id_pdc_itinerance: Annotated[str, Field(pattern="^[A-Z]{2}[A-Z0-9]{4,33}$")]
start: PastDatetime
end: PastDatetime
energy: float
10 changes: 9 additions & 1 deletion src/api/tests/models/test_dynamic.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,15 @@

from datetime import datetime

from qualicharge.factories.dynamic import StatusFactory
from qualicharge.factories.dynamic import SessionFactory, StatusFactory


def test_session_model():
"""Test the dynamic Session model."""
session = SessionFactory.build()

assert session.start < datetime.now()
assert session.end < datetime.now()


def test_status_model():
Expand Down

0 comments on commit af8fc69

Please sign in to comment.