From 12987ef578101d5f025e844e161fa0dd01478220 Mon Sep 17 00:00:00 2001 From: Yro Boros Date: Sat, 14 Mar 2026 10:26:28 +1000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B8=D1=81=D0=BA=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 78 +++++++++++---------------------------------------------- 1 file changed, 15 insertions(+), 63 deletions(-) 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 с учетом. """