import uuid from datetime import datetime from sqlalchemy import Column, String, DateTime, Boolean, Integer, Text from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class UserModel(Base): __tablename__ = "users" user_id = Column("user_id", String(36), primary_key=True, default=lambda: str(uuid.uuid4())) telegram_id = Column("telegram_id", String(100), nullable=False, unique=True) created_at = Column("created_at", DateTime, default=datetime.utcnow, nullable=False) role = Column("role", String(20), default="user", nullable=False) is_premium = Column(Boolean, default=False, nullable=False) premium_until = Column(DateTime, nullable=True) questions_used = Column(Integer, default=0, nullable=False) username = Column(String(100), nullable=True) first_name = Column(String(100), nullable=True) last_name = Column(String(100), nullable=True) class PaymentModel(Base): __tablename__ = "payments" id = Column(Integer, primary_key=True, autoincrement=True) payment_id = Column(String(36), default=lambda: str(uuid.uuid4()), nullable=False, unique=True) user_id = Column(Integer, nullable=False) amount = Column(String(20), nullable=False) currency = Column(String(3), default="RUB", nullable=False) status = Column(String(20), default="pending", nullable=False) created_at = Column(DateTime, default=datetime.utcnow, nullable=False) yookassa_payment_id = Column(String(100), unique=True, nullable=True) description = Column(Text, nullable=True) def __repr__(self): return f""