2.2 KiB
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:
-
All user-relevant fields are stored in
User
. -
Role
(and its associative tableUserRole
) 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.
There are 2 main types:
- Trips: Trips can be created by every cox. They are "simple", every-day trips.
- 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 amanage_events
user of an event wants to add a guest which has no account
If arrival
is NULL, the boat is assumed to still be on the water.
There are a few LogbookType
s:
Wanderfahrt
: Used to check if a user has accomplished theirFahrtenabzeichen
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.
This tables are used to automatically fetch data (every hour). Currently we have: