-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmigrate_share.py
More file actions
32 lines (27 loc) · 1.37 KB
/
migrate_share.py
File metadata and controls
32 lines (27 loc) · 1.37 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import asyncio
import aiosqlite
import uuid
DB_PATH = "bot.db"
async def migrate():
print(f"🔄 Миграция токенов шаринга...")
async with aiosqlite.connect(DB_PATH) as db:
try:
# 1. Добавляем колонку
await db.execute("ALTER TABLE tasks ADD COLUMN share_link_token TEXT")
print("✅ Колонка share_link_token добавлена.")
except Exception as e:
print(f"ℹ️ Колонка уже есть или ошибка: {e}")
# 2. Генерируем токены для старых задач (где NULL)
cursor = await db.execute("SELECT id FROM tasks WHERE share_link_token IS NULL")
rows = await cursor.fetchall()
if rows:
print(f"🛠 Генерирую токены для {len(rows)} задач...")
for (task_id,) in rows:
token = str(uuid.uuid4())[:8] # Берем короткий токен (8 символов), этого хватит
await db.execute("UPDATE tasks SET share_link_token = ? WHERE id = ?", (token, task_id))
await db.commit()
print("✅ Токены сгенерированы.")
else:
print("👌 Все задачи уже имеют токены.")
if __name__ == "__main__":
asyncio.run(migrate())