mirror of
https://github.com/StepanovPlaton/torrent_backend.git
synced 2026-04-03 20:30:38 +04:00
Add swagger examples and description
This commit is contained in:
@@ -17,9 +17,22 @@ async def add_game(db: AsyncSession,
|
||||
return await add_transaction(db, game)
|
||||
|
||||
|
||||
async def edit_game(db: AsyncSession,
|
||||
game_id: int,
|
||||
game_info: sch.GameCreate):
|
||||
game = await db.get(mdl.Game, game_id)
|
||||
game_fields = [c.name for c in mdl.Game.__table__.columns]
|
||||
new_game_info = {
|
||||
**{k: v for k, v in vars(game).items() if k in game_fields},
|
||||
**game_info.model_dump()}
|
||||
print(game_fields, new_game_info)
|
||||
game = mdl.Game(**new_game_info)
|
||||
await db.commit()
|
||||
return game
|
||||
|
||||
|
||||
async def get_games(db: AsyncSession):
|
||||
return (await db.execute(select(mdl.Game))).scalars().all()
|
||||
|
||||
|
||||
async def get_game(db: AsyncSession, game_id: int):
|
||||
return await db.get(mdl.Game, game_id)
|
||||
async def get_game(db: AsyncSession, game_id: int):
|
||||
return await db.get(mdl.Game, game_id)
|
||||
|
||||
@@ -15,7 +15,7 @@ Base = declarative_base()
|
||||
|
||||
async def get_session() -> AsyncSession: # type: ignore
|
||||
async with async_session() as session: # type: ignore
|
||||
yield session
|
||||
yield session # type: ignore
|
||||
|
||||
|
||||
async def drop_all():
|
||||
|
||||
@@ -1,33 +1,43 @@
|
||||
from typing import Optional
|
||||
from pydantic import BaseModel
|
||||
from fastapi import Body
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
|
||||
|
||||
class GameCardBase(BaseModel):
|
||||
title: str
|
||||
cover: Optional[str] = None
|
||||
description: Optional[str] = None
|
||||
version: Optional[str] = None
|
||||
title: str = Field(examples=["DwarfFortress", "RimWorld"])
|
||||
cover: Optional[str] = \
|
||||
Field(default=None, examples=["cover_filename.jpg"])
|
||||
description: Optional[str] = \
|
||||
Field(default=None,
|
||||
examples=["Dwarf Fortress - это игра, которая"
|
||||
" находится в стадии разработки уже"
|
||||
" довольно долгое время, но уже собрала"
|
||||
" большую базу поклонников и довольно хорошие отзывы"])
|
||||
version: Optional[str] = \
|
||||
Field(default=None, examples=["50.08 (Steam edition)"])
|
||||
|
||||
|
||||
class GameCard(GameCardBase):
|
||||
id: int
|
||||
id: int = Field(examples=[1])
|
||||
|
||||
|
||||
class GameBase(GameCardBase):
|
||||
torrent_file: str
|
||||
trailer: Optional[str] = None
|
||||
torrent_file: str = Field(examples=["torrent_filename.torrent"])
|
||||
trailer: Optional[str] = \
|
||||
Field(default=None, examples=[
|
||||
"https://www.youtube.com/watch?v=xawsp16oxb0"])
|
||||
|
||||
system: Optional[str] = None
|
||||
processor: Optional[str] = None
|
||||
memory: Optional[str] = None
|
||||
graphics: Optional[str] = None
|
||||
storage: Optional[str] = None
|
||||
|
||||
developer: Optional[str] = None
|
||||
language: Optional[str] = None
|
||||
release_date: Optional[str] = None
|
||||
download_size: Optional[str] = None
|
||||
system: Optional[str] = Field(default=None, examples=["Windows"])
|
||||
processor: Optional[str] = \
|
||||
Field(default=None, examples=["Любой (от 2Ghz)"])
|
||||
memory: Optional[str] = Field(default=None, examples=["512Mb"])
|
||||
graphics: Optional[str] = Field(default=None, examples=["Любая"])
|
||||
storage: Optional[str] = Field(default=None, examples=["100Mb"])
|
||||
|
||||
developer: Optional[str] = Field(default=None, examples=["Bay12Games"])
|
||||
language: Optional[str] = Field(default=None, examples=["eng/рус"])
|
||||
release_date: Optional[str] = Field(default=None, examples=["2014"])
|
||||
download_size: Optional[str] = Field(default=None, examples=["80Mb"])
|
||||
|
||||
|
||||
class GameCreate(GameBase):
|
||||
@@ -35,10 +45,9 @@ class GameCreate(GameBase):
|
||||
|
||||
|
||||
class Game(GameBase):
|
||||
id: int
|
||||
update_date: str
|
||||
upload_date: str
|
||||
owner_id: int
|
||||
id: int = Field(examples=[1])
|
||||
update_date: str = Field(examples=["2024-05-13 12:00:00"])
|
||||
upload_date: str = Field(examples=["2024-05-13 12:00:00"])
|
||||
owner_id: int = Field(examples=[1])
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
Reference in New Issue
Block a user