from datetime import datetime from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() class Phone(db.Model): __tablename__ = "phones" id = db.Column(db.Integer, primary_key=True) phone_number = db.Column(db.String(32), unique=True, nullable=False, index=True) plan = db.Column(db.String(120), nullable=True) contract_expiration = db.Column(db.Date, nullable=True) eligible_for_replacement = db.Column(db.Date, nullable=True) current_owner = db.Column(db.String(200), nullable=True) venue = db.Column(db.String(200), nullable=True) verified = db.Column(db.String(8), nullable=True) comment = db.Column(db.Text, nullable=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def to_dict(self): return { "id": self.id, "phone_number": self.phone_number, "plan": self.plan, "contract_expiration": self.contract_expiration.isoformat() if self.contract_expiration else None, "eligible_for_replacement": self.eligible_for_replacement.isoformat() if self.eligible_for_replacement else None, "current_owner": self.current_owner, "venue": self.venue, "verified": self.verified, "comment": self.comment, } class User(db.Model): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False, index=True) password_hash = db.Column(db.String(255), nullable=False) role = db.Column(db.String(20), nullable=False, default="viewer") # "admin" or "viewer" created_at = db.Column(db.DateTime, default=datetime.utcnow) def to_dict(self): return { "id": self.id, "username": self.username, "role": self.role, } class InternetConnection(db.Model): __tablename__ = "internet_connections" id = db.Column(db.Integer, primary_key=True) venue = db.Column(db.String(200), nullable=False) isp_provider = db.Column(db.String(200), nullable=True) plan = db.Column(db.String(200), nullable=True) contract_expiration = db.Column(db.Date, nullable=True) notes = db.Column(db.Text, nullable=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) def to_dict(self): return { "id": self.id, "venue": self.venue, "isp_provider": self.isp_provider, "plan": self.plan, "contract_expiration": self.contract_expiration.isoformat() if self.contract_expiration else None, "notes": self.notes, }