func()

in pkg/admin/services/mock_rule_service_impl.go [34:64]


func (m *MockRuleServiceImpl) CreateOrUpdateMockRule(mockRule *model.MockRule) error {
	if mockRule.ServiceName == "" || mockRule.MethodName == "" || mockRule.Rule == "" {
		return nil
	}

	existRule, err := m.MockRuleMapper.FindByServiceNameAndMethodName(context.TODO(), mockRule.ServiceName, mockRule.MethodName)
	if err != nil {
		m.Logger.Error(err.Error())
		return err
	}

	isExist := existRule.ID != 0
	// check if we can save or update the rule, we need keep the serviceName + methodName is unique.
	if isExist {
		if mockRule.ID != existRule.ID {
			err := errors.New("service name and method name must be unique")
			m.Logger.Error(err.Error())
			return err
		}
		if err := m.MockRuleMapper.Update(mockRule.ToMockRuleEntity()); err != nil {
			m.Logger.Error(err.Error())
			return err
		}
	} else {
		if err := m.MockRuleMapper.Create(mockRule.ToMockRuleEntity()); err != nil {
			m.Logger.Error(err.Error())
			return err
		}
	}
	return nil
}