Spaces:
Running on Zero
Running on Zero
File size: 2,300 Bytes
120bd9a b37ebd1 120bd9a b37ebd1 120bd9a d896946 c3b9247 4e64e70 34c3133 b37ebd1 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | from datetime import date, datetime
from typing import Optional
from sqlalchemy import BigInteger, Boolean, Date, DateTime, Integer, String, func
from sqlalchemy.orm import Mapped, mapped_column
from app.db.base import Base
class User(Base):
__tablename__ = "users"
id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=False)
username: Mapped[Optional[str]] = mapped_column(String(64))
full_name: Mapped[str] = mapped_column(String(256), default="")
lang: Mapped[str] = mapped_column(String(2), default="am")
stream: Mapped[Optional[str]] = mapped_column(String(16))
year: Mapped[Optional[int]] = mapped_column(Integer)
referred_by: Mapped[Optional[int]] = mapped_column(BigInteger)
gate_passed: Mapped[bool] = mapped_column(Boolean, default=False)
points: Mapped[int] = mapped_column(Integer, default=0)
streak: Mapped[int] = mapped_column(Integer, default=0, server_default="0")
best_streak: Mapped[int] = mapped_column(Integer, default=0, server_default="0")
last_active_on: Mapped[Optional[date]] = mapped_column(Date)
active_days: Mapped[int] = mapped_column(Integer, default=0, server_default="0")
week_key: Mapped[Optional[str]] = mapped_column(String(8))
week_xp: Mapped[int] = mapped_column(Integer, default=0, server_default="0")
day_key: Mapped[Optional[str]] = mapped_column(String(10))
day_xp: Mapped[int] = mapped_column(Integer, default=0, server_default="0")
trust: Mapped[int] = mapped_column(Integer, default=100, server_default="100")
source: Mapped[Optional[str]] = mapped_column(String(24)) # where they came from (poster, inline, referral...)
pending_link: Mapped[Optional[str]] = mapped_column(String(16)) # deep link to open after joining/onboarding
share_prompt_day: Mapped[Optional[str]] = mapped_column(String(10)) # last day we suggested sharing
credit_name: Mapped[bool] = mapped_column(Boolean, default=False, server_default="false") # name on files they give
gate_missing: Mapped[Optional[str]] = mapped_column(String(80)) # which join-gate places they were last missing
is_banned: Mapped[bool] = mapped_column(Boolean, default=False)
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now())
|