SurfSense/surfsense_backend/app/schemas/workspace.py
CREDO23 0c53d884eb refactor(schemas): rename SearchSpace -> Workspace in Pydantic schemas (Phase 2 Wave C)
Rename schemas/search_space.py -> schemas/workspace.py, the SearchSpace* classes
-> Workspace* (incl. UserSearchSpaceAccess -> UserWorkspaceAccess), and the
search_space_id / search_space_name fields -> workspace_id / workspace_name across
all schema modules. Under hard cutover the serialized JSON keys change outright
(no alias). Re-exports in schemas/__init__.py updated.
2026-06-26 18:23:43 +02:00

48 lines
1.2 KiB
Python

import uuid
from datetime import datetime
from pydantic import BaseModel, ConfigDict
from .base import IDModel, TimestampModel
class WorkspaceBase(BaseModel):
name: str
description: str | None = None
class WorkspaceCreate(WorkspaceBase):
citations_enabled: bool = True
qna_custom_instructions: str | None = None
class WorkspaceUpdate(BaseModel):
name: str | None = None
description: str | None = None
citations_enabled: bool | None = None
qna_custom_instructions: str | None = None
ai_file_sort_enabled: bool | None = None
class WorkspaceApiAccessUpdate(BaseModel):
api_access_enabled: bool
class WorkspaceRead(WorkspaceBase, IDModel, TimestampModel):
id: int
created_at: datetime
user_id: uuid.UUID
citations_enabled: bool
api_access_enabled: bool = False
qna_custom_instructions: str | None = None
shared_memory_md: str | None = None
ai_file_sort_enabled: bool = False
model_config = ConfigDict(from_attributes=True)
class WorkspaceWithStats(WorkspaceRead):
"""Extended workspace info with member count and ownership status."""
member_count: int = 1
is_owner: bool = False