feat(workspace): restore core routes on sqlalchemy adapters
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from sqlalchemy import Boolean, Column, DateTime, Float, String, Text, create_engine
|
||||
from sqlalchemy import Boolean, Column, DateTime, Float, String, Text, UniqueConstraint, create_engine
|
||||
from sqlalchemy.orm import declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
@@ -23,6 +23,48 @@ class UserModel(Base):
|
||||
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class WorkspaceModel(Base):
|
||||
__tablename__ = "workspaces"
|
||||
|
||||
id = Column(String(36), primary_key=True)
|
||||
name = Column(String(100), nullable=False)
|
||||
owner_user_id = Column(String(36), nullable=False, index=True)
|
||||
subscription_plan = Column(String(20), nullable=False, default="free")
|
||||
subscription_status = Column(String(20), nullable=False, default="active")
|
||||
subscription_expires_at = Column(DateTime, nullable=True)
|
||||
max_projects = Column(Float, nullable=False, default=3)
|
||||
max_storage_gb = Column(Float, nullable=False, default=10)
|
||||
used_storage_gb = Column(Float, nullable=False, default=0.0)
|
||||
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class WorkspaceMemberModel(Base):
|
||||
__tablename__ = "workspace_members"
|
||||
__table_args__ = (UniqueConstraint("workspace_id", "user_id", name="uq_workspace_members_workspace_user"),)
|
||||
|
||||
id = Column(String(36), primary_key=True)
|
||||
workspace_id = Column(String(36), nullable=False, index=True)
|
||||
user_id = Column(String(36), nullable=False, index=True)
|
||||
role = Column(String(20), nullable=False)
|
||||
invited_by = Column(String(36), nullable=True)
|
||||
joined_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class WorkspaceInvitationModel(Base):
|
||||
__tablename__ = "workspace_invitations"
|
||||
|
||||
id = Column(String(36), primary_key=True)
|
||||
workspace_id = Column(String(36), nullable=False, index=True)
|
||||
inviter_user_id = Column(String(36), nullable=False)
|
||||
invitee_email = Column(String(255), nullable=False, index=True)
|
||||
role = Column(String(20), nullable=False)
|
||||
invitation_token = Column(String(255), nullable=False, unique=True, index=True)
|
||||
status = Column(String(20), nullable=False, default="pending", index=True)
|
||||
expires_at = Column(DateTime, nullable=True)
|
||||
accepted_at = Column(DateTime, nullable=True)
|
||||
created_at = Column(DateTime, nullable=False, default=lambda: datetime.now(timezone.utc))
|
||||
|
||||
|
||||
class ProjectModel(Base):
|
||||
__tablename__ = "projects"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user