@@ -7,34 +7,35 @@ import (
7
7
)
8
8
9
9
type User struct {
10
- ID primitive.ObjectID `bson:"_id,omitempty"`
11
- FirstName string `bson:"firstName" validate:"alpha"`
12
- LastName string `bson:"lastName" validate:"alpha"`
13
- Email string `bson:"email" validate:"required,email"`
14
- Password string `bson:"password" validate:"required"`
15
- RememberToken string `bson:"rememberToken,omitempty"`
16
- Phone string `bson:"phone" validate:"e164"`
17
- Birthday time.Time `bson:"birthday,omitempty" validate:"omitempty,datetime"`
18
- Gender string `bson:"gender,omitempty" validate:"omitempty,oneof=male female other"`
19
- Nationality string `bson:"nationality,omitempty"`
20
- Bio string `bson:"bio,omitempty"`
21
- ProfilePicture string `bson:"profilePicture,omitempty" validate:"omitempty,url"`
10
+ ID primitive.ObjectID `bson:"_id,omitempty" json:"id"`
11
+ FirstName string `bson:"firstName" json:"firstName"`
12
+ LastName string `bson:"lastName" json:"lastName"`
13
+ Email string `bson:"email" json:"email"`
14
+ Password string `bson:"password" json:"password"`
15
+ RememberToken string `bson:"rememberToken,omitempty" json:"rememberToken,omitempty"`
16
+ Phone string `bson:"phone" json:"phone"`
17
+ Birthday time.Time `bson:"birthday,omitempty" json:"birthday,omitempty"`
18
+ Gender string `bson:"gender,omitempty" json:"gender,omitempty"`
19
+ Nationality string `bson:"nationality,omitempty" json:"nationality,omitempty"`
20
+ Bio string `bson:"bio,omitempty" json:"bio,omitempty"`
21
+ ProfilePicture string `bson:"profilePicture,omitempty" json:"profilePicture,omitempty"`
22
+ Address Address `bson:"address,omitempty" json:"address,omitempty"`
22
23
23
- // Using 'dive' in validation to apply validation rules on each field of the struct
24
- Address Address `bson:"address,omitempty" validate:"omitempty"`
24
+ MusicalInfoID primitive. ObjectID `bson:"musical_info_id,omitempty" json:"musical_info_id,omitempty"` // Reference to MusicalInformation
25
+ CoursePrefs CoursePreferences `bson:"course_preferences" json:"course_preferences"` // Using embedded approach for now, will be change when Instructor model is implemented
25
26
26
- CreatedAt time.Time `bson:"createdAt"`
27
- UpdatedAt time.Time `bson:"updatedAt"`
28
- DeletedAt * time.Time `bson:"deletedAt,omitempty"`
27
+ CreatedAt time.Time `bson:"createdAt" json:"createdAt" `
28
+ UpdatedAt time.Time `bson:"updatedAt" json:"updatedAt" `
29
+ DeletedAt * time.Time `bson:"deletedAt,omitempty" json:"deletedAt,omitempty" `
29
30
// RoleID primitive.ObjectID `bson:"roleId" validate:"required"` // currently not used
30
31
}
31
32
32
33
type Address struct {
33
- Street string `bson:"street,omitempty" validate:" omitempty"`
34
- City string `bson:"city" validate:"required "`
35
- State string `bson:"state" validate:"required "`
36
- PostalCode string `bson:"postalCode" validate:"required "`
37
- Country string `bson:"country" validate:"required "`
34
+ Street string `bson:"street,omitempty" json:"street, omitempty"`
35
+ City string `bson:"city" json:"city "`
36
+ State string `bson:"state" json:"state "`
37
+ PostalCode string `bson:"postalCode" json:"postalCode "`
38
+ Country string `bson:"country" json:"country "`
38
39
}
39
40
40
41
// SoftDelete sets the DeletedAt field to the current time to mark an entry as deleted.
0 commit comments