diff --git a/app/models/workspace.py b/app/models/workspace.py new file mode 100644 index 0000000..c380a06 --- /dev/null +++ b/app/models/workspace.py @@ -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"), + ) \ No newline at end of file