mirror of
https://github.com/zylon-ai/private-gpt.git
synced 2025-12-22 17:05:41 +01:00
62 lines
1.2 KiB
Python
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
|