init script
This commit is contained in:
61
main.py
61
main.py
@@ -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?"}
|
||||
Reference in New Issue
Block a user