Files
phishingclub/backend/seed/role.go
2025-08-21 16:14:09 +02:00

49 lines
1.0 KiB
Go

package seed
import (
"context"
"github.com/go-errors/errors"
"github.com/google/uuid"
"github.com/phishingclub/phishingclub/data"
"github.com/phishingclub/phishingclub/errs"
"github.com/phishingclub/phishingclub/model"
"github.com/phishingclub/phishingclub/repository"
"gorm.io/gorm"
)
// SeedRoles seeds roles
func SeedRoles(roleRepository *repository.Role) error {
roles := []struct {
Name string
}{
{
Name: data.RoleSuperAdministrator,
},
{
Name: data.RoleCompanyUser,
},
}
for _, role := range roles {
id := uuid.New()
createRole := model.Role{
ID: id,
Name: role.Name,
}
r, err := roleRepository.GetByName(context.Background(), role.Name)
// if error is not found, create event type
if err != nil && !errors.Is(err, gorm.ErrRecordNotFound) {
return errors.Errorf("%w: %s", errs.ErrDBSeedFailure, err)
}
if r != nil {
continue
}
_, err = roleRepository.Insert(context.TODO(), &createRole)
if err != nil {
return errors.Errorf("%w: %s", errs.ErrDBSeedFailure, err)
}
}
return nil
}