import sqlite3 import os from flask import g def get_db_path(): if os.path.exists('/data'): return '/data/users.db' elif os.path.exists('/home/user_data'): return '/home/user_data/users.db' return 'users.db' def get_db(): if 'db' not in g: db_path = get_db_path() os.makedirs(os.path.dirname(db_path), exist_ok=True) g.db = sqlite3.connect(db_path) g.db.row_factory = sqlite3.Row return g.db def close_db(e=None): db = g.pop('db', None) if db is not None: db.close() def init_db(app): with app.app_context(): db = get_db() cursor = db.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, udid TEXT NOT NULL UNIQUE, name TEXT DEFAULT NULL, premium_account BOOLEAN DEFAULT FALSE, usage_limit INTEGER DEFAULT 3, invoice TEXT DEFAULT NULL ) ''') cursor.execute('SELECT COUNT(*) FROM users') if cursor.fetchone()[0] == 0: cursor.executemany('INSERT INTO users (udid, name, premium_account, usage_limit, invoice) VALUES (?, ?, ?, ?, ?)', [('test_udid_1', 'Test User 1', True, 4, 'test_invoice_1'), ('test_udid_2', 'Test User 2', False, 4, None)]) db.commit()