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, } @classmethod def create_reset(cls, username): pass_reset = cls( uid=str(uuid.uuid4()), username=username, added=datetime.now(timezone.utc), updated=datetime.now(timezone.utc) ) logger.info(f"About to reset the password**********") try: db.session.add(pass_reset) except IntegrityError as err: raise ValueError(f"Database integrity error: {err}") return pass_reset def __repr__(self): return f''