фильтрация

This commit is contained in:
2026-03-11 22:18:02 +10:00
parent 88b7656e20
commit 97e2b46f25

83
main.py
View File

@@ -186,7 +186,7 @@ def get_records(offset: int = Query(0, ge=0), limit: int = Query(10, ge=1, le=10
conn.close() conn.close()
@app.get("/records_all", summary="Получить все записи из БД + сортирует", response_model=List[ParsedData]) @app.get("/records_all", summary="Получить все записи из БД + сортирует", response_model=List[ParsedData])
def get_records(): def get_records(item: str = "default"):
""" """
Возвращает записи из таблицы url с учетом. Возвращает записи из таблицы url с учетом.
""" """
@@ -194,16 +194,32 @@ def get_records():
try: try:
conn = get_connection() conn = get_connection()
with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
cur.execute(""" print(item)
SELECT url, parsed_at, title, original_text, article_date, status, viewed, other, category, translation_text, short_text if item == "time":
FROM url cur.execute("""
ORDER BY (viewed = true) ASC, parsed_at DESC SELECT * FROM url
""") ORDER BY viewed ASC, parsed_at DESC
""")
elif item == "viewed":
cur.execute("""
SELECT * FROM url
WHERE viewed = true
ORDER BY article_date DESC
""")
elif item == "status":
cur.execute("""
SELECT * FROM url
WHERE status = true
ORDER BY parsed_at DESC
""")
else:
cur.execute("""
SELECT * FROM url
ORDER BY viewed ASC, article_date DESC
""")
rows = cur.fetchall() rows = cur.fetchall()
results = [dict(row) for row in rows] results = [dict(row) for row in rows]
urls = [item['parsed_at'] for item in results] # urls = [item['parsed_at'] for item in results]
print(urls)
return results return results
except Exception as e: except Exception as e:
raise HTTPException(status_code=500, detail=f"Ошибка при получении записей из БД: {e}") raise HTTPException(status_code=500, detail=f"Ошибка при получении записей из БД: {e}")
@@ -211,32 +227,31 @@ def get_records():
if conn: if conn:
conn.close() conn.close()
@app.get("/records_all_status", summary="Получить все записи избранного", response_model=List[ParsedData]) # @app.get("/records_all_status", summary="Получить все записи избранного", response_model=List[ParsedData])
def get_records(): # def get_records():
""" # """
Возвращает записи из таблицы url с избранным. # Возвращает записи из таблицы url с избранным.
""" # """
conn = None # conn = None
try: # try:
conn = get_connection() # conn = get_connection()
with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur: # with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
cur.execute(""" # cur.execute("""
SELECT url, parsed_at, title, original_text, article_date, status, viewed, other, category, translation_text, short_text # SELECT * FROM url
FROM url # WHERE status
WHERE status = true # ORDER BY parsed_at DESC
ORDER BY parsed_at DESC # """)
""") # rows = cur.fetchall()
rows = cur.fetchall() # results = [dict(row) for row in rows]
results = [dict(row) for row in rows] # urls = [item['parsed_at'] for item in results]
urls = [item['parsed_at'] for item in results]
print(urls) # print(urls)
return results # return results
except Exception as e: # except Exception as e:
raise HTTPException(status_code=500, detail=f"Ошибка при получении записей из БД: {e}") # raise HTTPException(status_code=500, detail=f"Ошибка при получении записей из БД: {e}")
finally: # finally:
if conn: # if conn:
conn.close() # conn.close()
# get_records() # get_records()