feat(backend): modèles SQLModel (10 tables)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
53
backend/app/models/garden.py
Normal file
53
backend/app/models/garden.py
Normal file
@@ -0,0 +1,53 @@
|
||||
from datetime import datetime
|
||||
from typing import Optional
|
||||
from sqlmodel import Field, SQLModel
|
||||
|
||||
|
||||
class Garden(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
nom: str
|
||||
description: Optional[str] = None
|
||||
type: str = "plein_air" # plein_air | serre | tunnel
|
||||
latitude: Optional[float] = None
|
||||
longitude: Optional[float] = None
|
||||
altitude: Optional[float] = None
|
||||
adresse: Optional[str] = None
|
||||
exposition: Optional[str] = None
|
||||
ombre: Optional[str] = None # ombre | mi-ombre | plein_soleil
|
||||
sol_type: Optional[str] = None
|
||||
sol_ph: Optional[float] = None
|
||||
grille_largeur: int = 6
|
||||
grille_hauteur: int = 4
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
updated_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
|
||||
class GardenCell(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
garden_id: int = Field(foreign_key="garden.id", index=True)
|
||||
col: int
|
||||
row: int
|
||||
libelle: Optional[str] = None
|
||||
largeur_m: Optional[float] = None
|
||||
hauteur_m: Optional[float] = None
|
||||
etat: str = "libre" # libre | occupe
|
||||
notes: Optional[str] = None
|
||||
|
||||
|
||||
class GardenImage(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
garden_id: int = Field(foreign_key="garden.id", index=True)
|
||||
filename: str
|
||||
caption: Optional[str] = None
|
||||
created_at: datetime = Field(default_factory=datetime.utcnow)
|
||||
|
||||
|
||||
class Measurement(SQLModel, table=True):
|
||||
id: Optional[int] = Field(default=None, primary_key=True)
|
||||
garden_id: int = Field(foreign_key="garden.id", index=True)
|
||||
temp_air: Optional[float] = None
|
||||
temp_sol: Optional[float] = None
|
||||
humidite_air: Optional[float] = None
|
||||
humidite_sol: Optional[float] = None
|
||||
source: str = "manuel" # manuel | capteur
|
||||
ts: datetime = Field(default_factory=datetime.utcnow)
|
||||
Reference in New Issue
Block a user