• Задача
  • Решение
  • Обсуждение

ThreeLayers: repo, service, handler

Стратегия «Полки»: repo создаёт сентинелы, service оборачивает через %w, handler различает через errors.Is. Реализуйте Get, GetFile и handle.

GolangРешение
func Get(id string) (string, error) {
	if id == "42" {
		return "данные 42", nil
	}
	return "", ErrNotFound
}

func GetFile(id string) (string, error) {
	data, err := Get(id)
	if err != nil {
		return "", fmt.Errorf("получить файл %s: %w", id, err)
	}
	return data, nil
}

func handle(id string) int {
	_, err := GetFile(id)
	if err != nil {
		if errors.Is(err, ErrNotFound) {
			return 404
		}
		return 500
	}
	return 200
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

00:00:00
Наш сайт собирает куки. Чтобы тебе было удобнее им пользоваться. Нажимая на кнопку, ты даёшь разрешение собирать куки