private-gpt/private_gpt/users/schemas/chat.py
2024-05-04 19:27:24 +05:45

62 lines
1.2 KiB
Python

from datetime import datetime
from typing import List, Optional, Union, Dict
from pydantic import BaseModel, Json
import uuid
class ChatItemBase(BaseModel):
conversation_id: uuid.UUID
sender: str
content: Union[str, Dict]
class ChatItemCreate(ChatItemBase):
pass
class ChatItemUpdate(ChatItemBase):
like: Optional[bool]
class ChatItem(ChatItemBase):
id: int
created_at: datetime
updated_at: datetime
index: int
class Config:
orm_mode = True
class ChatHistoryBase(BaseModel):
user_id: int
title: Optional[str]
class ChatHistoryCreate(ChatHistoryBase):
chat_items: Optional[List[ChatItemCreate]]
class ChatHistoryUpdate(ChatHistoryBase):
updated_at: datetime
chat_items: Optional[List[ChatItemCreate]]
class Chat(BaseModel):
conversation_id: uuid.UUID
class ChatHistory(ChatHistoryBase):
conversation_id: uuid.UUID
created_at: datetime
updated_at: datetime
chat_items: List[ChatItem]
@property
def ordered_chat_items(self):
return sorted(self.chat_items, key=lambda x: x.index)
class Config:
orm_mode = True
class ChatDelete(BaseModel):
conversation_id: uuid.UUID
class CreateChatHistory(BaseModel):
user_id: int