from __future__ import annotations from datetime import datetime from . import db class RedemptionCode(db.Model): __tablename__ = "redemption_codes" id = db.Column(db.Integer, primary_key=True) code = db.Column(db.String(64), unique=True, nullable=False, index=True) status = db.Column(db.String(16), nullable=False, default="available") created_at = db.Column(db.DateTime, nullable=False, default=lambda: datetime.now()) used_at = db.Column(db.DateTime, nullable=True) used_by_username = db.Column(db.String(256), nullable=True) used_by_principal_name = db.Column(db.String(256), nullable=True) def to_dict(self): return { "id": self.id, "code": self.code, "status": self.status, "createdAt": self.created_at.isoformat() if self.created_at else None, "usedAt": self.used_at.isoformat() if self.used_at else None, "usedByUsername": self.used_by_username, "usedByPrincipalName": self.used_by_principal_name, }