from flask_sqlalchemy import SQLAlchemy from flask_login import UserMixin from app import db class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(255), nullable=False, unique=True) password_hash = db.Column(db.Text, nullable=False) profile = db.relationship('Profile', backref='user', uselist=False) class Profile(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) name = db.Column(db.String(100)) email = db.Column(db.String(150), unique=True) profile_pic = db.Column(db.Text) # Store image as a base64 string systolic_threshold = db.Column(db.Integer, default=140) diastolic_threshold = db.Column(db.Integer, default=90) dark_mode = db.Column(db.Boolean, default=False) timezone = db.Column(db.String(50), default='UTC') # e.g., 'Australia/Sydney' class Reading(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) timestamp = db.Column(db.DateTime, nullable=False) systolic = db.Column(db.Integer, nullable=False) diastolic = db.Column(db.Integer, nullable=False) heart_rate = db.Column(db.Integer, nullable=False) user = db.relationship('User', backref='readings')