backend db fixes

This commit is contained in:
Alex
2025-02-10 12:52:12 +01:00
parent c34c46cbc2
commit a8bc049af7
3 changed files with 32 additions and 4 deletions

View File

@@ -626,7 +626,9 @@ func testUpdateUser(t *testing.T, loginCookie http.Cookie) {
logger.Error.Printf("user to be updated: %+v", user.Licence) logger.Error.Printf("user to be updated: %+v", user.Licence)
tt.updateFunc(&updatedUser) tt.updateFunc(&updatedUser)
// Convert user to JSON // Convert user to JSON
jsonData, err := json.Marshal(updatedUser)
updateData := &RegistrationData{User: updatedUser}
jsonData, err := json.Marshal(updateData)
if err != nil { if err != nil {
t.Fatalf("Failed to marshal user data: %v", err) t.Fatalf("Failed to marshal user data: %v", err)
} }
@@ -1092,15 +1094,31 @@ func getTestUsers() []RegisterUserTest {
return user return user
})), })),
}, },
// Currently unsupported. My number wouldn't match, though it should.
// {
// Name: "wrong driverslicence number, should fail",
// WantResponse: http.StatusBadRequest,
// WantDBData: map[string]interface{}{"email": "john.wronglicence.doe@example.com"},
// Assert: false,
// Input: GenerateInputJSON(customizeInput(func(user models.User) models.User {
// user.Email = "john.wronglicence.doe@example.com"
// user.Licence = &models.Licence{
// Number: "AAAA12345AA",
// ExpirationDate: time.Now().AddDate(1, 0, 0),
// IssuedDate: time.Now().AddDate(-1, 0, 0),
// }
// return user
// })),
// },
{ {
Name: "wrong driverslicence number, should fail", Name: "empty driverslicence number, should fail",
WantResponse: http.StatusBadRequest, WantResponse: http.StatusBadRequest,
WantDBData: map[string]interface{}{"email": "john.wronglicence.doe@example.com"}, WantDBData: map[string]interface{}{"email": "john.wronglicence.doe@example.com"},
Assert: false, Assert: false,
Input: GenerateInputJSON(customizeInput(func(user models.User) models.User { Input: GenerateInputJSON(customizeInput(func(user models.User) models.User {
user.Email = "john.wronglicence.doe@example.com" user.Email = "john.wronglicence.doe@example.com"
user.Licence = &models.Licence{ user.Licence = &models.Licence{
Number: "AAAA12345AA", Number: "",
ExpirationDate: time.Now().AddDate(1, 0, 0), ExpirationDate: time.Now().AddDate(1, 0, 0),
IssuedDate: time.Now().AddDate(-1, 0, 0), IssuedDate: time.Now().AddDate(-1, 0, 0),
} }

View File

@@ -5,7 +5,9 @@ import (
) )
type Licence struct { type Licence struct {
ID uint `json:"id" gorm:"primaryKey"` ID uint `json:"id"`
CreatedAt time.Time
UpdatedAt time.Time
Status int8 `json:"status" binding:"omitempty,number"` Status int8 `json:"status" binding:"omitempty,number"`
Number string `json:"number" binding:"omitempty,safe_content"` Number string `json:"number" binding:"omitempty,safe_content"`
IssuedDate time.Time `json:"issued_date" binding:"omitempty"` IssuedDate time.Time `json:"issued_date" binding:"omitempty"`

View File

@@ -60,6 +60,7 @@ func (ur *UserRepository) UpdateUser(user *models.User) (*models.User, error) {
if err := tx.Preload(clause.Associations). if err := tx.Preload(clause.Associations).
Preload("Membership"). Preload("Membership").
Preload("Membership.SubscriptionModel"). Preload("Membership.SubscriptionModel").
Preload("Licence").
Preload("Licence.Categories"). Preload("Licence.Categories").
First(&existingUser, user.ID).Error; err != nil { First(&existingUser, user.ID).Error; err != nil {
return err return err
@@ -88,6 +89,13 @@ func (ur *UserRepository) UpdateUser(user *models.User) (*models.User, error) {
} }
} }
// Replace categories if Licence and Categories are provided
if user.Licence != nil {
if err := tx.Model(&user.Licence).Association("Categories").Replace(user.Licence.Categories); err != nil {
return err
}
}
return nil return nil
}) })