from pydantic import BaseModel
from typing import List


class GPS(BaseModel):
    longitude: str | None = None
    latitude: str | None = None


class Item(BaseModel):
    value: str | None = None
    photo: str | None = None


class Bassin(BaseModel):
    type_asspiration: Item | None = None
    type_revetement: Item | None = None
    refoulement: Item | None = None
    bonde_fond: Item | None = None
    prise_balais: Item | None = None
    projecteur: Item | None = None
    nage_contre_courant: Item | None = None
    echelle: List[Item] | None = None
    main_courante: List[Item] | None = None
    alarme: List[Item] | None = None
    bache: Item | None = None
    volet_roulant: Item | None = None
    margelle: Item | None = None
    volume: Item | None = None


class LocalTechnique(BaseModel):
    dimensions_canalisation: Item | None = None
    vannes: List[Item] | None = None
    vannes_motorisees: Item | None = None
    arrivee_electrique: Item | None = None
    pompe_filtration: List[Item] | None = None
    multivoie: List[Item] | None = None
    filtre: List[Item] | None = None
    traitement_chlore: List[Item] | None = None
    traitement_ph: List[Item] | None = None
    remplissage: Item | None = None
    info_vidange: Item | None = None
    compteur_eau: List[Item] | None = None
    minuterie_pedulive: Item | None = None
    pompe_chaleur: List[Item] | None = None
    vidange_remplissage: Item | None = None


class Pool(BaseModel):
    photo: str | None = None
    description: str | None = None
    gps: GPS | None = None
    bassin: Bassin | None = None
    local_technique: LocalTechnique | None = None


class UpdatePool(BaseModel):
    photo: str | None = None
    description: str | None = None
    gps: GPS | None = None
    bassin: Bassin | None = None
    local_technique: LocalTechnique | None = None
