Added additional SQLite option
This commit is contained in:
11
modules/database_sqlite.py
Normal file
11
modules/database_sqlite.py
Normal file
@@ -0,0 +1,11 @@
|
||||
"""Module that provides database access"""
|
||||
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
|
||||
from libbot.sync import config_get
|
||||
|
||||
db: sqlite3.Connection = sqlite3.connect(Path(config_get("database")))
|
||||
cursor: sqlite3.Cursor = db.cursor()
|
||||
|
||||
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER, card TEXT, locale TEXT)")
|
26
modules/migrator_sqlite.py
Normal file
26
modules/migrator_sqlite.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from os import rename
|
||||
from pathlib import Path
|
||||
from typing import Mapping
|
||||
|
||||
from libbot.sync import json_read
|
||||
|
||||
from modules.database_sqlite import cursor
|
||||
|
||||
|
||||
def migrate_database() -> None:
|
||||
"""Apply migrations from old JSON database to SQLite"""
|
||||
if not Path("data/database.json").exists():
|
||||
return
|
||||
|
||||
db_old: Mapping[str, Mapping[str, str]] = json_read(Path("data/database.json"))
|
||||
|
||||
for user, keys in db_old.items():
|
||||
user_locale = None if "locale" not in keys else keys["locale"]
|
||||
user_card = None if "card" not in keys else keys["card"]
|
||||
|
||||
cursor.execute(
|
||||
"INSERT INTO users VALUES (?, ?)", (int(user), user_card, user_locale)
|
||||
)
|
||||
|
||||
cursor.connection.commit()
|
||||
rename(Path("data/database.json"), Path("data/database.migrated.json"))
|
Reference in New Issue
Block a user