-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDATABASE.puml
213 lines (191 loc) · 3.88 KB
/
DATABASE.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
@startuml
package common {
class Subject {
+ UUID uuid
..Names..
+ Slug slug
+ String name
+ CSSColor color
..Grades..
+ Float weight
+ Float goal
..Defaults..
+ String room
}
enum valueType {
DATE
TIME
DATETIME
TIMERANGE
DATERANGE
SELECT
TEXT
INTEGER
FLOAT
BOOLEAN
}
class SettingDefinition {
..Naming..
+ String name
+ String key
+ String category
+ String description
..Value definition..
+ valueType type
+ Boolean multiple
+ String default
+ Boolean optional
}
class Setting {
+ String value
}
class User {
+ String username
- Password password
+ Email email
+ Boolean is_superuser
+ Date joined
+ Date last_login
+ IPAddress ip_address
}
}
package Learn {
enum Filetype {
MARKDOWN
ASCIIDOC
STUDENTML
HTML
}
class Note {
+ UUID uuid
+ String name
---------------
+ Text content
+ Path filetype
+ Date last_modified
+ Date added
+ Filetype filetype
}
class Learndata {
+ UUID uuid
+ Text data
+ Float progress
+ Integer test_tries
+ Integer train_tries
+ Duration time_spent
+ Date opened
+ Date added
+ Date modified
}
}
package Schedule {
enum Weektype {
Q1
Q2
BOTH
}
enum MutationType {
EDT
ADD
DEL
RES
}
class DateTimeRange<< (T,cyan) >> {
+ DateTime start
+ DateTime end
}
class Event {
+ UUID uuid
+ Time start
+ Time end
+ Integer day
+ Weektype week_type
}
class Mutation {
+ DateTimeRange deleted
+ DateTimeRange rescheduled
+ String room
+ MutationType type()
}
}
package Homework {
class Grade {
+ UUID uuid
+ String name
..Values..
+ Float actual
+ Float expected
+ Float goal
+ Float maximum
+ Float weight
..Dates..
+ Date added
+ Date obtained
}
enum HomeworkType {
TEST
COURSEWORK
TOBRING
EXERCISE
}
class Homework {
+ UUID uuid
+ String name
+ Float progress
+ HomeworkType type
+ String room
..Dates..
+ Date due
+ Date added
+ Date completed
}
}
package reports {
enum ReportType {
FEATURE
BUG
}
enum Device {
PHONE
TABLET
LAPTOP
DESKTOP
SMARTWATCH
OTHER
}
class Report {
+ UUID uuid
..metadata..
+ ReportType report_type
+ Boolean put_on_github
+ Boolean send_by_mail
+ ISO639_1Code language
..dates..
+ DateTime added
+ DateTime happened
..description..
+ HTMLString message
..troubleshooting metadata..
+ URL current_url
+ String browser
+ String os
+ Device device
+ GithubIssue as_github_issue()
}
}
User --> Subject
User --> Setting
User --> Report
SettingDefinition --> Setting
Subject ..> Note
Subject ..> Homework
Subject ..> Event
Subject ..> Learndata
Subject ..> Grade
Note <--> "0..*" Learndata
Homework <--> "0..*" Grade
Homework <--> "0..*" Note
Event --> "0..*" Mutation
Event -[hidden]> Note
Note -[hidden]> Homework
@enduml