from datetime import datetime, timezone, timedelta from app.extensions import db from sqlalchemy.sql import func from sqlalchemy.exc import IntegrityError import uuid from app.utils.logger import logger class Signup(db.Model): __tablename__ = 'signup' id = db.Column(db.Integer, primary_key=True, autoincrement=True) uid = db.Column(db.String(150), nullable=False) email = db.Column(db.String(100), nullable=False) firstname = db.Column(db.String(25), nullable=False) lastname = db.Column(db.String(25), nullable=True) loc = db.Column(db.String(20), nullable=True) status = db.Column(db.Integer, default=1) added = db.Column(db.DateTime(timezone=False), server_default=func.now()) updated = db.Column(db.DateTime(timezone=False), server_default=func.now(), onupdate=func.now()) # "account_id": self.account_id, def to_dict(self): return { "id": self.id, "uid": str(self.uid), "loc": self.loc, "status": self.status, "added": self.added.isoformat() if self.added else None, "updated": self.updated.isoformat() if self.updated else None, "email": self.email, "firstname": self.firstname, "lastname": self.lastname, } def __repr__(self): return f'' @classmethod def add_signup(cls, firstname, lastname, email): # Save the response signup_data = cls( uid=str(uuid.uuid4()), firstname=firstname, lastname=lastname, email=email, added=datetime.now(timezone.utc), updated=datetime.now(timezone.utc) ) try: db.session.add(signup_data) except IntegrityError as err: raise ValueError(f"Database integrity error: {err}") return signup_data