import sqlite3 import os from flask import g def get_db_path(): """Veritabanı dosya yolunu belirler""" 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(): """Veritabanı bağlantısını getirir veya oluşturur""" 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): """Veritabanı bağlantısını kapatır""" db = g.pop('db', None) if db is not None: db.close() def create_user(udid, platform): """Yeni kullanıcı oluşturur""" try: if platform not in ['AND', 'IOS']: raise ValueError("Platform must be either 'AND' or 'IOS'") db = get_db() cursor = db.cursor() cursor.execute('INSERT INTO users (udid, platform) VALUES (?, ?)', (udid, platform)) db.commit() cursor.execute('SELECT * FROM users WHERE udid = ?', (udid,)) new_user = cursor.fetchone() return dict(new_user) if new_user else None except sqlite3.IntegrityError: raise ValueError("User with this UDID already exists") except Exception as e: db.rollback() raise e