create workspace table & workspace-user membership
This commit is contained in:
@@ -0,0 +1,31 @@
|
|||||||
|
from sqlalchemy import Column, DateTime, String, ForeignKey, BigInteger, UniqueConstraint
|
||||||
|
from sqlalchemy.sql import func
|
||||||
|
from .base import AutoID, Base
|
||||||
|
|
||||||
|
class Workspace(Base, AutoID):
|
||||||
|
"""工作区表"""
|
||||||
|
__tablename__ = "workspaces"
|
||||||
|
|
||||||
|
name = Column(String, nullable=False)
|
||||||
|
# 存储容量上限(单位:字节 Bytes),默认 5GB
|
||||||
|
storage_limit = Column(BigInteger, default=5 * 1024 * 1024 * 1024)
|
||||||
|
|
||||||
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||||
|
|
||||||
|
|
||||||
|
class WorkspaceMember(Base, AutoID):
|
||||||
|
"""工作区成员及权限表"""
|
||||||
|
__tablename__ = "workspace_members"
|
||||||
|
|
||||||
|
workspace_id = Column(String(32), ForeignKey("workspaces.id", ondelete="CASCADE"), index=True)
|
||||||
|
user_id = Column(String(32), ForeignKey("users.id", ondelete="CASCADE"), index=True)
|
||||||
|
|
||||||
|
# 角色权限:'owner' (所有者), 'admin' (管理员), 'user' (普通用户)
|
||||||
|
role = Column(String, default="user", nullable=False)
|
||||||
|
|
||||||
|
created_at = Column(DateTime(timezone=True), server_default=func.now())
|
||||||
|
|
||||||
|
# 一个用户在一个工作区只能有一条记录
|
||||||
|
__table_args__ = (
|
||||||
|
UniqueConstraint("workspace_id", "user_id", name="uq_workspace_user"),
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user