[Pharo] Personal fitness tracker web app.
Update database persistency code.
Changed files
- src/BaselineOfMyFitnessTracker/BaselineOfMyFitnessTracker.class.st
- src/MyFitnessTracker-Core/MFTExercise.class.st
- src/MyFitnessTracker-Core/MFTMuscle.class.st
- src/MyFitnessTracker-Core/MFTMuscleGroup.class.st
- src/MyFitnessTracker-Core/MFTSet.class.st
- src/MyFitnessTracker-Core/MFTSetGroup.class.st
- src/MyFitnessTracker-Core/MFTUser.class.st
- src/MyFitnessTracker-Core/MFTWeight.class.st
- src/MyFitnessTracker-Core/MFTWorkout.class.st
- src/MyFitnessTracker-Database/MFTDescriptorSystem.class.st
src/BaselineOfMyFitnessTracker/BaselineOfMyFitnessTracker.class.st
@@ -39,7 +39,8 @@
39
39
repository: 'github://astares/Seaside-Bootstrap5:master/src'.
40
40
spec
41
41
baseline: 'SQLite3';
42
Removed:
repository: 'github://pharo-rdbms/Pharo-SQLite3/src'.
42
Added:
repository: 'github://pharo-rdbms/Pharo-SQLite3/src';
43
Added:
load: #( 'glorp' ).
43
44
spec
44
45
baseline: 'Glorp';
45
46
repository: 'github://pharo-rdbms/glorp'
src/MyFitnessTracker-Core/MFTExercise.class.st
@@ -19,17 +19,6 @@
19
19
#package : 'MyFitnessTracker-Core'
20
20
}
21
21
22
Removed:
{ #category : 'instance creation' }
23
Removed:
MFTExercise class >> newFromDictionary: aDictionary [
24
Removed:
25
Removed:
^ self new
26
Removed:
id: (aDictionary at: 'id');
27
Removed:
primaryMuscleGroupId: (aDictionary at: 'primary_muscle_group_id');
28
Removed:
englishName: (aDictionary at: 'english_name');
29
Removed:
frenchName: (aDictionary at: 'french_name');
30
Removed:
yourself
31
Removed:
]
32
Removed:
33
22
{ #category : 'accessing' }
34
23
MFTExercise >> englishName [
35
24
src/MyFitnessTracker-Core/MFTMuscle.class.st
@@ -15,18 +15,6 @@
15
15
}
16
16
17
17
{ #category : 'as yet unclassified' }
18
Removed:
MFTMuscle class >> newFromDictionary: aDictionary [
19
Removed:
20
Removed:
^ self new
21
Removed:
id: (aDictionary at: 'id');
22
Removed:
primaryMuscleGroupId: (aDictionary at: 'muscle_group_id');
23
Removed:
latinName: (aDictionary at: 'latin_name');
24
Removed:
englishName: (aDictionary at: 'english_name');
25
Removed:
function: (aDictionary at: 'function');
26
Removed:
yourself
27
Removed:
]
28
Removed:
29
Removed:
{ #category : 'as yet unclassified' }
30
18
MFTMuscle >> englishName [
31
19
32
20
^ englishName
src/MyFitnessTracker-Core/MFTMuscleGroup.class.st
@@ -26,22 +26,6 @@
26
26
{ 12. 13 } asSet }
27
27
]
28
28
29
Removed:
{ #category : 'instance creation' }
30
Removed:
MFTMuscleGroup class >> newFromDictionary: aDictionary [
31
Removed:
32
Removed:
| id |
33
Removed:
id := aDictionary at: 'id'.
34
Removed:
35
Removed:
^ self new
36
Removed:
id: id;
37
Removed:
englishName: (aDictionary at: 'english_name');
38
Removed:
frenchName: (aDictionary at: 'french_name');
39
Removed:
function: (aDictionary at: 'function');
40
Removed:
muscles: (MFTSQLite3Database allMuscles select: [ :each |
41
Removed:
each primaryMuscleGroupId = id ]);
42
Removed:
yourself
43
Removed:
]
44
Removed:
45
29
{ #category : 'as yet unclassified' }
46
30
MFTMuscleGroup >> englishName [
47
31
src/MyFitnessTracker-Core/MFTSet.class.st
@@ -18,21 +18,6 @@
18
18
#package : 'MyFitnessTracker-Core'
19
19
}
20
20
21
Removed:
{ #category : 'instance creation' }
22
Removed:
MFTSet class >> newFromDictionary: aDictionary [
23
Removed:
24
Removed:
^ self new
25
Removed:
id: (aDictionary at: 'id');
26
Removed:
workoutId: (aDictionary at: 'workout_id');
27
Removed:
exerciseId: (aDictionary at: 'exercise_id');
28
Removed:
number: (aDictionary at: 'set_number');
29
Removed:
groupId: (aDictionary at: 'set_group');
30
Removed:
reps: (aDictionary at: 'reps');
31
Removed:
rpe: (aDictionary at: 'rpe');
32
Removed:
restAfter: (aDictionary at: 'rest_after');
33
Removed:
yourself
34
Removed:
]
35
Removed:
36
21
{ #category : 'as yet unclassified' }
37
22
MFTSet class >> placeholderCollection [
38
23
src/MyFitnessTracker-Core/MFTSetGroup.class.st
@@ -3,7 +3,7 @@
3
3
"
4
4
Class {
5
5
#name : 'MFTSetGroup',
6
Removed:
#superclass : 'Object',
6
Added:
#superclass : 'MFTObject',
7
7
#instVars : [
8
8
'sets'
9
9
],
src/MyFitnessTracker-Core/MFTUser.class.st
@@ -46,22 +46,6 @@
46
46
]
47
47
48
48
{ #category : 'as yet unclassified' }
49
Removed:
MFTUser class >> newFromDictionary: aDictionary [
50
Removed:
51
Removed:
^ self new
52
Removed:
id: (aDictionary at: 'id');
53
Removed:
username: (aDictionary at: 'username');
54
Removed:
passwordHash: (aDictionary at: 'password_hash');
55
Removed:
realFirstName: (aDictionary at: 'real_first_name');
56
Removed:
realLastName: (aDictionary at: 'real_last_name');
57
Removed:
dateOfBirth: (aDictionary at: 'date_of_birth');
58
Removed:
lastLoginDateAndTime: (aDictionary at: 'last_login_date_time');
59
Removed:
accountRegisterDateAndTime:
60
Removed:
(aDictionary at: 'account_register_date_time');
61
Removed:
yourself
62
Removed:
]
63
Removed:
64
Removed:
{ #category : 'as yet unclassified' }
65
49
MFTUser >> accountRegisterDateAndTime [
66
50
67
51
^ accountRegisterDateAndTime
@@ -206,9 +190,9 @@
206
190
{ #category : 'as yet unclassified' }
207
191
MFTUser >> workouts [
208
192
209
Removed:
^ self session user isLoggedIn
193
Added:
^ {MFTWorkout new. MFTWorkout new} "self session user isLoggedIn
210
194
ifTrue: [ self session db getAllUserWorkouts ]
211
Removed:
ifFalse: [ workouts ]
195
Added:
ifFalse: [ workouts ]"
212
196
]
213
197
214
198
{ #category : 'as yet unclassified' }
src/MyFitnessTracker-Core/MFTWeight.class.st
@@ -17,21 +17,11 @@
17
17
MFTWeight class >> kilograms: aWeight date: aDate [
18
18
19
19
^ self new
20
Removed:
weight: aWeight;
20
Added:
kilograms: aWeight;
21
21
date: aDate;
22
22
yourself
23
23
]
24
24
25
Removed:
{ #category : 'instance creation' }
26
Removed:
MFTWeight class >> newFromDictionary: aDictionary [
27
Removed:
28
Removed:
^ self new
29
Removed:
initialize: (aDictionary at: 'value')
30
Removed:
date:
31
Removed:
(Date readFrom: (aDictionary at: 'date') pattern: 'yyyy-mm-dd')
32
Removed:
yourself
33
Removed:
]
34
Removed:
35
25
{ #category : 'as yet unclassified' }
36
26
MFTWeight class >> placeholderCollection [
37
27
@@ -58,7 +48,7 @@
58
48
MFTWeight >> initialize [
59
49
60
50
super initialize.
61
Removed:
kilograms := Integer new.
51
Added:
kilograms := 0.
62
52
date := Date new
63
53
]
64
54
src/MyFitnessTracker-Core/MFTWorkout.class.st
@@ -16,17 +16,6 @@
16
16
}
17
17
18
18
{ #category : 'as yet unclassified' }
19
Removed:
MFTWorkout class >> newFromDictionary: aDictionary [
20
Removed:
21
Removed:
^ self new
22
Removed:
id: (aDictionary at: 'id');
23
Removed:
userId: (aDictionary at: 'user_id');
24
Removed:
date: (Date readFrom: (aDictionary at: 'date') pattern: 'yyyy-mm-dd');
25
Removed:
primaryMuscleGroupId: (aDictionary at: 'primary_muscle_group_id');
26
Removed:
yourself
27
Removed:
]
28
Removed:
29
Removed:
{ #category : 'as yet unclassified' }
30
19
MFTWorkout class >> placeholderCollection [
31
20
32
21
| placeholderSets workout1 workout2 workout3 |
src/MyFitnessTracker-Database/MFTDescriptorSystem.class.st
@@ -1,3 +1,6 @@
1
Added:
"
2
Added:
I implement database persistency for My Fitness Tracker core domain objects.
3
Added:
"
1
4
Class {
2
5
#name : 'MFTDescriptorSystem',
3
6
#superclass : 'DescriptorSystem',
@@ -106,15 +109,8 @@
106
109
table := self tableNamed: 'EXERCISE'.
107
110
aDescriptor table: table.
108
111
aDescriptor directMappingFor: #id.
109
Removed:
(aDescriptor newMapping: DirectMapping)
110
Removed:
from: #englishName
111
Removed:
to: (table fieldNamed: 'englishName').
112
Removed:
(aDescriptor newMapping: DirectMapping)
113
Removed:
from: #frenchName
114
Removed:
to: (table fieldNamed: 'frenchName').
115
Removed:
(aDescriptor newMapping: DirectMapping)
116
Removed:
from: #primaryMuscleGroupId
117
Removed:
to: (table fieldNamed: 'primaryMuscleGroupId')
112
Added:
aDescriptor directMappingFor: #frenchName.
113
Added:
aDescriptor directMappingFor: #englishName
118
114
]
119
115
120
116
{ #category : 'descriptors' }
@@ -126,7 +122,7 @@
126
122
aDescriptor directMappingFor: #id.
127
123
(aDescriptor newMapping: DirectMapping)
128
124
from: #primaryMuscleGroupId
129
Removed:
to: (table fieldNamed: 'primaryMuscleGroupId').
125
Added:
to: ((self tableNamed:'MUSCLEGROUP') fieldNamed: 'id').
130
126
(aDescriptor newMapping: DirectMapping)
131
127
from: #latinName
132
128
to: (table fieldNamed: 'latinName').
@@ -142,7 +138,7 @@
142
138
MFTDescriptorSystem >> descriptorForMFTMuscleGroup: aDescriptor [
143
139
144
140
| table |
145
Removed:
table := self tableNamed: 'MUSCLE_GROUP'.
141
Added:
table := self tableNamed: 'MUSCLEGROUP'.
146
142
aDescriptor table: table.
147
143
aDescriptor directMappingFor: #id.
148
144
aDescriptor directMappingFor: #englishName.
@@ -154,17 +150,14 @@
154
150
MFTDescriptorSystem >> descriptorForMFTSet: aDescriptor [
155
151
156
152
| table |
157
Removed:
table := self tableNamed: 'WORKOUT'.
153
Added:
table := self tableNamed: 'SET'.
158
154
aDescriptor table: table.
159
155
aDescriptor directMappingFor: #id.
160
156
(aDescriptor newMapping: DirectMapping)
161
157
from: #exerciseId
162
158
to: (table fieldNamed: 'Id').
163
159
aDescriptor directMappingFor: #number.
164
Removed:
aDescriptor directMappingFor: #groupId.
165
Removed:
(aDescriptor newMapping: DirectMapping)
166
Removed:
from: #groupId
167
Removed:
to: (table fieldNamed: 'Id').
160
Added:
aDescriptor directMappingFor: #group.
168
161
aDescriptor directMappingFor: #reps.
169
162
aDescriptor directMappingFor: #load.
170
163
aDescriptor directMappingFor: #rpe.
@@ -175,12 +168,10 @@
175
168
MFTDescriptorSystem >> descriptorForMFTWeight: aDescriptor [
176
169
177
170
| table |
178
Removed:
table := self tableNamed: 'WORKOUT'.
171
Added:
table := self tableNamed: 'WEIGHT'.
179
172
aDescriptor table: table.
180
173
aDescriptor directMappingFor: #id.
181
Removed:
(aDescriptor newMapping: DirectMapping)
182
Removed:
from: #userId
183
Removed:
to: (table fieldNamed: 'userId').
174
Added:
(aDescriptor newMapping: OneToOneMapping) attributeName: #userId.
184
175
aDescriptor directMappingFor: #date.
185
176
aDescriptor directMappingFor: #kilograms
186
177
]
@@ -192,41 +183,45 @@
192
183
table := self tableNamed: 'WORKOUT'.
193
184
aDescriptor table: table.
194
185
aDescriptor directMappingFor: #id.
195
Removed:
(aDescriptor newMapping: DirectMapping)
196
Removed:
from: #userId
197
Removed:
to: (table fieldNamed: 'userId').
186
Added:
(aDescriptor newMapping: OneToOneMapping) attributeName: #user.
198
187
aDescriptor directMappingFor: #date.
199
Removed:
(aDescriptor newMapping: DirectMapping)
200
Removed:
from: #primaryMuscleGroupId
201
Removed:
to: (table fieldNamed: 'primaryMuscleGroupId').
202
Removed:
(aDescriptor newMapping: DirectMapping)
203
Removed:
from: #secondaryMuscleGroupIds
204
Removed:
to: (table fieldNamed: 'secondaryMuscleGroupId').
205
Removed:
aDescriptor directMappingFor: #restAfter
188
Added:
(aDescriptor newMapping: OneToOneMapping) attributeName:
189
Added:
#primaryMuscleGroup.
190
Added:
191
Added:
aDescriptor newMapping: ManyToManyMapping
206
192
]
207
193
208
194
{ #category : 'tables' }
209
195
MFTDescriptorSystem >> tableForEXERCISE: aTable [
210
196
197
Added:
| primaryMuscleField |
211
198
(aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
212
199
aTable createFieldNamed: 'englishName' type: (platform varChar: 100).
213
200
aTable createFieldNamed: 'frenchName' type: (platform varChar: 100).
201
Added:
primaryMuscleField := aTable
202
Added:
createFieldNamed: 'primaryMuscleId'
203
Added:
type: platform integer.
204
Added:
214
205
aTable
215
Removed:
createFieldNamed: 'primaryMuscle'
216
Removed:
type: (platform varchar: 100)
206
Added:
addForeignKeyFrom: primaryMuscleField
207
Added:
to: ((self tableNamed: 'MUSCLE') fieldNamed: 'id')
217
208
]
218
209
219
210
{ #category : 'tables' }
220
211
MFTDescriptorSystem >> tableForMUSCLE: aTable [
221
212
213
Added:
| muscleGroupField |
222
214
(aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
223
215
aTable createFieldNamed: 'latinName' type: (platform varChar: 100).
224
216
aTable createFieldNamed: 'englishName' type: (platform varChar: 100).
225
Removed:
aTable createFieldNamed: 'englishName' type: (platform varChar: 100).
217
Added:
muscleGroupField := aTable
218
Added:
createFieldNamed: 'muscleGroupId'
219
Added:
type: platform integer.
220
Added:
aTable createFieldNamed: 'function' type: (platform varChar: 100).
221
Added:
226
222
aTable
227
Removed:
createFieldNamed: 'primaryMuscleGroupId'
228
Removed:
type: (platform foreignKey: MFTMuscleGroup).
229
Removed:
aTable createFieldNamed: 'function' type: (platform varChar: 100)
223
Added:
addForeignKeyFrom: muscleGroupField
224
Added:
to: ((self tableNamed: 'MUSCLEGROUP') fieldNamed: 'id')
230
225
]
231
226
232
227
{ #category : 'tables' }
@@ -236,27 +231,33 @@
236
231
aTable
237
232
createFieldNamed: 'englishName' type: (platform varChar: 100);
238
233
createFieldNamed: 'frenchName' type: (platform varChar: 100);
239
Removed:
createFieldNamed: 'function' type: (platform varChar: 100);
240
Removed:
createFieldNamed: 'muscles'
241
Removed:
type: (platform foreignKey: MFTMuscleGroup)
234
Added:
createFieldNamed: 'function' type: (platform varChar: 100)
242
235
]
243
236
244
237
{ #category : 'tables' }
245
238
MFTDescriptorSystem >> tableForSET: aTable [
246
239
240
Added:
| workoutField exerciseField |
247
241
(aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
248
Removed:
aTable
249
Removed:
createFieldNamed: 'workoutId'
250
Removed:
type: (platform foreignKey: #Workout).
251
Removed:
aTable
252
Removed:
createFieldNamed: 'exerciseId'
253
Removed:
type: (platform foreignKey: #Exercise).
242
Added:
workoutField := aTable
243
Added:
createFieldNamed: 'workoutId'
244
Added:
type: platform integer.
245
Added:
exerciseField := aTable
246
Added:
createFieldNamed: 'exerciseId'
247
Added:
type: platform integer.
248
Added:
aTable createFieldNamed: 'group' type: platform integer.
254
249
aTable createFieldNamed: 'number' type: platform integer.
255
Removed:
aTable createFieldNamed: 'groupId' type: platform integer.
256
250
aTable createFieldNamed: 'reps' type: platform integer.
257
251
aTable createFieldNamed: 'load' type: platform integer.
258
252
aTable createFieldNamed: 'rpe' type: platform integer.
259
Removed:
aTable createFieldNamed: 'restAfter' type: platform float4
253
Added:
aTable createFieldNamed: 'restAfter' type: platform float4.
254
Added:
255
Added:
aTable
256
Added:
addForeignKeyFrom: workoutField
257
Added:
to: ((self tableNamed: 'WORKOUT') fieldNamed: 'id').
258
Added:
aTable
259
Added:
addForeignKeyFrom: exerciseField
260
Added:
to: ((self tableNamed: 'EXERCISE') fieldNamed: 'id')
260
261
]
261
262
262
263
{ #category : 'tables' }
@@ -270,35 +271,20 @@
270
271
createFieldNamed: 'realLastName' type: (platform varChar: 100);
271
272
createFieldNamed: 'dateOfBirth' type: platform date;
272
273
createFieldNamed: 'isLoggedIn' type: platform boolean;
273
Removed:
createFieldNamed: 'lastLoginDateAndTime' type: platform date;
274
Removed:
createFieldNamed: 'accountRegisterDateAndTime' type: platform date
274
Added:
createFieldNamed: 'lastLoginDateTime' type: platform date;
275
Added:
createFieldNamed: 'accountRegisterDateTime' type: platform date
275
276
]
276
277
277
278
{ #category : 'tables' }
278
279
MFTDescriptorSystem >> tableForWEIGHT: aTable [
279
280
281
Added:
| userField |
280
282
(aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
281
Removed:
aTable
282
Removed:
createFieldNamed: 'userId'
283
Removed:
type: (platform foreignKey: MFTUser).
283
Added:
userField := aTable createFieldNamed: 'userId' type: platform integer.
284
284
aTable createFieldNamed: 'date' type: platform date.
285
Removed:
aTable createFieldNamed: 'kilograms' type: platform integer
286
Removed:
]
285
Added:
aTable createFieldNamed: 'kilograms' type: platform integer.
287
286
288
Removed:
{ #category : 'tables' }
289
Removed:
MFTDescriptorSystem >> tableForWEIGHT_ON_USER: aTable [
290
Removed:
291
Removed:
| weightField userField |
292
Removed:
weightField := aTable
293
Removed:
createFieldNamed: 'workoutId'
294
Removed:
type: platform integer.
295
Removed:
userField := aTable createFieldNamed: 'userId' type: platform integer.
296
Removed:
weightField bePrimaryKey.
297
Removed:
userField bePrimaryKey.
298
287
aTable
299
Removed:
addForeignKeyFrom: weightField
300
Removed:
to: ((self tableNamed: 'WEIGHT') fieldNamed: 'id').
301
Removed:
aTable
302
288
addForeignKeyFrom: userField
303
289
to: ((self tableNamed: 'USER') fieldNamed: 'id')
304
290
]
@@ -306,35 +292,33 @@
306
292
{ #category : 'tables' }
307
293
MFTDescriptorSystem >> tableForWORKOUT: aTable [
308
294
295
Added:
| userField |
309
296
(aTable createFieldNamed: 'id' type: platform serial) bePrimaryKey.
310
Removed:
aTable
311
Removed:
createFieldNamed: 'userId'
312
Removed:
type: (platform foreignKey: MFTUser).
297
Added:
userField := aTable createFieldNamed: 'userId' type: platform integer.
313
298
aTable createFieldNamed: 'date' type: platform date.
314
299
aTable
315
300
createFieldNamed: 'primaryMuscleGroupId'
316
301
type: (platform varChar: 100).
302
Added:
317
303
aTable
318
Removed:
createFieldNamed: 'sencondaryMuscleGroupIds'
319
Removed:
type: (platform varChar: 100).
320
Removed:
aTable createFieldNamed: 'setGroups' type: (platform varChar: 100).
321
Removed:
aTable createFieldNamed: 'rpe' type: (platform varChar: 100)
304
Added:
addForeignKeyFrom: userField
305
Added:
to: ((self tableNamed: 'USER') fieldNamed: 'id')
322
306
]
323
307
324
Removed:
{ #category : 'tables' }
325
Removed:
MFTDescriptorSystem >> tableForWORKOUT_ON_USER: aTable [
308
Added:
{ #category : 'as yet unclassified' }
309
Added:
MFTDescriptorSystem >> tableForWORKOUT_MUSCLEGROUP: aTable [
326
310
327
Removed:
| workoutField userField |
328
Removed:
workoutField := aTable
329
Removed:
createFieldNamed: 'workoutId'
330
Removed:
type: platform integer.
331
Removed:
userField := aTable createFieldNamed: 'userId' type: platform integer.
332
Removed:
workoutField bePrimaryKey.
333
Removed:
userField bePrimaryKey.
311
Added:
| workoutField mgField |
312
Added:
(aTable createFieldNamed: 'workoutId' type: platform integer)
313
Added:
bePrimaryKey.
314
Added:
workoutField := aTable fieldNamed: 'workoutId'.
315
Added:
mgField := aTable
316
Added:
createFieldNamed: 'muscleGroupId'
317
Added:
type: platform integer.
334
318
aTable
335
319
addForeignKeyFrom: workoutField
336
320
to: ((self tableNamed: 'WORKOUT') fieldNamed: 'id').
337
321
aTable
338
Removed:
addForeignKeyFrom: userField
339
Removed:
to: ((self tableNamed: 'USER') fieldNamed: 'id')
322
Added:
addForeignKeyFrom: mgField
323
Added:
to: ((self tableNamed: 'MUSCLEGROUP') fieldNamed: 'id')
340
324
]