39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
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)
|