package services import ( "context" "autostore/internal/application/interfaces" "autostore/internal/domain/entities" "autostore/internal/domain/value_objects" ) type UserInitializationService struct { userRepository interfaces.IUserRepository logger interfaces.ILogger } func NewUserInitializationService(userRepository interfaces.IUserRepository, logger interfaces.ILogger) *UserInitializationService { return &UserInitializationService{ userRepository: userRepository, logger: logger, } } func (s *UserInitializationService) InitializeDefaultUsers() error { defaultUsers := []struct { username string password string }{ {username: "admin", password: "admin"}, {username: "user", password: "user"}, } for _, userData := range defaultUsers { existingUser, err := s.userRepository.FindByUsername(context.Background(), userData.username) if err != nil { s.logger.Error(context.Background(), "Failed to check if user exists", "error", err, "username", userData.username) continue } if existingUser != nil { s.logger.Info(context.Background(), "Default user already exists", "username", userData.username) continue } userID, err := value_objects.NewRandomUserID() if err != nil { s.logger.Error(context.Background(), "Failed to generate user ID", "error", err) continue } user, err := entities.NewUser(userID, userData.username, userData.password) if err != nil { s.logger.Error(context.Background(), "Failed to create user entity", "error", err, "username", userData.username) continue } if err := s.userRepository.Save(context.Background(), user); err != nil { s.logger.Error(context.Background(), "Failed to save user", "error", err, "username", userData.username) continue } s.logger.Info(context.Background(), "Created default user", "username", userData.username) } return nil }