feat(api): add Pydantic schemas
This commit is contained in:
@@ -5,7 +5,8 @@
|
|||||||
"Skill(writing-plans)",
|
"Skill(writing-plans)",
|
||||||
"Skill(subagent-driven-development)",
|
"Skill(subagent-driven-development)",
|
||||||
"Bash(git add *)",
|
"Bash(git add *)",
|
||||||
"Bash(git commit *)"
|
"Bash(git commit *)",
|
||||||
|
"Bash(python -c \"from app.models import Joke, JokeType, JokeCrowd, AdminUser; print\\('All models imported successfully'\\)\")"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,29 @@
|
|||||||
|
from .auth import LoginRequest, TokenResponse
|
||||||
|
from .category import (
|
||||||
|
JokeCrowdCreate,
|
||||||
|
JokeCrowdResponse,
|
||||||
|
JokeTypeCreate,
|
||||||
|
JokeTypeResponse,
|
||||||
|
)
|
||||||
|
from .joke import (
|
||||||
|
JokeCreate,
|
||||||
|
JokeResponse,
|
||||||
|
JokeUpdate,
|
||||||
|
PaginatedJokeResponse,
|
||||||
|
)
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"JokeBase",
|
||||||
|
"JokeCreate",
|
||||||
|
"JokeUpdate",
|
||||||
|
"JokeResponse",
|
||||||
|
"PaginatedJokeResponse",
|
||||||
|
"JokeTypeBase",
|
||||||
|
"JokeTypeCreate",
|
||||||
|
"JokeTypeResponse",
|
||||||
|
"JokeCrowdBase",
|
||||||
|
"JokeCrowdCreate",
|
||||||
|
"JokeCrowdResponse",
|
||||||
|
"LoginRequest",
|
||||||
|
"TokenResponse",
|
||||||
|
]
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class LoginRequest(BaseModel):
|
||||||
|
username: str
|
||||||
|
password: str
|
||||||
|
|
||||||
|
|
||||||
|
class TokenResponse(BaseModel):
|
||||||
|
access_token: str
|
||||||
|
token_type: str = "bearer"
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class JokeTypeBase(BaseModel):
|
||||||
|
name: str
|
||||||
|
icon: str | None = None
|
||||||
|
sort_order: int = 0
|
||||||
|
|
||||||
|
|
||||||
|
class JokeTypeCreate(JokeTypeBase):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class JokeTypeResponse(JokeTypeBase):
|
||||||
|
id: int
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
|
class JokeCrowdBase(BaseModel):
|
||||||
|
name: str
|
||||||
|
icon: str | None = None
|
||||||
|
sort_order: int = 0
|
||||||
|
|
||||||
|
|
||||||
|
class JokeCrowdCreate(JokeCrowdBase):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class JokeCrowdResponse(JokeCrowdBase):
|
||||||
|
id: int
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
class JokeBase(BaseModel):
|
||||||
|
title: str
|
||||||
|
content: str
|
||||||
|
type_id: int | None = None
|
||||||
|
crowd_id: int | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class JokeCreate(JokeBase):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class JokeUpdate(BaseModel):
|
||||||
|
title: str | None = None
|
||||||
|
content: str | None = None
|
||||||
|
type_id: int | None = None
|
||||||
|
crowd_id: int | None = None
|
||||||
|
status: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
class JokeResponse(JokeBase):
|
||||||
|
id: int
|
||||||
|
status: str
|
||||||
|
view_count: int
|
||||||
|
like_count: int
|
||||||
|
created_at: datetime
|
||||||
|
updated_at: datetime
|
||||||
|
type_name: str | None = None
|
||||||
|
crowd_name: str | None = None
|
||||||
|
|
||||||
|
class Config:
|
||||||
|
from_attributes = True
|
||||||
|
|
||||||
|
|
||||||
|
class PaginatedJokeResponse(BaseModel):
|
||||||
|
items: list[JokeResponse]
|
||||||
|
total: int
|
||||||
|
page: int
|
||||||
|
page_size: int
|
||||||
Reference in New Issue
Block a user