From effc32baabce5344f87c1729ee6f948b166b0f18 Mon Sep 17 00:00:00 2001 From: MpakobecEx Date: Thu, 28 May 2026 00:10:49 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D0=BA=D0=B0=D1=82=D0=B8=D0=BB?= =?UTF-8?q?=D0=B8=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=20=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=B4=D0=BE=D0=BC=D0=BD=D0=BE=D0=B9=20=D0=B7=D0=B0=D0=BF=D0=B8?= =?UTF-8?q?=D1=81=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- database.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/database.py b/database.py index fe721dc..969071c 100644 --- a/database.py +++ b/database.py @@ -50,11 +50,10 @@ def add_record(record_type: str, phone: str = None, qr_code: str = None, qr_data def get_random_record(): - """Возвращает случайную запись из тех, у кого минимальный usage_count (с ограничением выборки)""" + """Возвращает случайную запись из 10 самых старых по created_at или used_at""" with sqlite3.connect(DB_NAME) as conn: conn.row_factory = sqlite3.Row - # Общее количество записей total_count = conn.execute("SELECT COUNT(*) as count FROM records").fetchone()["count"] if total_count == 0: @@ -66,20 +65,18 @@ def get_random_record(): else: limit = max(10, min(50, int(total_count * 0.2))) - # Находим минимальный usage_count - min_usage = conn.execute("SELECT MIN(usage_count) as min_usage FROM records").fetchone()["min_usage"] - - # Берём записи с минимальным usage_count, но не больше limit + # Берём limit самых старых (по дате создания или последнего использования) candidates = conn.execute(""" - SELECT * FROM records - WHERE usage_count = ? + SELECT *, COALESCE(used_at, created_at) as sort_date + FROM records + ORDER BY sort_date ASC LIMIT ? - """, (min_usage, limit)).fetchall() + """, (limit,)).fetchall() if not candidates: return None - # Из них выбираем случайную + # Из них выбираем случайный selected = random.choice(candidates) # Обновляем счётчик и дату использования