share_id теперь UUID вместо последовательного номера (непредсказуемые ссылки)
This commit is contained in:
1 parent
c6f658fb2f
commit
6ea71e1864
1 file changed
+7
-11
+7
-11
@@ -16,6 +16,7 @@
|
||||
import json
|
||||
import os
|
||||
import sqlite3
|
||||
import uuid
|
||||
from datetime import datetime
|
||||
|
||||
DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "results.db")
|
||||
@@ -51,27 +52,22 @@ def init_db():
|
||||
|
||||
def save_result(interpretation: dict, raw_result: dict) -> str:
|
||||
"""
|
||||
Сохранить результат анализа. Возвращает share_id (числовой, начиная с 10005).
|
||||
Сохранить результат анализа. Возвращает share_id — случайный UUID
|
||||
(непредсказуемый, чтобы ссылки нельзя было перебирать).
|
||||
"""
|
||||
init_db()
|
||||
|
||||
conn = _connect()
|
||||
|
||||
# Следующий ID: MAX(id) + 1, но не меньше FIRST_ID
|
||||
row = conn.execute("SELECT MAX(id) AS max_id FROM results").fetchone()
|
||||
next_id = (row["max_id"] + 1) if row["max_id"] is not None else FIRST_ID
|
||||
if next_id < FIRST_ID:
|
||||
next_id = FIRST_ID
|
||||
|
||||
share_id = str(next_id)
|
||||
# Случайный UUID для публичной ссылки (id остаётся автоинкрементным для внутренней сортировки).
|
||||
share_id = uuid.uuid4().hex
|
||||
|
||||
conn.execute(
|
||||
"""
|
||||
INSERT INTO results (id, share_id, created_at, raw_json, summary, warnings, metrics, advice)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||
INSERT INTO results (share_id, created_at, raw_json, summary, warnings, metrics, advice)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)
|
||||
""",
|
||||
(
|
||||
next_id,
|
||||
share_id,
|
||||
datetime.now().isoformat(timespec="seconds"),
|
||||
json.dumps(raw_result, ensure_ascii=False),
|
||||
|
||||
Reference in new issue
Block a user