feat(invite): add invite code registration system

This commit is contained in:
earthjasonlin committed 2026-07-06 01:13:07 +08:00
1 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):
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.