app backend prima

This commit is contained in:
2025-10-20 19:10:08 +02:00
commit 438255d27b
42 changed files with 4622 additions and 0 deletions

49
app/models/sito.py Normal file
View File

@@ -0,0 +1,49 @@
from sqlalchemy import Column, Integer, String, DateTime, Float, ForeignKey, Enum as SQLEnum
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
import enum
from app.core.database import Base
class TipoSito(str, enum.Enum):
"""Tipi di siti monitorati"""
FRANA = "frana"
GALLERIA = "galleria"
PONTE = "ponte"
DIGA = "diga"
VERSANTE = "versante"
EDIFICIO = "edificio"
ALTRO = "altro"
class Sito(Base):
"""Modello per i siti monitorati"""
__tablename__ = "siti"
id = Column(Integer, primary_key=True, index=True)
cliente_id = Column(Integer, ForeignKey("clienti.id"), nullable=False)
nome = Column(String(255), nullable=False)
tipo = Column(SQLEnum(TipoSito), nullable=False)
descrizione = Column(String(1000))
# Coordinate geografiche
latitudine = Column(Float)
longitudine = Column(Float)
altitudine = Column(Float)
# Indirizzo
indirizzo = Column(String(500))
comune = Column(String(100))
provincia = Column(String(2))
regione = Column(String(100))
# Metadata
codice_identificativo = Column(String(50), unique=True, index=True)
created_at = Column(DateTime(timezone=True), server_default=func.now())
updated_at = Column(DateTime(timezone=True), onupdate=func.now())
# Relazioni
cliente = relationship("Cliente", back_populates="siti")
allarmi = relationship("Allarme", back_populates="sito", cascade="all, delete-orphan")