diff --git a/main.py b/main.py index 4228392..19cab9d 100644 --- a/main.py +++ b/main.py @@ -198,6 +198,8 @@ def get_records_count(item: str = "default"): cur.execute("SELECT COUNT(*) FROM url WHERE viewed = true") elif item == "status": cur.execute("SELECT COUNT(*) FROM url WHERE status = true") + elif item == "time": + cur.execute("SELECT COUNT(*) FROM url") else: cur.execute("SELECT COUNT(*) FROM url") result = cur.fetchone() @@ -208,69 +210,18 @@ def get_records_count(item: str = "default"): if conn: conn.close() - -# @app.get("/poisk", summary="Поиск по текстовым полям", response_model=List[ParsedData]) -# def poisk( -# query: str = Query(..., description="Строка для поиска"), -# offset: int = Query(0, ge=0), -# limit: int = Query(10, ge=1, le=500) -# ): -# """ -# Поиск по текстовым полям таблицы url (title, original_text, translation_text, short_text, url, category, other). -# Частичное совпадение без учета регистра (ILIKE). -# """ -# conn = None -# try: -# conn = get_connection() -# with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: -# search_pattern = f"%{query}%" -# cur.execute(""" -# SELECT * FROM url -# WHERE title ILIKE %s -# OR original_text ILIKE %s -# OR translation_text ILIKE %s -# OR short_text ILIKE %s -# OR url ILIKE %s -# OR category ILIKE %s -# OR other ILIKE %s -# ORDER BY parsed_at DESC -# OFFSET %s LIMIT %s -# """, (search_pattern, search_pattern, search_pattern, search_pattern, -# search_pattern, search_pattern, search_pattern, offset, limit)) -# rows = cur.fetchall() -# results = [dict(row) for row in rows] -# return results -# except Exception as e: -# raise HTTPException(status_code=500, detail=f"Ошибка при поиске: {e}") -# finally: -# if conn: -# conn.close() - -# @app.get("/poisk/count", summary="Получить количество результатов поиска") -# def get_poisk_count(query: str): -# conn = None -# try: -# conn = get_connection() -# with conn.cursor() as cur: -# cur.execute( -# "SELECT COUNT(*) FROM url WHERE title ILIKE %s OR original_text ILIKE %s", -# (f"%{query}%", f"%{query}%") -# ) -# result = cur.fetchone() -# return {"count": result[0]} -# except Exception as e: -# raise HTTPException(status_code=500, detail=f"Ошибка при получении количества: {e}") -# finally: -# if conn: -# conn.close() @app.get("/poisk/count", summary="Получить количество результатов поиска") def get_poisk_count(query: str, item: str = "default"): conn = None try: conn = get_connection() with conn.cursor() as cur: - base_query = "SELECT COUNT(*) FROM url WHERE (title ILIKE %s OR original_text ILIKE %s)" - params = [f"%{query}%", f"%{query}%"] + search_pattern = f"%{query}%" + base_query = """SELECT COUNT(*) FROM url WHERE ( + title ILIKE %s OR original_text ILIKE %s OR translation_text ILIKE %s + OR short_text ILIKE %s OR url ILIKE %s OR category ILIKE %s OR other ILIKE %s + )""" + params = [search_pattern] * 7 if item == "viewed": base_query += " AND viewed = true" @@ -292,11 +243,12 @@ def poisk(query: str, offset: int = Query(0, ge=0), limit: int = Query(10, ge=1, try: conn = get_connection() with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: - base_query = """ - SELECT * FROM url - WHERE (title ILIKE %s OR original_text ILIKE %s) - """ - params = [f"%{query}%", f"%{query}%"] + search_pattern = f"%{query}%" + base_query = """SELECT * FROM url WHERE ( + title ILIKE %s OR original_text ILIKE %s OR translation_text ILIKE %s + OR short_text ILIKE %s OR url ILIKE %s OR category ILIKE %s OR other ILIKE %s + )""" + params = [search_pattern] * 7 if item == "viewed": base_query += " AND viewed = true" @@ -317,7 +269,7 @@ def poisk(query: str, offset: int = Query(0, ge=0), limit: int = Query(10, ge=1, conn.close() @app.get("/records_all", summary="Получить все записи из БД + сортирует + пагинация", response_model=List[ParsedData]) -def get_records(item: str = "default", offset: int = Query(0, ge=0), limit: int = Query(10, ge=1, le=500)): +def get_records(item: str = "default", offset: int = Query(0, ge=0), limit: int = Query(10, ge=1, le=100)): """ Возвращает записи из таблицы url с учетом. """