# Muteservice - Devnotes ## Datatable | id | user_id | level | reason | evidence | executor | timestamp | deleted? | | -------- | -------- | -------- |----------|----------|-----------|-----------|----------| | 1 | 110817 | 1 | "insult" | "https://wi.timolia.de/cr/225" |110817 | 1634524336|0 | | 2 | 249914 | 5 | "advertising" | | 110817 | 1634524409|0 | | 3 | 110817 | 2 | "spam" | | 110817 | 1634524529|0 | level: geht nach Knozpet von 1-5, könnte vom Muteservice als config hinterlegt werden. reason: wird von teamplern selbst ausgewählt executor: teamler der den mute vollziehen will ## Endpoints ### Queries * mute_info (liefert zeit bis mute abläuft, 0 wenn kein mute vorliegt + reason -> null wenn kein mute) * mute_info_detailed (liefert alle spalten + wann mute abläuft -> aktueller mute) * all_mutes_user (liefert zu einem user alle mutes als liste) * possible_mutes_user (liefert zu einem user allen möglichen mute zeit die mit dem jeweiligen level erreicht wäre) ### Mutations * mute_user (mute mit user_id, level, reason, evidence und initiator) * delete_entry (delete entry mit id) * edit_entry (edit mit allen spalten) ## Notizen / Verwarnungen Bei jedem mute wird eine Notiz mit Verwarnung erstellt (insbesondere wenn der user offline ist), könnte auch im wi/ig erstellt werden. ## Mute Zeit bestimmen Bei einem neuen mute wird das level auf eine gewisse Zeit gemappt z.B. ``` 1 -> 2h 2 -> 5h 3 -> 12h 4 -> 24h 5 -> 48h ``` Dann werden die bisher gesammelten punkte der letzen 360?(config, verjährung) Tage summiert ```sql SELECT SUM('level') FROM 'timolia_mutes' WHERE 'user_id' = :user_id AND 'timestamp' > 1602981209 ``` diese Anzahl wird dann mit einem faktor/algorithmus normalisiert und auf die Mute-Zeit addiert. Die maximale zeit soll dabei nicht 180 Tage überschreiten. ## Redis Sinnvoll wäre zu jedem (kürzlich angeschauten) user die letzten mutepunkte abzuspeichern und erst mit einem Mute zu updaten.