# Game Collection API Dies ist ein Backend mit Flask, das eine Sammlung von Spielen verwaltet und eine SQLite-Datenbank verwendet. ## Endpunkte ### 1. Spiele hinzufügen - **URL:** `/games` - **Method:** `POST` - **Body:** ```json { "image": "URL zum Bild", "title": "Titel des Spiels", "date": "Kaufdatum (YYYY-MM-DD)", "buyer": "Name des Käufers", "owned": true/false } ``` - **Antwort:** - **Status 201:** Spiel erfolgreich hinzugefügt. - **Beispiel:** ```json { "message": "Game added!" } ``` ### 2. Alle Spiele abrufen - **URL:** `/games` - **Method:** `GET` - **Antwort:** - **Status 200:** Liste aller Spiele. - **Beispiel:** ```json [ { "id": 1, "image": "URL zum Bild", "title": "Titel des Spiels", "date": "Kaufdatum", "buyer": "Name des Käufers", "owned": true } ] ``` ### 3. Spiel bearbeiten - **URL:** `/games/` - **Method:** `PUT` - **Body:** ```json { "title": "Neuer Titel", "image": "Neue URL zum Bild", "owned": true/false # Optional, um den Besitzstatus zu aktualisieren } ``` - **Antwort:** - **Status 200:** Spiel erfolgreich aktualisiert. - **Beispiel:** ```json { "message": "Game updated!" } ``` - **Status 401:** Unbefugter Zugriff. - **Beispiel:** ```json { "message": "Unauthorized access!" } ``` - **Status 404:** Spiel nicht gefunden. - **Beispiel:** ```json { "message": "Game not found!" } ``` ### 4. Spiel löschen - **URL:** `/games/` - **Method:** `DELETE` - **Antwort:** - **Status 200:** Spiel erfolgreich gelöscht (nur für Administratoren). - **Beispiel:** ```json { "message": "Game deleted!" } ``` - **Status 401:** Unbefugter Zugriff. - **Beispiel:** ```json { "message": "Unauthorized access! Only admins can delete games." } ``` - **Status 404:** Spiel nicht gefunden. - **Beispiel:** ```json { "message": "Game not found!" } ``` ### 5. Spiele suchen - **URL:** `/games/search` - **Method:** `GET` - **Query Parameter:** - `search_keywords`: Das Suchwort für die Spiele. - **Antwort:** - **Status 200:** Liste der gefundenen Spiele. - **Beispiel:** ```json [ { "title": "Titel des Spiels", "link": "URL zum Spiel", "image_link": "URL zum Bild", "release_date": "Veröffentlichungsdatum", "price": "Preis", "rating": "Bewertung" } ] ``` - **Status 400:** Kein Suchbegriff angegeben. - **Beispiel:** ```json { "message": "No search term provided!" } ``` - **Status 500:** Fehler beim Abrufen der Seite. - **Beispiel:** ```json { "message": "Error fetching the page." } ``` ### 6. Benutzer erstellen - **URL:** `/users` - **Method:** `POST` - **Body:** ```json { "username": "Benutzername", "password": "Passwort", "role": "user/admin" # Optional, Standard ist 'user' } ``` - **Antwort:** - **Status 201:** Benutzer erfolgreich erstellt (nur für Administratoren). - **Beispiel:** ```json { "message": "User created!" } ``` ### 7. Benutzeranmeldung - **URL:** `/users/login` - **Method:** `POST` - **Body:** ```json { "username": "Benutzername", "password": "Passwort" } ``` - **Antwort:** - **Status 200:** Anmeldung erfolgreich. - **Beispiel:** ```json { "message": "Login successful!", "role": "user/admin" } ``` - **Status 401:** Ungültige Anmeldedaten. - **Beispiel:** ```json { "message": "Invalid credentials!" } ``` ### 8. Alle Benutzer abrufen - **URL:** `/users` - **Method:** `GET` - **Antwort:** - **Status 200:** Liste aller Benutzer. - **Beispiel:** ```json [ { "id": 1, "username": "Benutzername", "role": "user/admin", "last_login": "2023-10-01 12:00:00" } ] ``` ### 9. Benutzer bearbeiten - **URL:** `/users/` - **Method:** `PUT` - **Body:** ```json { "username": "Neuer Benutzername", "role": "user/admin", # Optional "password": "Neues Passwort" # Optional, Passwort kann bearbeitet werden, wird aber nicht angezeigt } ``` - **Antwort:** - **Status 200:** Benutzer erfolgreich aktualisiert (nur für Administratoren). - **Beispiel:** ```json { "message": "User updated!" } ``` - **Status 401:** Unbefugter Zugriff. - **Beispiel:** ```json { "message": "Unauthorized access! Only admins can edit users." } ``` - **Status 404:** Benutzer nicht gefunden. - **Beispiel:** ```json { "message": "User not found!" } ``` ### 10. Benutzer löschen - **URL:** `/users/` - **Method:** `DELETE` - **Antwort:** - **Status 200:** Benutzer erfolgreich gelöscht (nur für Administratoren). - **Beispiel:** ```json { "message": "User deleted!" } ``` - **Status 401:** Unbefugter Zugriff. - **Beispiel:** ```json { "message": "Unauthorized access! Only admins can delete users." } ``` - **Status 404:** Benutzer nicht gefunden. - **Beispiel:** ```json { "message": "User not found!" } ``` ## Installation 1. Klone das Repository. 2. Installiere die Abhängigkeiten: ```bash pip install -r requirements.txt ``` 3. Starte die Anwendung: ```bash python app.py ``` ## Lizenz Dieses Projekt ist lizenziert unter der MIT-Lizenz. ## Datenbankstruktur Die Datenbank enthält zwei Tabellen: `games` und `users`. Die `users`-Tabelle hat die folgenden Spalten: - `id`: Eindeutige Benutzer-ID - `username`: Eindeutiger Benutzername - `password`: Passwort des Benutzers (verschlüsselt gespeichert) - `role`: Rolle des Benutzers (user oder admin) - `last_login`: Zeitstempel der letzten Anmeldung ## Standardbenutzer Beim Erstellen der Datenbank wird ein Standardbenutzer mit dem Benutzernamen "admin" und dem Passwort "admin" erstellt. Das Passwort wird verschlüsselt gespeichert. Nur Administratoren können neue Benutzer erstellen.