-
Notifications
You must be signed in to change notification settings - Fork 0
2.3.Anwendungslogik_Dienstgeber
##2.3.) Anwendungslogik:
Mit der Anwendungslogik unseres verteilten Systems taten wir uns von Anfang an etwas schwerer, sind aber auf ein vollkommen zeigbares Ergebnis gekommen.
- Zeigt nur Songs an, welche zu den gewählten Genres des Abends gehören
- Zufällige Fortführung der Playlist mit noch nichtgespielten Songs, welche aber trotzdem zum Genre passen
- Gibt Vorschläge, welche Artists oder Songs zur Wiedergabe passen, weil diese den meisten Genres des Abends entsprechen
Im Moment ist nur die erste Funktion der Anwendungslogik implementiert. Hiermit kann man Songs an die Warteschlange geben, das Genre des Songs wird anschließend überprüft und falls das Genre des Songs unter die erlaubten Genres fällt, erhält die Queue einen neuen Eintrag.
db.keys('allowedGenres:*', function(err, keys){
if(err) return res.status(404).type('plain').send('Error beim Auslesen.');
db.mget(keys, function(err, genres){
if(genres===undefined) genres=[];
genres=genres.map(function(genre){
return JSON.parse(genre);
});
genres.forEach(function(genre){
if(queueEntry.genre === genre.allowedGenres){
allowed=true;
}
});
});
});
2.3.1. Filtern eines Songrequests nach den Genres
Im Codeteil werden am Anfang alle Einträge der Datenbank die unter dem Key "allowedGenres:" gespeichert sind, angefordert. Anschließend wird das neue Array genres
erzeugt, welches je nach Inhalt reagiert. Mit einer "forEach"- Schleife wird dann überprüft, ob das Genre mit den erlaubten Genres übereinstimmt.
if(!allowed){
return res.status(403).json({message: 'Genre dieses Songs passt nicht zur Party.'});
}
2.3.2. Antwort, falls Song nicht gespielt werden darf
Falls der Song nicht gespielt werden darf, antwortet der Server mit dem HTTP-Statuscode 403
und einer selbstgewählten Nachricht, andernfalls wird der Eintrag zur Liste hinzugefügt.
Zwischendurch kam die Überlegung auf, dass man bereits bei den angezeigten Songs danach filtert, welche Genres erlaubt sind. Wir haben uns bewusst gegen diese Variante in unserer aktuellen Version entschieden, weil das Genre eines Songs als auch die erlaubten Genres immer zu erkennen sind. Zum anderen weiß ein Gast, der ein bestimmtes Lied hören möchte bereits wie das Lied heißt und wird so nicht auf das Genre achten.
Für die Ausarbeitung des Benutzersystems halten wir uns die Möglichkeit offen, dem Adminpanel die komplette Songdatenbank zur Verfügung zu stellen, um zum Beispiel bestimmte Songs vom anderen Genre dann doch zu spielen, während der Gast dann schließlich nur Songs vom passenden Genre angezeigt bekommt.