---
# System prepended metadata

title: Muteservice - Devnotes

---

# 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.