= Fortschritt Tag 4

== Datenbankschema

Also wir haben wieder leichte Veränderungen am Datenbankmodell vorgenommen.
Wir werden Eventsourcing als Persistenzmodell Verwenden. Die Datenbank besteht nun aus den Spalten:
`event_id` `group_id` `user_id` und `eventpayload`.

Die Spalte `eventpayload` wird im JSON-Format representiert und beinhaltet alle Infos zu veränderungen.
Ganz vorne steht die Action die stattfand, welche wir in 7 mögliche Actions unterteilt haben:

- `DeleteGroup`
- `CreateGroup`
- `AddUser`
- `DeleteUser`
- `UpdateRolle`
- `UpdateGroupTitle`
- `UpdateGroupDescription`

== Gruppenservice/Events

Wir verwenden nun einen Datentyp `Event` um die verschiedenen Events zu handleln.
Es wird eine Eventliste als Parameter an eine überladene Methode in die `Gruppe` Klasse übergeben.
Vom Datentyp Event erben die Verschiedenen Events die wir in der DB haben und haben einen entsprechenden Konstruktor:


    public class CreateGroupEvent extends Event {
    String titel;
    String beschreibung;
        public CreateGroupEvent(long id, long gruppe_id, String user_id, String titel, String beschreibung)
        {
            super(id, gruppe_id, user_id);
            this.titel = titel;
            this.beschreibung = beschreibung;
        }
    }

== Tests

Wir haben Tests zu den `applyEvent()` Methoden geschrieben aber müssen noch weitere Logik testen.

