create project
This commit is contained in:
171
app/src/models/post.py
Normal file
171
app/src/models/post.py
Normal file
@@ -0,0 +1,171 @@
|
||||
import json
|
||||
from bson import ObjectId
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import List, Optional, Union
|
||||
|
||||
|
||||
class PyObjectId(ObjectId):
|
||||
@classmethod
|
||||
def __get_validators__(cls):
|
||||
yield cls.validate
|
||||
|
||||
@classmethod
|
||||
def validate(cls, v):
|
||||
if not ObjectId.is_valid(v):
|
||||
raise ValueError("Invalid objectid")
|
||||
return ObjectId(v)
|
||||
|
||||
@classmethod
|
||||
def __modify_schema__(cls, field_schema):
|
||||
field_schema.update(type="string")
|
||||
|
||||
class DataPost(BaseModel):
|
||||
name: str
|
||||
level: str
|
||||
content: List[str]
|
||||
class DataSmallPost(BaseModel):
|
||||
name: str
|
||||
level: int
|
||||
point: int
|
||||
class Point(BaseModel):
|
||||
less10 : Optional[int] = 0
|
||||
form10to20: Optional[int] = 0
|
||||
form20to30: Optional[int] = 0
|
||||
form30to40: Optional[int] = 0
|
||||
form40to50: Optional[int] = 0
|
||||
form50to60: Optional[int] = 0
|
||||
bigger60: Optional[int] = 0
|
||||
total: Optional[int] = 0
|
||||
class PostModel(BaseModel):
|
||||
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
|
||||
original_post: Union[str, None] = None
|
||||
translation_post: Union[str, None] = None
|
||||
link : Union[str, None] = None
|
||||
is_active : str
|
||||
created_at: Optional[str] = None
|
||||
specialist: str
|
||||
summary: str
|
||||
data : List[DataPost]
|
||||
point : Point
|
||||
class Config:
|
||||
orm_mode = True
|
||||
case_sensitive = True
|
||||
allow_population_by_field_name = True
|
||||
arbitrary_types_allowed = True
|
||||
json_encoders = {ObjectId: str}
|
||||
schema_extra = {
|
||||
"example": {
|
||||
"original_post": "Joh111",
|
||||
"translation_post": "Doe11111",
|
||||
"link": "simple mortal111",
|
||||
"is_active": "false",
|
||||
"created_at": "07/20/22 02: 26: 54",
|
||||
"specialist": "",
|
||||
"summary": "",
|
||||
"data": [
|
||||
{
|
||||
"name": "abc1",
|
||||
"level": "user",
|
||||
"content": [
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "abc2",
|
||||
"level": "user",
|
||||
"content": [
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "abc",
|
||||
"level": "user",
|
||||
"content": [
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "abc3",
|
||||
"level": "user",
|
||||
"content": [
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh",
|
||||
"Hoàng Anh Hoàng Anh Hoàng Anh Hoàng AnhHoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh Hoàng Anh"
|
||||
]
|
||||
}
|
||||
],
|
||||
"point": {
|
||||
"less10": 0,
|
||||
"form10to20": 0,
|
||||
"form20to30": 0,
|
||||
"form30to40": 0,
|
||||
"form40to50": 0,
|
||||
"form50to60": 0,
|
||||
"bigger60": 0,
|
||||
"total": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class UpdatePostModel(BaseModel):
|
||||
original_post: Union[str, None] = None
|
||||
translation_post: Union[str, None] = None
|
||||
link : Union[str, None] = None
|
||||
is_active : str
|
||||
created_at: Optional[str] = None
|
||||
specialist: str
|
||||
summary: str
|
||||
data : List[DataPost]
|
||||
point : Point
|
||||
class Config:
|
||||
arbitrary_types_allowed = True
|
||||
json_encoders = {ObjectId: str}
|
||||
schema_extra = {
|
||||
"example": {
|
||||
"original_post": "John",
|
||||
"translation_post": "Doe",
|
||||
"link": "simple mortal",
|
||||
"is_active": "false",
|
||||
"created_at": "datetime",
|
||||
"specialist": "",
|
||||
"summary": "",
|
||||
"data": ""
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class ShowPostModel(BaseModel):
|
||||
id: PyObjectId = Field(default_factory=PyObjectId, alias="_id")
|
||||
original_post: Optional[str]
|
||||
translation_post: Optional[str]
|
||||
link: Optional[str]
|
||||
is_active: Optional[str]
|
||||
specialist: Optional[str]
|
||||
summary: Optional[str]
|
||||
data : List[DataSmallPost]
|
||||
point : Point
|
||||
class Config:
|
||||
arbitrary_types_allowed = True
|
||||
json_encoders = {ObjectId: str}
|
||||
schema_extra = {
|
||||
"example": {
|
||||
"original_post": "John",
|
||||
"translation_post": "Doe",
|
||||
"link": "simple mortal",
|
||||
"is_active": "false",
|
||||
"created_at": "datetime",
|
||||
"specialist": "",
|
||||
"summary": "",
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user