refactor: model
This commit is contained in:
parent
683b276c5b
commit
aae5851178
|
@ -8,12 +8,10 @@ from loguru import logger
|
||||||
from starlette.responses import JSONResponse
|
from starlette.responses import JSONResponse
|
||||||
|
|
||||||
from simplylab.database import Database
|
from simplylab.database import Database
|
||||||
from simplylab.entity import GetAiChatResponseInput, Context
|
from simplylab.model.entity import Context
|
||||||
from simplylab.entity import GetAiChatResponseOutput
|
from simplylab.model.req import GetAiChatResponseInput, GetUserChatHistoryInput, GetChatStatusTodayInput
|
||||||
from simplylab.entity import GetUserChatHistoryInput
|
from simplylab.model.res import GetAiChatResponseOutput, GetChatStatusTodayOutput
|
||||||
from simplylab.entity import GetUserChatHistoryOutput
|
from simplylab.model.res import GetUserChatHistoryOutput
|
||||||
from simplylab.entity import GetChatStatusTodayInput
|
|
||||||
from simplylab.entity import GetChatStatusTodayOutput
|
|
||||||
from simplylab.error import Error, UserNotFoundError
|
from simplylab.error import Error, UserNotFoundError
|
||||||
from simplylab.providers import Providers
|
from simplylab.providers import Providers
|
||||||
from simplylab.services import Services
|
from simplylab.services import Services
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
from simplylab.model.table import User
|
||||||
|
|
||||||
|
|
||||||
|
class Context(BaseModel):
|
||||||
|
user: User
|
|
@ -0,0 +1,15 @@
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class GetAiChatResponseInput(BaseModel):
|
||||||
|
message: str
|
||||||
|
user_name: str
|
||||||
|
|
||||||
|
|
||||||
|
class GetUserChatHistoryInput(BaseModel):
|
||||||
|
user_name: str
|
||||||
|
last_n: int
|
||||||
|
|
||||||
|
|
||||||
|
class GetChatStatusTodayInput(BaseModel):
|
||||||
|
user_name: str
|
|
@ -0,0 +1,30 @@
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class GetAiChatResponseOutput(BaseModel):
|
||||||
|
response: str
|
||||||
|
|
||||||
|
|
||||||
|
class GetChatStatusTodayOutput(BaseModel):
|
||||||
|
user_name: str
|
||||||
|
chat_cnt: int
|
||||||
|
|
||||||
|
|
||||||
|
class UserChatMessage(BaseModel):
|
||||||
|
type: str
|
||||||
|
text: str
|
||||||
|
|
||||||
|
|
||||||
|
type GetUserChatHistoryOutput = list[UserChatMessage]
|
||||||
|
|
||||||
|
|
||||||
|
# class UserConversationMessages(BaseModel):
|
||||||
|
# user_id: ObjectIdField = Field()
|
||||||
|
# user_name: str = Field()
|
||||||
|
# conversation_id: ObjectIdField = Field(default=None)
|
||||||
|
# title: str = Field()
|
||||||
|
# created_at: datetime.datetime = Field(default_factory=datetime.datetime.now)
|
||||||
|
# created_by: ObjectIdField = Field()
|
||||||
|
# updated_at: Optional[datetime.datetime] = Field(default=None)
|
||||||
|
# updated_by: Optional[ObjectIdField] = Field(default=None)
|
||||||
|
# messages: list[Message]
|
|
@ -1,49 +1,13 @@
|
||||||
import datetime
|
import datetime
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from typing import Optional, Annotated, Any
|
from typing import Annotated, Any, Optional
|
||||||
|
|
||||||
from bson import ObjectId
|
from pydantic import AfterValidator, PlainSerializer, WithJsonSchema, GetPydanticSchema, BaseModel, Field, ConfigDict
|
||||||
from pydantic import BaseModel, Field, BeforeValidator, ConfigDict
|
|
||||||
|
|
||||||
|
|
||||||
class GetAiChatResponseInput(BaseModel):
|
|
||||||
message: str
|
|
||||||
user_name: str
|
|
||||||
|
|
||||||
|
|
||||||
class GetAiChatResponseOutput(BaseModel):
|
|
||||||
response: str
|
|
||||||
|
|
||||||
|
|
||||||
class GetUserChatHistoryInput(BaseModel):
|
|
||||||
user_name: str
|
|
||||||
last_n: int
|
|
||||||
|
|
||||||
|
|
||||||
class UserChatMessage(BaseModel):
|
|
||||||
type: str
|
|
||||||
text: str
|
|
||||||
|
|
||||||
|
|
||||||
type GetUserChatHistoryOutput = list[UserChatMessage]
|
|
||||||
|
|
||||||
|
|
||||||
class GetChatStatusTodayInput(BaseModel):
|
|
||||||
user_name: str
|
|
||||||
|
|
||||||
|
|
||||||
class GetChatStatusTodayOutput(BaseModel):
|
|
||||||
user_name: str
|
|
||||||
chat_cnt: int
|
|
||||||
|
|
||||||
|
|
||||||
# === mongodb documents start ===
|
|
||||||
|
|
||||||
|
|
||||||
from pydantic import (AfterValidator, GetPydanticSchema,
|
|
||||||
PlainSerializer, WithJsonSchema)
|
|
||||||
from pydantic_mongo import ObjectIdField as _objectIdField
|
from pydantic_mongo import ObjectIdField as _objectIdField
|
||||||
|
|
||||||
|
# ObjectIdField = Annotated[str, BeforeValidator(ObjectId)]
|
||||||
|
|
||||||
|
|
||||||
ObjectIdField = Annotated[
|
ObjectIdField = Annotated[
|
||||||
_objectIdField,
|
_objectIdField,
|
||||||
AfterValidator(lambda id: _objectIdField(id)),
|
AfterValidator(lambda id: _objectIdField(id)),
|
||||||
|
@ -58,9 +22,6 @@ class Test(BaseModel):
|
||||||
id: ObjectIdField = Field(default_factory=ObjectIdField, alias='_id', title='_id')
|
id: ObjectIdField = Field(default_factory=ObjectIdField, alias='_id', title='_id')
|
||||||
|
|
||||||
|
|
||||||
# ObjectIdField = Annotated[str, BeforeValidator(ObjectId)]
|
|
||||||
|
|
||||||
|
|
||||||
class MessageRoleType(str, Enum):
|
class MessageRoleType(str, Enum):
|
||||||
User = "user"
|
User = "user"
|
||||||
Ai = "ai"
|
Ai = "ai"
|
||||||
|
@ -117,7 +78,6 @@ class Message(BaseModel):
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# class Conversation(BaseModel):
|
# class Conversation(BaseModel):
|
||||||
# id: ObjectIdField = Field(default_factory=ObjectIdField, alias="_id", title='_id')
|
# id: ObjectIdField = Field(default_factory=ObjectIdField, alias="_id", title='_id')
|
||||||
# user_id: ObjectIdField = Field()
|
# user_id: ObjectIdField = Field()
|
||||||
|
@ -141,22 +101,3 @@ class Message(BaseModel):
|
||||||
# }
|
# }
|
||||||
# },
|
# },
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
|
||||||
# === mongodb documents end ===
|
|
||||||
|
|
||||||
|
|
||||||
# class UserConversationMessages(BaseModel):
|
|
||||||
# user_id: ObjectIdField = Field()
|
|
||||||
# user_name: str = Field()
|
|
||||||
# conversation_id: ObjectIdField = Field(default=None)
|
|
||||||
# title: str = Field()
|
|
||||||
# created_at: datetime.datetime = Field(default_factory=datetime.datetime.now)
|
|
||||||
# created_by: ObjectIdField = Field()
|
|
||||||
# updated_at: Optional[datetime.datetime] = Field(default=None)
|
|
||||||
# updated_by: Optional[ObjectIdField] = Field(default=None)
|
|
||||||
# messages: list[Message]
|
|
||||||
|
|
||||||
|
|
||||||
class Context(BaseModel):
|
|
||||||
user: User
|
|
|
@ -5,7 +5,8 @@ import pymongo
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from simplylab.database import Database
|
from simplylab.database import Database
|
||||||
from simplylab.entity import ObjectIdField, Message
|
from simplylab.model.table import ObjectIdField
|
||||||
|
from simplylab.model.table import Message
|
||||||
|
|
||||||
|
|
||||||
class ChatProvider:
|
class ChatProvider:
|
||||||
|
|
|
@ -4,7 +4,7 @@ from typing import Optional
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from simplylab.database import Database
|
from simplylab.database import Database
|
||||||
from simplylab.entity import User
|
from simplylab.model.table import User
|
||||||
|
|
||||||
|
|
||||||
class UserProvider:
|
class UserProvider:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from simplylab.entity import Context
|
from simplylab.model.entity import Context
|
||||||
from simplylab.providers import Providers
|
from simplylab.providers import Providers
|
||||||
from simplylab.services.chat import ChatService
|
from simplylab.services.chat import ChatService
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,12 @@ from typing import Any
|
||||||
|
|
||||||
from loguru import logger
|
from loguru import logger
|
||||||
|
|
||||||
from simplylab.entity import GetAiChatResponseInput, GetUserChatHistoryInput, GetChatStatusTodayInput, UserChatMessage, \
|
from simplylab.model.res import UserChatMessage, \
|
||||||
GetChatStatusTodayOutput, GetAiChatResponseOutput, GetUserChatHistoryOutput, Context, Message, MessageRoleType
|
GetUserChatHistoryOutput
|
||||||
|
from simplylab.model.entity import Context
|
||||||
|
from simplylab.model.res import GetAiChatResponseOutput, GetChatStatusTodayOutput
|
||||||
|
from simplylab.model.req import GetAiChatResponseInput, GetUserChatHistoryInput, GetChatStatusTodayInput
|
||||||
|
from simplylab.model.table import MessageRoleType, Message
|
||||||
from simplylab.error import MessageLimitedInDailyError, MessageLimitedIn30SecondsError
|
from simplylab.error import MessageLimitedInDailyError, MessageLimitedIn30SecondsError
|
||||||
from simplylab.providers import Providers
|
from simplylab.providers import Providers
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue