rowt/doc/db
philipp bdde326f03
All checks were successful
CI/CD Pipeline / test (push) Successful in 11m2s
CI/CD Pipeline / deploy-staging (push) Successful in 8m0s
CI/CD Pipeline / deploy-main (push) Has been skipped
user-role-cluster (#760)
Reviewed-on: #760
2024-10-11 11:20:58 +02:00
..
boat.mermaid add docs 2024-10-08 10:06:29 +02:00
boat.svg add docs 2024-10-08 10:06:29 +02:00
fetching.mermaid add docs 2024-10-08 10:06:29 +02:00
fetching.svg add docs 2024-10-08 10:06:29 +02:00
logbook.mermaid add docs 2024-10-08 10:06:29 +02:00
logbook.svg add docs 2024-10-08 10:06:29 +02:00
misc.mermaid add docs 2024-10-08 10:06:29 +02:00
misc.svg add docs 2024-10-08 10:06:29 +02:00
planned.mermaid add docs 2024-10-08 10:06:29 +02:00
planned.svg add docs 2024-10-08 10:06:29 +02:00
README.md user-role-cluster (#760) 2024-10-11 11:20:58 +02:00
recreate.sh add docs 2024-10-08 10:06:29 +02:00
trailer.mermaid add docs 2024-10-08 10:06:29 +02:00
trailer.svg add docs 2024-10-08 10:06:29 +02:00
user.mermaid user-role-cluster (#760) 2024-10-11 11:20:58 +02:00
user.svg user-role-cluster (#760) 2024-10-11 11:20:58 +02:00

Database

Since the database stabilized quite well over the last months/years, hopefully it will not change that much in the future. Thus, here is the current (October '24) model and the reasoning behind it:

User

  • All user-relevant fields are stored in User.
  • Role (and its associative table UserRole) map current roles the user has. This is used for e.g. permissions (Vorstand, Admin, cox, ... roles) and fee calculation (Donau Linz, scheckbuch, Rennjugend).
  • Family specifies, well, a family. Currently only used for fee calculation.
  • cluster in Role groups roles together. There is a db check to only allow for at most 1 role of the same cluster (e.g. either cox or bootsfuehrer, but not both).

Planned rowing adventures :-)

There are 2 main types:

  1. Trips: Trips can be created by every cox. They are "simple", every-day trips.
  2. Events: Events can be created by everyone who has the manage_events role. They are used if multiple coxes are needed, e.g. for "Fetzenfahrt", "Anrudern", .... Additionally, events are shown in public calendar (e.g. on the website).

TripDetails extracts the common data for both Trips and Events. Rower can register using the UserTrip table. This table expects either...

  • a user_id, if a person who has an account registers to the trip/event
  • a user_note, if the cox of a trip, or a manage_events user of an event wants to add a guest which has no account

Logbook

If arrival is NULL, the boat is assumed to still be on the water. There are a few LogbookTypes:

  • Wanderfahrt: Used to check if a user has accomplished their Fahrtenabzeichen in the current year.
  • Regatta

If the number of users entered is less than the boat's maximum capacity, the remaining spaces will be automatically assigned to guests.

Boat

Trailer

Fetching

This tables are used to automatically fetch data (every hour). Currently we have:

  • Waterlevel which fetches the current waterlevel in Linz from hydro (with their explicit permission :-))
  • Weather weather data from Open Weather

Misc

  • Log: Logs "interesting" activities, to be viewed in the web ui
  • Notification
  • Distance: Default distances of certain common targets