add storage foundation contracts
This commit is contained in:
parent
0ca0bac9bf
commit
5381c997e2
6 changed files with 208 additions and 0 deletions
35
domain/chat.py
Normal file
35
domain/chat.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from uuid import UUID
|
||||
|
||||
HISTORY_FILE_NAME = 'history.md'
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class ChatAttachmentName:
|
||||
value: str
|
||||
|
||||
def __post_init__(self) -> None:
|
||||
if not self.value or self.value in {'.', '..'}:
|
||||
raise ValueError('invalid attachment name')
|
||||
if '/' in self.value or '\\' in self.value:
|
||||
raise ValueError('invalid attachment name')
|
||||
if self.value == HISTORY_FILE_NAME:
|
||||
raise ValueError('reserved attachment name')
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Chat:
|
||||
chat_id: UUID
|
||||
workspace_id: UUID
|
||||
created_at: datetime
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class ChatFile:
|
||||
file_id: UUID
|
||||
chat_id: UUID
|
||||
name: ChatAttachmentName
|
||||
content_type: str | None
|
||||
size_bytes: int
|
||||
created_at: datetime
|
||||
Loading…
Add table
Add a link
Reference in a new issue