diff --git a/classes_initial.drawio b/classes_initial.drawio index b9912fe..d3e4b6f 100644 --- a/classes_initial.drawio +++ b/classes_initial.drawio @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/classes_initial.svg b/classes_initial.svg index 0d8d924..85c2399 100644 --- a/classes_initial.svg +++ b/classes_initial.svg @@ -1,3 +1,3 @@ -Track+ id: int+ name: string+ distance: int+ method(type): typeUser+ id: int+ uuid: string(uuid)+ email: string(email)+ username: string(default: mail)+ firstname: string+ ?middlename: string+ lastname: string+ password: string(hash w/ uuid salt)+ userpermissions: array/manytomany+ ?groups: manytomany+ enabled: bool+ refreshTokenCount: int+ ?profilepic: string(filename)+ method(type): typeUserAction+ user: user+ target: string
Relation
Relation
0..n
0..n
1
1
+ action: string+ changed: attributeRunner+ id: int+ firstname:string
Relation
Relation
0..n
0..n
1
1
+ ?middlename:string+ lastname:string+ ?address: location(1to1)+ ?email: string(mail)+ ?phone: string(phonenumber)+ group: RunnerGroup(many2many)«interface»RunnerGroup+ id: int+ name: string+ field: type+ ?contact: groupcontactRunnerOrganisation+ id: int+ name: string+ field: type+ ?contact: groupcontact+ ?address: location(1to1)RunnerTeam+ id: int+ name: string+ field: type+ ?contact: groupcontact+ parentGroup: RunnerGroup
Extends
Extends
Extends
Extends
Scan+ id: int+ runner: Runner+ track: Track+ distance: =>track.distance+ timestamp: int+ valid: boolean+ station: ScanStation
Relation
Relation
0..n
0..n
1
1
ScanStation+ id: int+ description: string+ track: Track+ enabled: boolean+ key: string(api key hash)
Relation
Relation
0..n
0..n
1
1
groupContact+ id: int+ firstname: string+ lastname: string+ ?middlename: string+ ?email: string(mail)+ ?phone: string(phonenumber)+ ?laddress: location
name
name
1
1
name
name
1
1
location+ id: int+ ?description: string+ address1: string+ ?address2: string+ postalcode: string(validate)+ city: string+ country: string
name
name
1
1
name
name
1
1
userGroup+ id: int+ name: string+ ?description: string+ grouppermissions: array/manytomany
Relation
Relation
0..n
0..n
1
1
permission+ id: int+ target: string+ action: string
Relation
Relation
0..n
0..n
1
1
Relation
Relation
0..n
0..n
1
1
<<interface>>donation+ id: int+ donor: participant+ amount: int(cent)distanceDonation+ id: int+ donor: participant+ amount: => getter+ runner: runner+ amountPerDistance: int(cent)fixedDonation+ id: int+ donor: participant+ amount: int(cent)<<interface>>participant+ id: int+ firstname:string+ ?address: location(1to1)+ lastname:string+ ?middlename:string+ ?phone: string(phonenumber)+ ?email: string(mail)
Extends
Extends
Extends
Extends
donor(needs 1 of email or address)+ id: int+ firstname:string+ ?address: location(1to1)+ lastname:string+ ?middlename:string+ ?phone: string(phonenumber)+ ?email: string(mail)+ receiptNeeded: boolean(address needed)
Extends
Extends
Extends
Extends
runnerCard+ id: int+ ?runner: runner+ code: string+ enabled: boolean(true)<<interface>>Scan+ id: int+ runner: runner+ distance: int(meters)
Extends
Extends
Viewer does not support full SVG 1.1
\ No newline at end of file +Track+ id: int+ name: string+ distance: int+ mintime: int (seconds)+ method(type): typeUser+ id: int+ uuid: string(uuid)+ email: string(email)+ username: string(default: mail)+ firstname: string+ ?middlename: string+ lastname: string+ password: string(hash w/ uuid salt)+ userpermissions: array/manytomany+ ?groups: manytomany+ enabled: bool+ refreshTokenCount: int+ ?profilepic: string(filename)+ method(type): typeUserAction+ user: user+ target: string
Relation
Relation
0..n
0..n
1
1
+ action: string+ changed: attributeRunner+ id: int+ firstname:string
Relation
Relation
0..n
0..n
1
1
+ ?middlename:string+ lastname:string+ ?address: location(1to1)+ ?email: string(mail)+ ?phone: string(phonenumber)+ group: RunnerGroup(many2many)«interface»RunnerGroup+ id: int+ name: string+ field: type+ ?contact: groupcontactRunnerOrganisation+ id: int+ name: string+ field: type+ ?contact: groupcontact+ ?address: location(1to1)RunnerTeam+ id: int+ name: string+ field: type+ ?contact: groupcontact+ parentGroup: RunnerGroup
Extends
Extends
Extends
Extends
Scan+ id: int+ runner: Runner+ track: Track+ distance: =>track.distance+ timestamp: int+ card: runnerCard+ valid: boolean+ station: ScanStation
Relation
Relation
0..n
0..n
1
1
ScanStation+ id: int+ description: string+ track: Track+ enabled: boolean+ key: string(api key hash)
Relation
Relation
0..n
0..n
1
1
groupContact+ id: int+ firstname: string+ lastname: string+ ?middlename: string+ ?email: string(mail)+ ?phone: string(phonenumber)+ ?laddress: location
name
name
1
1
name
name
1
1
location+ id: int+ ?description: string+ address1: string+ ?address2: string+ postalcode: string(validate)+ city: string+ country: string
name
name
1
1
name
name
1
1
userGroup+ id: int+ name: string+ ?description: string+ grouppermissions: array/manytomany
Relation
Relation
0..n
0..n
1
1
permission+ id: int+ target: string+ action: string
Relation
Relation
0..n
0..n
1
1
Relation
Relation
0..n
0..n
1
1
<<interface>>donation+ id: int+ donor: participant+ amount: int(cent)distanceDonation+ id: int+ donor: participant+ amount: => getter+ runner: runner+ amountPerDistance: int(cent)fixedDonation+ id: int+ donor: participant+ amount: int(cent)<<interface>>participant+ id: int+ firstname:string+ ?address: location(1to1)+ lastname:string+ ?middlename:string+ ?phone: string(phonenumber)+ ?email: string(mail)
Extends
Extends
Extends
Extends
donor(needs 1 of email or address)+ id: int+ firstname:string+ ?address: location(1to1)+ lastname:string+ ?middlename:string+ ?phone: string(phonenumber)+ ?email: string(mail)+ receiptNeeded: boolean(address needed)
Extends
Extends
Extends
Extends
runnerCard+ id: int+ ?runner: runner+ code: string+ enabled: boolean(true)<<interface>>Scan+ id: int+ runner: runner+ distance: int(meters)
Extends
Extends
Viewer does not support full SVG 1.1
\ No newline at end of file