from typing import List from fastapi import Request from pydantic import create_model from config import conf from core.app import app from core.utils.router import generate_router, safe_route from core.utils.sumery import sumery_executor, sumery_default_getter router = generate_router("com/sumery", auth_dependencies=True, version='v2') _tag_base = ['sumery'] _pre = conf.server.prefix_url.replace('v1', 'v2') @router.get('/{_object}', response_model=List, tags=_tag_base) async def smart_query(q: str, _object: str, request: Request): params = request.query_params extra_filter = {} for key, value in params.items(): if key.startswith('e_'): extra_filter.setdefault(key[2:], value) return await safe_route('get', sumery_executor, _object, q, extra_filter) @router.post('/default/{_object}', response_model=List, tags=_tag_base) async def smart_query(_object: str, _input: create_model('InputDefaultSumery', ids=[]), request: Request): params = request.query_params extra_filter = {} for key, value in params.items(): if key.startswith('e_'): extra_filter.setdefault(key[2:], value) return await safe_route('get', sumery_default_getter, _object, _input.ids, extra_filter) app.include_router(router)