Coverage for backend / app / base_schemas.py: 100%
21 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-17 21:34 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-17 21:34 +0000
1"""Pydantic schemas for input and output data validation and serialisation"""
3import datetime as dt
4from typing import Annotated
6from pydantic import BaseModel, EmailStr, BeforeValidator
8from app.utils import clean_email
10EmailField = Annotated[EmailStr, BeforeValidator(clean_email)]
13def serialise_relationships(value: list) -> list[int]:
14 """Serialise relationships to list of IDs"""
16 if not value:
17 return []
18 if isinstance(value[0], int):
19 return value
20 return [item.id for item in value]
23class Out(BaseModel):
24 """Base model for all output schemas"""
26 id: int
27 created_at: dt.datetime
28 modified_at: dt.datetime
31class OwnedOut(Out):
32 """Base model for all output schemas owned by a user"""
34 owner_id: int
37class GenericResponse(BaseModel):
38 success: bool
39 message: str
40 error_code: int | None = None