models.py-june23

PHOTO EMBED

Mon Jun 23 2025 12:06:49 GMT+0000 (Coordinated Universal Time)

Saved by @AKAMAY001

from sqlalchemy import Column, Integer, Float, String, DateTime, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from datetime import datetime

Base = declarative_base()

class SensorData(Base):
    __tablename__ = 'sensor_data'

    id = Column(Integer, primary_key=True)
    timestamp = Column(DateTime, nullable=False)
    sensor_id = Column(String, nullable=False)
    rainfall_mm = Column(Float, nullable=False)
    water_level_cm = Column(Float, nullable=False)
    flow_rate_lps = Column(Float, nullable=False)

# --- ADD THIS ENTIRE NEW CLASS ---
class User(UserMixin, Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String(64), unique=True, nullable=False)
    # email = Column(String(120), unique=True, nullable=False) # You can add email later if you want
    password_hash = Column(String(128), nullable=False)

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return f'<User {self.username}>'
# --- END OF NEW CLASS ---

    def __repr__(self):
        return f"<SensorData(sensor_id={self.sensor_id}, rainfall_mm={self.rainfall_mm})>"

# Database setup (SQLite for now)
engine = create_engine("sqlite:///suds.db")
Session = sessionmaker(bind=engine)
session = Session()
content_copyCOPY