morphik-core/core/models/folders.py

39 lines
1.1 KiB
Python
Raw Normal View History

import uuid
from datetime import UTC, datetime
from typing import Any, Dict, List, Optional
from pydantic import BaseModel, Field
class Folder(BaseModel):
"""Represents a folder that contains documents"""
id: str = Field(default_factory=lambda: str(uuid.uuid4()))
name: str
description: Optional[str] = None
owner: Dict[str, str]
document_ids: List[str] = Field(default_factory=list)
system_metadata: Dict[str, Any] = Field(
default_factory=lambda: {
"created_at": datetime.now(UTC),
"updated_at": datetime.now(UTC),
}
)
access_control: Dict[str, List[str]] = Field(default_factory=lambda: {"readers": [], "writers": [], "admins": []})
2025-04-17 20:52:18 -07:00
rules: List[Dict[str, Any]] = Field(default_factory=list)
def __hash__(self):
return hash(self.id)
def __eq__(self, other):
if not isinstance(other, Folder):
return False
return self.id == other.id
class FolderCreate(BaseModel):
"""Request model for folder creation"""
name: str
description: Optional[str] = None