mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-04-25 00:36:31 +02:00
-Introduce granular permissions for documents, chats, podcasts, and logs. - Update routes to enforce permission checks for creating, reading, updating, and deleting resources. - Refactor user and search space interactions to align with RBAC model, removing ownership checks in favor of permission validation.
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
import uuid
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
|
|
from .base import IDModel, TimestampModel
|
|
|
|
|
|
class SearchSpaceBase(BaseModel):
|
|
name: str
|
|
description: str | None = None
|
|
|
|
|
|
class SearchSpaceCreate(SearchSpaceBase):
|
|
# Optional on create, will use defaults if not provided
|
|
citations_enabled: bool = True
|
|
qna_custom_instructions: str | None = None
|
|
|
|
|
|
class SearchSpaceUpdate(BaseModel):
|
|
# All fields optional on update - only send what you want to change
|
|
name: str | None = None
|
|
description: str | None = None
|
|
citations_enabled: bool | None = None
|
|
qna_custom_instructions: str | None = None
|
|
|
|
|
|
class SearchSpaceRead(SearchSpaceBase, IDModel, TimestampModel):
|
|
id: int
|
|
created_at: datetime
|
|
user_id: uuid.UUID
|
|
# QnA configuration
|
|
citations_enabled: bool
|
|
qna_custom_instructions: str | None = None
|
|
|
|
model_config = ConfigDict(from_attributes=True)
|
|
|
|
|
|
class SearchSpaceWithStats(SearchSpaceRead):
|
|
"""Extended search space info with member count and ownership status."""
|
|
|
|
member_count: int = 1
|
|
is_owner: bool = False
|