|
|
|
@ -130,7 +130,7 @@ def read_items(
|
|
|
|
@app.get(
|
|
|
|
@app.get(
|
|
|
|
"/search/",
|
|
|
|
"/search/",
|
|
|
|
response_model=List[schemas.Item],
|
|
|
|
response_model=List[schemas.Item],
|
|
|
|
responses={400: {"description": "Запрос слишком короткий (минимумл 3 символа)"}},
|
|
|
|
responses={400: {"description": "Запрос слишком короткий (минимум 3 символа)"}},
|
|
|
|
)
|
|
|
|
)
|
|
|
|
def search(q: str, skip: int = 0, limit: int = 20, db: Session = Depends(get_db)):
|
|
|
|
def search(q: str, skip: int = 0, limit: int = 20, db: Session = Depends(get_db)):
|
|
|
|
"""фильтры для поиска Описаний наборов данных по атрибутам
|
|
|
|
"""фильтры для поиска Описаний наборов данных по атрибутам
|
|
|
|
@ -149,6 +149,36 @@ def search(q: str, skip: int = 0, limit: int = 20, db: Session = Depends(get_db)
|
|
|
|
return crud.get_item_by_description(db=db, needle=q, skip=skip, limit=limit)
|
|
|
|
return crud.get_item_by_description(db=db, needle=q, skip=skip, limit=limit)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.post(
|
|
|
|
|
|
|
|
"/detailed_search/",
|
|
|
|
|
|
|
|
response_model=List[schemas.Item],
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
def detailed_search(
|
|
|
|
|
|
|
|
query: schemas.DetailedSearchQuery,
|
|
|
|
|
|
|
|
skip: int = 0,
|
|
|
|
|
|
|
|
limit: int = 20,
|
|
|
|
|
|
|
|
db: Session = Depends(get_db),
|
|
|
|
|
|
|
|
):
|
|
|
|
|
|
|
|
"""фильтры для поиска Описаний наборов данных по атрибутам
|
|
|
|
|
|
|
|
дополнительный возможный синтаксис в запросах преобразуется
|
|
|
|
|
|
|
|
в поисковый запрос содержащий:
|
|
|
|
|
|
|
|
- простой текст: переданные слова в любом порядке
|
|
|
|
|
|
|
|
- "текст в кавычках": переданные слова в указанном порядке
|
|
|
|
|
|
|
|
- OR ИЛИ: какие-либо из переданных слов
|
|
|
|
|
|
|
|
- -: не содержащий данного слова
|
|
|
|
|
|
|
|
дополнительные поля ипользуются напрямую
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
if query.main_query is not None:
|
|
|
|
|
|
|
|
# replace all full ИЛИ words with OR
|
|
|
|
|
|
|
|
query.main_query = substitute(
|
|
|
|
|
|
|
|
r"\bИЛИ\b", "OR", query.main_query, flags=IGNORECASE
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return crud.get_item_by_detailed_description(
|
|
|
|
|
|
|
|
db=db, query=query, skip=skip, limit=limit
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get("/headers/", response_model=List[schemas.Header])
|
|
|
|
@app.get("/headers/", response_model=List[schemas.Header])
|
|
|
|
def read_headers(db: Session = Depends(get_db)):
|
|
|
|
def read_headers(db: Session = Depends(get_db)):
|
|
|
|
"""полные наименования столбцов таблиц"""
|
|
|
|
"""полные наименования столбцов таблиц"""
|
|
|
|
|