Spaces:
Running
Running
#!/usr/bin/env python3 | |
# -*- coding: utf-8 -*- | |
from typing import Any, Generic, TypeVar | |
from fastapi import Response | |
from pydantic import BaseModel, Field | |
from common.response.response_code import CustomResponse, CustomResponseCode | |
from utils.serializers import MsgSpecJSONResponse | |
SchemaT = TypeVar('SchemaT') | |
class ResponseModel(BaseModel): | |
""" | |
@router.get('/test', response_model=ResponseModel) | |
def test(): | |
return ResponseModel(data={'test': 'test'}) | |
@router.get('/test') | |
def test() -> ResponseModel: | |
return ResponseModel(data={'test': 'test'}) | |
@router.get('/test') | |
def test() -> ResponseModel: | |
res = CustomResponseCode.HTTP_200 | |
return ResponseModel(code=res.code, msg=res.msg, data={'test': 'test'}) | |
""" | |
code: int = Field(CustomResponseCode.HTTP_200.code, description='Return status code') | |
msg: str = Field(CustomResponseCode.HTTP_200.msg, description='Return message') | |
data: Any | None = Field(None, description='Return data') | |
class ResponseSchemaModel(ResponseModel, Generic[SchemaT]): | |
""" | |
@router.get('/test', response_model=ResponseSchemaModel[GetApiDetail]) | |
def test(): | |
return ResponseSchemaModel[GetApiDetail](data=GetApiDetail(...)) | |
@router.get('/test') | |
def test() -> ResponseSchemaModel[GetApiDetail]: | |
return ResponseSchemaModel[GetApiDetail](data=GetApiDetail(...)) | |
@router.get('/test') | |
def test() -> ResponseSchemaModel[GetApiDetail]: | |
res = CustomResponseCode.HTTP_200 | |
return ResponseSchemaModel[GetApiDetail](code=res.code, msg=res.msg, data=GetApiDetail(...)) | |
""" | |
data: SchemaT | |
class ResponseBase: | |
"""""" | |
def __response( | |
*, res: CustomResponseCode | CustomResponse = None, data: Any | None = None | |
) -> ResponseModel | ResponseSchemaModel: | |
"""" | |
:param res: | |
:param data: | |
:return: | |
""" | |
return ResponseModel(code=res.code, msg=res.msg, data=data) | |
def success( | |
self, | |
*, | |
res: CustomResponseCode | CustomResponse = CustomResponseCode.HTTP_200, | |
data: Any | None = None, | |
) -> ResponseModel | ResponseSchemaModel: | |
""" | |
:param res: | |
:param data: | |
:return: | |
""" | |
return self.__response(res=res, data=data) | |
def fail( | |
self, | |
*, | |
res: CustomResponseCode | CustomResponse = CustomResponseCode.HTTP_400, | |
data: Any = None, | |
) -> ResponseModel | ResponseSchemaModel: | |
""" | |
:param res: | |
:param data: | |
:return: | |
""" | |
return self.__response(res=res, data=data) | |
def fast_success( | |
*, | |
res: CustomResponseCode | CustomResponse = CustomResponseCode.HTTP_200, | |
data: Any | None = None, | |
) -> Response: | |
return MsgSpecJSONResponse({'code': res.code, 'msg': res.msg, 'data': data}) | |
response_base: ResponseBase = ResponseBase() | |