Files
GoMembership/go-backend/internal/validation/membership_validation.go
2025-03-11 20:46:45 +01:00

41 lines
1.3 KiB
Go

package validation
import (
"GoMembership/internal/models"
"GoMembership/pkg/errors"
"GoMembership/pkg/logger"
"github.com/go-playground/validator/v10"
"gorm.io/gorm"
)
func validateMembership(db *gorm.DB, user *models.User, sl validator.StructLevel) {
if user.Membership.SubscriptionModel.RequiredMembershipField != "" {
switch user.Membership.SubscriptionModel.RequiredMembershipField {
case "ParentMembershipID":
if err := CheckParentMembershipID(db, user); err != nil {
logger.Error.Printf("Error ParentMembershipValidation: %v", err.Error())
sl.ReportError(user.Membership.ParentMembershipID, user.Membership.SubscriptionModel.RequiredMembershipField,
"RequiredMembershipField", "invalid", "")
}
default:
logger.Error.Printf("Error no matching RequiredMembershipField: %v", errors.ErrInvalidValue.Error())
sl.ReportError(user.Membership.ParentMembershipID, user.Membership.SubscriptionModel.RequiredMembershipField,
"RequiredMembershipField", "not_implemented", "")
}
}
}
func CheckParentMembershipID(db *gorm.DB, user *models.User) error {
if user.Membership.ParentMembershipID == 0 {
return errors.ValErrParentIDNotSet
} else {
var parent models.User
if err := parent.FromID(db, &user.Membership.ParentMembershipID); err != nil {
return errors.ValErrParentIDNotFound
}
}
return nil
}