search.py 918 Bytes
from typing import List, Any, Optional, Union

from fastapi import APIRouter, Depends, Request, HTTPException, Body
from sqlalchemy.orm import Session

from presupuestov1 import model, schema, constant, schemas, models, search


router = APIRouter(
    tags=['search']
)

###############################################################################
# GET
###############################################################################

@router.get('/search', response_model=schemas.project.Search)
def fetch_search(
    query: schema.SearchQueryParams = Depends(),
):
    if query.q is None or len(query.q.strip()) < 3:
        return {
            'facet_counts': [],
            'found': 0,
            'out_of': 0,
            'page': 0,
            'search_time_ms': 0,
            'hits': [],
        }

    return search.do_search(
        query.q, query.page, query.is_class, query.class_, query.order
    )