from datetime import datetime, timezone from app.extensions import db from app.models.charge import Charge from sqlalchemy.orm import relationship from sqlalchemy.sql import func from sqlalchemy.exc import IntegrityError import uuid from app.utils.logger import logger class PasswordReset(db.Model): __tablename__ = 'password_reset' id = db.Column(db.String, primary_key=True) uid = db.Column(db.String(150), nullable=True) username = db.Column(db.String, nullable=False) status = db.Column(db.Integer, nullable=True, default=0) added = db.Column(db.DateTime(timezone=True), server_default=func.now()) updated = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) def to_dict(self): return { "id": self.id, "uid": self.uid, "username": self.account_id, "status": self.status, "added": self.added.isoformat() if self.added else None, "updated": self.updated.isoformat() if self.updated else None, } def __repr__(self): return f'' @classmethod def create_reset(cls, username): pass_reset = cls( uid=str(uuid.uuid4()), username=username, created_at=datetime.now(timezone.utc), updated_at=datetime.now(timezone.utc) ) try: db.session.add(pass_reset) except IntegrityError as err: raise ValueError(f"Database integrity error: {err}") return pass_reset