app backend prima
This commit is contained in:
49
app/models/sito.py
Normal file
49
app/models/sito.py
Normal 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")
|
||||
Reference in New Issue
Block a user