Spaces:
Sleeping
Sleeping
| #!/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() | |