models.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. from flask_sqlalchemy import SQLAlchemy
  2. db = SQLAlchemy()
  3. class CatalogoPaneles(db.Model):
  4. __tablename__ = 'catalogo_paneles'
  5. id_panel = db.Column(db.Integer, primary_key=True)
  6. marca = db.Column(db.String(50), nullable=False)
  7. modelo = db.Column(db.String(50), nullable=False)
  8. eficiencia_r = db.Column(db.Float, nullable=False)
  9. area_m2 = db.Column(db.Float, nullable=False)
  10. precio_unitario = db.Column(db.Float, nullable=False)
  11. class DatosSolaresCiudad(db.Model):
  12. __tablename__ = 'datos_solares_ciudad'
  13. id_ciudad = db.Column(db.Integer, primary_key=True)
  14. nombre_ciudad = db.Column(db.String(100), nullable=False)
  15. provincia = db.Column(db.String(100), nullable=False)
  16. irradiacion_h_promedio = db.Column(db.Float, nullable=False)
  17. class Casa(db.Model):
  18. __tablename__ = 'casas'
  19. id_casa = db.Column(db.Integer, primary_key=True)
  20. nombre = db.Column(db.String(100), nullable=False)
  21. area_techo = db.Column(db.Float, nullable=False) # Área disponible en m2
  22. id_ciudad = db.Column(db.Integer, db.ForeignKey('datos_solares_ciudad.id_ciudad'), nullable=False)
  23. ciudad = db.relationship('DatosSolaresCiudad', backref=db.backref('casas', lazy=True))
  24. class ProyectosUsuario(db.Model):
  25. __tablename__ = 'proyectos_usuario'
  26. id_proyecto = db.Column(db.Integer, primary_key=True)
  27. nombre_cliente = db.Column(db.String(100), nullable=False)
  28. # Vinculamos opcionalmente a una casa
  29. id_casa = db.Column(db.Integer, db.ForeignKey('casas.id_casa'), nullable=True)
  30. id_ciudad = db.Column(db.Integer, db.ForeignKey('datos_solares_ciudad.id_ciudad'), nullable=False)
  31. id_panel = db.Column(db.Integer, db.ForeignKey('catalogo_paneles.id_panel'), nullable=False)
  32. cantidad_paneles = db.Column(db.Integer, nullable=False)
  33. energia_estimada_mensual = db.Column(db.Float, nullable=False)
  34. ahorro_estimado = db.Column(db.Float, nullable=True)
  35. fecha_simulacion = db.Column(db.DateTime, default=db.func.current_timestamp())
  36. ciudad = db.relationship('DatosSolaresCiudad', backref=db.backref('proyectos', lazy=True))
  37. panel = db.relationship('CatalogoPaneles', backref=db.backref('proyectos', lazy=True))
  38. casa = db.relationship('Casa', backref=db.backref('proyectos', lazy=True))