from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class CatalogoPaneles(db.Model): __tablename__ = 'catalogo_paneles' id_panel = db.Column(db.Integer, primary_key=True) marca = db.Column(db.String(50), nullable=False) modelo = db.Column(db.String(50), nullable=False) eficiencia_r = db.Column(db.Float, nullable=False) area_m2 = db.Column(db.Float, nullable=False) precio_unitario = db.Column(db.Float, nullable=False) class DatosSolaresCiudad(db.Model): __tablename__ = 'datos_solares_ciudad' id_ciudad = db.Column(db.Integer, primary_key=True) nombre_ciudad = db.Column(db.String(100), nullable=False) provincia = db.Column(db.String(100), nullable=False) irradiacion_h_promedio = db.Column(db.Float, nullable=False) class Casa(db.Model): __tablename__ = 'casas' id_casa = db.Column(db.Integer, primary_key=True) nombre = db.Column(db.String(100), nullable=False) area_techo = db.Column(db.Float, nullable=False) # Área disponible en m2 id_ciudad = db.Column(db.Integer, db.ForeignKey('datos_solares_ciudad.id_ciudad'), nullable=False) ciudad = db.relationship('DatosSolaresCiudad', backref=db.backref('casas', lazy=True)) class ProyectosUsuario(db.Model): __tablename__ = 'proyectos_usuario' id_proyecto = db.Column(db.Integer, primary_key=True) nombre_cliente = db.Column(db.String(100), nullable=False) # Vinculamos opcionalmente a una casa id_casa = db.Column(db.Integer, db.ForeignKey('casas.id_casa'), nullable=True) id_ciudad = db.Column(db.Integer, db.ForeignKey('datos_solares_ciudad.id_ciudad'), nullable=False) id_panel = db.Column(db.Integer, db.ForeignKey('catalogo_paneles.id_panel'), nullable=False) cantidad_paneles = db.Column(db.Integer, nullable=False) energia_estimada_mensual = db.Column(db.Float, nullable=False) ahorro_estimado = db.Column(db.Float, nullable=True) fecha_simulacion = db.Column(db.DateTime, default=db.func.current_timestamp()) ciudad = db.relationship('DatosSolaresCiudad', backref=db.backref('proyectos', lazy=True)) panel = db.relationship('CatalogoPaneles', backref=db.backref('proyectos', lazy=True)) casa = db.relationship('Casa', backref=db.backref('proyectos', lazy=True))