feat: invite code

This commit is contained in:
2025-03-05 18:39:54 +03:00
parent c75ff66f27
commit 6c2698679d
7 changed files with 107 additions and 13 deletions

View File

@@ -1,3 +1,4 @@
import datetime
from typing import TYPE_CHECKING, Optional
from sqlalchemy import BigInteger, Table, ForeignKey, Column
@@ -32,7 +33,6 @@ user_pay_rate = Table(
)
class Permission(BaseModel):
__tablename__ = 'permissions'
key: Mapped[str] = mapped_column(primary_key=True)
@@ -83,7 +83,7 @@ class User(BaseModel):
is_blocked: Mapped[bool] = mapped_column(nullable=False, server_default='0')
is_deleted: Mapped[bool] = mapped_column(nullable=False, server_default='0')
role_key: Mapped[int] = mapped_column(ForeignKey('roles.key'), server_default=UserRole.user)
role_key: Mapped[str] = mapped_column(ForeignKey('roles.key'), server_default=UserRole.user)
role: Mapped["Role"] = relationship(
'Role',
lazy='joined'
@@ -139,6 +139,19 @@ class User(BaseModel):
)
class InviteCode(BaseModel):
__tablename__ = 'invite_codes'
code: Mapped[str] = mapped_column(primary_key=True)
is_activated: Mapped[bool] = mapped_column(nullable=False, default=False)
activated_by_id: Mapped[Optional[int]] = mapped_column(ForeignKey('users.id'))
activated_by: Mapped["User"] = relationship('User', foreign_keys=[activated_by_id])
created_at: Mapped[datetime.datetime] = mapped_column(nullable=False)
created_by_id: Mapped[int] = mapped_column(ForeignKey('users.id'))
created_by: Mapped["User"] = relationship('User', foreign_keys=[created_by_id])
class Position(BaseModel):
__tablename__ = 'positions'
key: Mapped[str] = mapped_column(primary_key=True)