init script

This commit is contained in:
2025-11-19 14:13:31 +01:00
parent 964cf3ba36
commit 37202aa2aa
2 changed files with 79 additions and 32 deletions

61
main.py
View File

@@ -1,41 +1,38 @@
import sqlite3
from fastapi import FastAPI
from random import choice
from typing import List
# 📝 Die Wortliste (kann beliebig erweitert werden)
GERMAN_WORDS: List[str] = [
"Haus", "Tisch", "Apfel", "Straße", "Flugzeug",
"Schlüssel", "Computer", "Bibliothek", "Deutschland",
"Flasche", "Maus", "Wolke", "Lampe", "Spiegel",
"Kaffee", "Programmierung", "RestAPI"
]
# 📁 Dateiname der Datenbank
DB_NAME = "hangman.db"
# 💡 Initialisiere die FastAPI-Anwendung
app = FastAPI(
title="German Hangman Word API",
description="Gibt ein zufälliges deutsches Wort aus einer vordefinierten Liste zurück."
)
# 🛠️ Datenbank-Hilfsfunktionen
def get_db_connection():
"""Erstellt eine Verbindung zur SQLite-Datenbank."""
conn = sqlite3.connect(DB_NAME)
conn.row_factory = sqlite3.Row
return conn
@app.get("/")
def read_root():
"""Zeigt eine Willkommensnachricht an."""
return {"message": "Willkommen zur deutschen Zufallswort-API. Nutze /random_word"}
# 💡 Initialisiere die FastAPI-Anwendung (ohne Lifespan/Init-Logik)
app = FastAPI()
@app.get("/random_word")
def get_random_word():
"""
Gibt ein einzelnes, zufällig ausgewähltes deutsches Wort zurück.
Holt ein zufälliges Wort direkt aus der SQL-Datenbank.
"""
# 🎲 Wähle ein zufälliges Wort aus der Liste
random_word = choice(GERMAN_WORDS)
# 📤 Gib das Wort als JSON-Objekt zurück
return {"word": random_word}
# OPTIONAL: Ein Endpunkt, der die gesamte Wortliste zurückgibt
@app.get("/word_list")
def get_word_list():
"""
Gibt die vollständige Liste der verfügbaren Wörter zurück (nur zu Debugging-Zwecken).
"""
return {"count": len(GERMAN_WORDS), "words": GERMAN_WORDS}
try:
conn = get_db_connection()
cursor = conn.cursor()
# SQL-Magie: Wählt zufällig eine Zeile aus der Datenbank
cursor.execute('SELECT word FROM words ORDER BY RANDOM() LIMIT 1')
result = cursor.fetchone()
conn.close()
if result:
return {"word": result["word"]}
else:
return {"error": "Keine Wörter in der Datenbank gefunden (Bitte init.py ausführen)."}
except sqlite3.OperationalError:
# Fängt den Fall ab, dass die Tabelle noch nicht existiert
return {"error": "Datenbankfehler: Wurde init.py ausgeführt?"}