Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hw09 struct validator #9

Merged
merged 22 commits into from
Dec 25, 2024
Merged

Hw09 struct validator #9

merged 22 commits into from
Dec 25, 2024

Conversation

DimVlas
Copy link
Owner

@DimVlas DimVlas commented Dec 17, 2024

Домашнее задание №9 «Валидатор структур»

Чек-лист студента (Что это?)

Критерии оценки

  • Пайплайн зелёный - 3 балла
  • Добавлены юнит-тесты - до 4 баллов
  • Понятность и чистота кода - до 3 баллов

Зачёт от 7 баллов

Copy link
Collaborator

@agneum agneum left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо за выполненное задание. Хорошая работа
Итого: 10 баллов из 10. Принято

var (
// целое не может быть меньше условия.
ErrIntCantBeLess = errors.New("cannot be less")
// целое не содержит совпадений с регулярным выражением.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Комментарий не совпадает с содержимым переменной


func (v ValidationErrors) Error() string {
cnt := len(v)
if cnt < 1 {
return ""
}
return fmt.Sprintf("%d structure validation errors found", cnt)

return func() string {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не понинаю, для чего обернуто в дополнительную функцию

Comment on lines +37 to +50
"len": func(v reflect.Value, condition string) error {
c, err := strconv.Atoi(condition)
if err != nil {
// 'condition' недопустимое условие для правила 'len'.
return fmt.Errorf("'%s' %w '%s'", condition, ErrInvalidCond, "len")
}

if utf8.RuneCountInString(v.String()) != c {
return ValidationError{
Err: fmt.Errorf("%w %s", ErrStrLenNotEqual, condition),
}
}
return nil
},
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно выделить в самостоятельные функции, чтобы удобнее читать мапу с набором доступных валидаторов

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это решение сознательное. Чтобы по типу и правилу сразу увидеть функцию-валидатор.

Comment on lines 95 to 97
if nested {
return validateStructF(fieldValue, rules)
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно перенести в цикл и убрать переменную nested

@DimVlas DimVlas merged commit cd987a5 into master Dec 25, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants