Datenbankschema überarbeiten
Probleme beim alten Schema:
- Vermischung von IDs und Domain-Objekten. Im besten Fall sollten in den Services nicht ganze Objekte übermittelt werden, sondern nur die IDs.
- Boilerplate, bei manchen Services, eventuell Code in Interfaces auslagern. (Many-To-Many) (UserTimelineUnpin)
- Hibernate andere Objekte zurückgeben, anstatt alle Objekte immer zu mappen. (TimelineFave)
- Hibernate, extrem lange Queries. (TimelinePinRepository)
Anforderungen:
- User-Sources abhängig von Baumstruktur, wenn ein Zweig abbestellt wurde - Auswirkungen auf Anfrage?
- Einträge favorisieren, anpinnen, ausblenden
- Standardmäßig bestimmte Fachbereiche und Standorte abonnieren (Tendenz steigend)
Liste unvollständig
Bisheriges Ablauf vom User-Sources und Anforderungen:
Im Moment gibt es das Tabellenschema sources:
Die Spalte "subscription" dient als default Wert, welche sources standardmäßig abonniert sind.
source_id | parent_id | name | subscription | department | campus |
---|---|---|---|---|---|
1 | null | root | subscribed | x | x |
2 | 1 | Fachschaften | subscribed | x | x |
3 | 2 | MNI | unsubscribed | x | x |
4 | 3 | MNI Grillfest | unsubscribed | x | x |
5 | 2 | MND | unsubscribed | x | x |
6 | 1 | Allgemein | subscribed | x | x |
user:
user_id | department | campus |
---|---|---|
1 | x | x |
user_sources:
user_id | source_id | subscription |
---|---|---|
1 | 4 | subscribed |
Aus dem Beispiel ergibt sich Beispielsweise ein Tree der so aussehen könnte:
- root
- Fachschaften
- MNI
- MNI Grillen
- MND
- MNI
- Allgemein
- Fachschaften
Die Source MNI ist abhängig vom Fachbereich, obwohl es standardmäßig für alle deaktiviert ist, wird es anhand des Fachbereichs vom User aktiviert. Das Prinzip vom standard Abonnement, abhängig vom Fachbereich, Standort usw., muss beliebig erweiterbar sein. Beispielsweise im welchen Semester befindet sich die Person X?, ist die Person mit dem Bachelor fast fertig?, usw. Des weiteren kann der User alle Sources per Hand abbonnieren und deabonieren, unabhängig von den default Einstellungen, oder der spezifischen Einstellungen wie Fachbereich, Standort usw.. Wenn ein User z.B. MNI und das MNI Grillen abonniert hat, allerdings die Source Fachschaften deabonniert hat, dann dürfen dem User die Sources MNI und MNI Grillen nicht angezeigt werden. Sollte der User die Source Fachschaften wieder aktivieren, dann werden ihm auch wieder alle Sources, die er zuvor aktiviert hatte angezeigt.
Fragen:
- Auditing? (siehe Artikel unten)
Material: