55 lines
1.5 KiB
Python
55 lines
1.5 KiB
Python
|
from dataclasses import dataclass
|
|||
|
from typing import Any, Dict, List, Optional
|
|||
|
|
|||
|
from orm.author import Author
|
|||
|
from orm.community import Community
|
|||
|
from orm.reaction import Reaction
|
|||
|
from orm.shout import Shout
|
|||
|
from orm.topic import Topic
|
|||
|
|
|||
|
|
|||
|
@dataclass
|
|||
|
class CommonResult:
|
|||
|
error: Optional[str] = None
|
|||
|
slugs: Optional[List[str]] = None
|
|||
|
shout: Optional[Shout] = None
|
|||
|
shouts: Optional[List[Shout]] = None
|
|||
|
author: Optional[Author] = None
|
|||
|
authors: Optional[List[Author]] = None
|
|||
|
reaction: Optional[Reaction] = None
|
|||
|
reactions: Optional[List[Reaction]] = None
|
|||
|
topic: Optional[Topic] = None
|
|||
|
topics: Optional[List[Topic]] = None
|
|||
|
community: Optional[Community] = None
|
|||
|
communities: Optional[List[Community]] = None
|
|||
|
|
|||
|
@classmethod
|
|||
|
def ok(cls, data: Dict[str, Any]) -> "CommonResult":
|
|||
|
"""
|
|||
|
Создает успешный результат.
|
|||
|
|
|||
|
Args:
|
|||
|
data: Словарь с данными для включения в результат.
|
|||
|
|
|||
|
Returns:
|
|||
|
CommonResult: Экземпляр с предоставленными данными.
|
|||
|
"""
|
|||
|
result = cls()
|
|||
|
for key, value in data.items():
|
|||
|
if hasattr(result, key):
|
|||
|
setattr(result, key, value)
|
|||
|
return result
|
|||
|
|
|||
|
@classmethod
|
|||
|
def error(cls, message: str):
|
|||
|
"""
|
|||
|
Create an error result.
|
|||
|
|
|||
|
Args:
|
|||
|
message: The error message.
|
|||
|
|
|||
|
Returns:
|
|||
|
CommonResult: An instance with the error message.
|
|||
|
"""
|
|||
|
return cls(error=message)
|