# todo will remove from datetime import datetime from functools import wraps import time from pydantic import BaseModel import os from typing import Optional from common.constant import const import logging from db.database import gen_session, close_session from common.response_wrapper import resp_ok from fastapi_pagination.bases import RawParams logger = logging.getLogger(const.LOGGER_API) def to_raw_params(self) -> RawParams: return RawParams( limit=self.size, offset=self.size * (self.page - 1), ) def inject_session(func): @wraps(func) def wrapper(*args, **kwargs): start_time = time.time() newline_character = "\n" if os.getenv(const.MODE) == const.MODE_DEV else "\r" # Parameters may contain sensitive information entered by users, such as database connection information, # so they will not be output in the production environment logger.debug(f"START >>>{newline_character}METHOD: {func.__name__}{newline_character}PARAMS: {kwargs}") try: gen_session() result = func(*args, **kwargs) res = resp_ok(result) logger.debug(f"END >>> USED:{round(time.time()-start_time)}ms") return res finally: close_session() return wrapper class BaseColumn(BaseModel): version: Optional[int] create_by: Optional[str] modify_by: Optional[str] modify_time: Optional[datetime] create_time: Optional[datetime] class Config: orm_mode = True