Rollbackpunkt, alles außer TikTok geht, die wollen wieder so eine extra locke bei Login
Dieser Commit ist enthalten in:
Binäre Datei nicht angezeigt.
@ -103,12 +103,15 @@ class DatabaseManager:
|
||||
def add_account(self, account_data: Dict[str, Any]) -> int:
|
||||
"""
|
||||
Fügt einen Account zur Datenbank hinzu.
|
||||
|
||||
|
||||
Args:
|
||||
account_data: Dictionary mit Account-Daten
|
||||
|
||||
|
||||
Returns:
|
||||
ID des hinzugefügten Accounts oder -1 im Fehlerfall
|
||||
ID des hinzugefügten Accounts
|
||||
-1: Pflichtfeld fehlt oder ist leer
|
||||
-2: Duplikat (Account existiert bereits)
|
||||
-3: Datenbankverbindungsfehler
|
||||
"""
|
||||
try:
|
||||
# Prüfe, ob erforderliche Felder vorhanden sind
|
||||
@ -122,35 +125,50 @@ class DatabaseManager:
|
||||
logger.error(f"Pflichtfeld ist leer: {field} = '{account_data[field]}'")
|
||||
logger.error(f"Account-Daten: {account_data}")
|
||||
return -1
|
||||
|
||||
|
||||
# Sicherstellen, dass created_at vorhanden ist
|
||||
if "created_at" not in account_data:
|
||||
account_data["created_at"] = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
|
||||
conn = sqlite3.connect(self.db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
|
||||
# SQL-Anweisung vorbereiten
|
||||
fields = ", ".join(account_data.keys())
|
||||
placeholders = ", ".join(["?" for _ in account_data])
|
||||
|
||||
|
||||
query = f"INSERT INTO accounts ({fields}) VALUES ({placeholders})"
|
||||
|
||||
|
||||
# Anweisung ausführen
|
||||
cursor.execute(query, list(account_data.values()))
|
||||
|
||||
|
||||
# ID des hinzugefügten Datensatzes abrufen
|
||||
account_id = cursor.lastrowid
|
||||
|
||||
|
||||
conn.commit()
|
||||
conn.close()
|
||||
|
||||
|
||||
logger.info(f"Account hinzugefügt: {account_data['username']} (ID: {account_id})")
|
||||
|
||||
|
||||
return account_id
|
||||
except sqlite3.IntegrityError as e:
|
||||
# UNIQUE constraint failed - Duplikat
|
||||
error_str = str(e).lower()
|
||||
if "unique" in error_str:
|
||||
logger.error(f"Account existiert bereits (Duplikat): {e}")
|
||||
logger.error(f"Account-Daten: username={account_data.get('username')}, platform={account_data.get('platform')}")
|
||||
return -2
|
||||
else:
|
||||
logger.error(f"Integritätsfehler bei Account-Erstellung: {e}")
|
||||
return -3
|
||||
except sqlite3.OperationalError as e:
|
||||
# Datenbankverbindungsfehler
|
||||
logger.error(f"Datenbankverbindungsfehler: {e}")
|
||||
return -3
|
||||
except sqlite3.Error as e:
|
||||
logger.error(f"Fehler beim Hinzufügen des Accounts: {e}")
|
||||
return -1
|
||||
# Generischer DB-Fehler
|
||||
logger.error(f"Datenbankfehler beim Hinzufügen des Accounts: {e}")
|
||||
return -3
|
||||
|
||||
def get_account(self, account_id: int) -> Optional[Dict[str, Any]]:
|
||||
"""
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren