Multiple implementations of the same back-end application. The aim is to provide quick, side-by-side comparisons of different technologies (languages, frameworks, libraries) while preserving consistent business logic across all implementations.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

65 lines
1.8 KiB

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
}