feat(invite): add invite code registration system

This commit is contained in:
2026-07-06 01:13:07 +08:00
parent a769ce7546
commit 2c0725b242
6 files changed
+335 -2

No files matched your search

+17 -1
View File
@@ -1,6 +1,6 @@
from datetime import datetime, timezone
from sqlalchemy import Column, DateTime, ForeignKey, Integer, String
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String
from sqlalchemy.orm import relationship, validates
from app.database import Base
@@ -16,11 +16,27 @@ class User(Base):
id = Column(Integer, primary_key=True, index=True)
username = Column(String(64), unique=True, nullable=False, index=True)
password_hash = Column(String(128), nullable=False)
is_admin = Column(Boolean, nullable=False, default=False)
showcase_mode = Column(String(16), nullable=False, default="profile")
created_at = Column(DateTime, default=_utcnow)
profiles = relationship("Profile", back_populates="user", cascade="all, delete-orphan")
sessions = relationship("UserSession", back_populates="user", cascade="all, delete-orphan")
invite_codes = relationship("InviteCode", back_populates="creator", cascade="all, delete-orphan")
class InviteCode(Base):
__tablename__ = "invite_codes"
id = Column(Integer, primary_key=True, index=True)
code = Column(String(8), unique=True, nullable=False, index=True)
max_uses = Column(Integer, nullable=True) # None = unlimited
expires_at = Column(DateTime, nullable=True) # None = no expiration
use_count = Column(Integer, nullable=False, default=0)
created_by = Column(Integer, ForeignKey("users.id", ondelete="SET NULL"), nullable=True)
created_at = Column(DateTime, default=_utcnow)
creator = relationship("User", back_populates="invite_codes")
class UserSession(Base):