-
Notifications
You must be signed in to change notification settings - Fork 0
/
teamDojo_v2.jdl
220 lines (192 loc) · 6.21 KB
/
teamDojo_v2.jdl
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
214
215
216
217
218
219
220
// SPDX-FileCopyrightText: the TeamDojo authors
// SPDX-License-Identifier: Apache-2.0
// See https://www.jhipster.tech/jdl/getting-started
// Visual editor: https://start.jhipster.tech/jdl-studio/
entity Activity {
type ActivityType
data String maxlength(255)
createdAt Instant required
updatedAt Instant required
}
entity Badge {
titleEN String required minlength(2) maxlength(50)
titleDE String minlength(2) maxlength(50)
descriptionEN String maxlength(4096)
descriptionDE String maxlength(4096)
availableUntil Instant
availableAmount Integer min(1)
requiredScore Double required min(0) max(1)
instantMultiplier Double required min(0)
completionBonus Integer min(0)
createdAt Instant required
updatedAt Instant required
}
/**
* Lookup table entity for N-to-M relationships
*/
entity BadgeSkill
entity Comment {
text String required maxlength(4096)
createdAt Instant required
updatedAt Instant required
}
entity Dimension {
titleEN String required minlength(1) maxlength(50)
titleDE String minlength(1) maxlength(50)
descriptionEN String maxlength(4096)
descriptionDE String maxlength(4096)
createdAt Instant required
updatedAt Instant required
}
entity Image {
title String required minlength(1) maxlength(50)
small ImageBlob
medium ImageBlob
large ImageBlob
hash String maxlength(32)
createdAt Instant required
updatedAt Instant required
}
entity Level {
titleEN String required minlength(3) maxlength(50)
titleDE String minlength(3) maxlength(50)
descriptionEN String maxlength(4096)
descriptionDE String maxlength(4096)
requiredScore Double required min(0) max(1)
instantMultiplier Double required min(0)
completionBonus Integer min(0)
createdAt Instant required
updatedAt Instant required
}
/**
* Lookup table entity for N-to-M relationships.
*/
entity LevelSkill
entity Report {
title String required minlength(1) maxlength(50)
description String required minlength(1) maxlength(4096)
type ReportType required
createdAt Instant required
updatedAt Instant required
}
entity Skill {
titleEN String required minlength(5) maxlength(80)
titleDE String minlength(5) maxlength(80)
descriptionEN String maxlength(2147483647)
descriptionDE String maxlength(2147483647)
implementationEN String maxlength(4096)
implementationDE String maxlength(4096)
validationEN String maxlength(4096)
validationDE String maxlength(4096)
expiryPeriod Integer min(1)
contact String maxlength(255)
score Integer required min(0)
rateScore Double min(0) max(5)
rateCount Integer required min(0)
createdAt Instant required
updatedAt Instant required
}
entity Team {
title String required minlength(2) maxlength(50)
shortTitle String required minlength(2) maxlength(20) pattern(/^[a-zA-Z0-9_-]*$/)
slogan String maxlength(255)
contact String maxlength(255)
expirationDate Instant
official Boolean required
createdAt Instant required
updatedAt Instant required
}
entity TeamSkill {
completedAt Instant
verifiedAt Instant
irrelevant Boolean
skillStatus SkillStatus required
note String maxlength(4096)
vote Integer required
voters String maxlength(255)
createdAt Instant required
updatedAt Instant required
}
entity Training {
titleEN String required maxlength(80)
titleDE String maxlength(80)
descriptionEN String maxlength(4096)
descriptionDE String maxlength(4096)
contact String maxlength(255)
link String maxlength(255)
validUntil Instant
isOfficial Boolean required
suggestedBy String maxlength(255)
createdAt Instant required
updatedAt Instant required
}
/**
* A team group is a hierarchical construct to organize teams within a large organization into departments to separate
* different teams more easily based on their organizational structure.
*/
entity TeamGroup {
title String required maxlength(80)
description String maxlength(4096)
createdAt Instant required
updatedAt Instant required
}
@skipClient
entity PersistentAuditEvent {
principal String required maxlength(255)
auditEventDate Instant
auditEventType String maxlength(30)
}
@skipClient
entity PersistentAuditEventData {
name String required maxlength(255)
value String required maxlength(255)
}
enum ActivityType {
SKILL_COMPLETED,
BADGE_CREATED,
BADGE_COMPLETED
}
enum ReportType {
BUG,
WISH,
REVIEW,
COMPLIMENT
}
enum SkillStatus {
OPEN,
ACHIEVED,
EXPIRING,
EXPIRED,
IRRELEVANT
}
relationship OneToOne {
Level{dependsOn(titleEN)} to Level
}
relationship OneToMany {
Badge{skills} to BadgeSkill{badge(titleEN) required}
Skill{badges} to BadgeSkill{skill(titleEN) required}
Dimension{levels} to Level{dimension(titleEN) required}
Skill{levels} to LevelSkill{skill(titleEN) required}
Level{skills} to LevelSkill{level(titleEN) required}
Skill{teams} to TeamSkill{skill(titleEN) required}
Team{skills} to TeamSkill{team(title) required}
TeamGroup{teams} to Team{group(title) required}
PersistentAuditEvent{data} to PersistentAuditEventData{event(principal) required}
}
relationship ManyToOne {
Badge{image(title)} to Image
Comment{team(shortTitle) required} to Team
Comment{skill(titleEN) required} to Skill
Level{image(title)} to Image
Team{image(title)} to Image
TeamGroup{parent(title)} to TeamGroup
}
relationship ManyToMany {
Badge{dimensions(titleEN)} to Dimension{badges}
Team{participations(titleEN)} to Dimension{participants}
Training{skill(titleEN)} to Skill{trainings}
}
dto Activity, Badge, BadgeSkill, Comment, Dimension, Image, Level, LevelSkill, Report, Skill, Team, TeamGroup, TeamSkill, Training with mapstruct
paginate Activity, Badge, BadgeSkill, Comment, Dimension, Image, Level, LevelSkill, Skill, Team, TeamGroup, TeamSkill, Training with infinite-scroll
service Activity, Badge, BadgeSkill, Comment, Dimension, Image, Level, LevelSkill, Report, Skill, Team, TeamGroup, TeamSkill, Training with serviceImpl
filter Activity, Badge, BadgeSkill, Comment, Dimension, Image, Level, LevelSkill, Report, Skill, Team, TeamGroup, TeamSkill, Training