go-clean-template

Форк
0
47 строк · 1.2 Кб
1
package usecase
2

3
import (
4
	"context"
5
	"fmt"
6

7
	"github.com/evrone/go-clean-template/internal/entity"
8
)
9

10
// TranslationUseCase -.
11
type TranslationUseCase struct {
12
	repo   TranslationRepo
13
	webAPI TranslationWebAPI
14
}
15

16
// New -.
17
func New(r TranslationRepo, w TranslationWebAPI) *TranslationUseCase {
18
	return &TranslationUseCase{
19
		repo:   r,
20
		webAPI: w,
21
	}
22
}
23

24
// History - getting translate history from store.
25
func (uc *TranslationUseCase) History(ctx context.Context) ([]entity.Translation, error) {
26
	translations, err := uc.repo.GetHistory(ctx)
27
	if err != nil {
28
		return nil, fmt.Errorf("TranslationUseCase - History - s.repo.GetHistory: %w", err)
29
	}
30

31
	return translations, nil
32
}
33

34
// Translate -.
35
func (uc *TranslationUseCase) Translate(ctx context.Context, t entity.Translation) (entity.Translation, error) {
36
	translation, err := uc.webAPI.Translate(t)
37
	if err != nil {
38
		return entity.Translation{}, fmt.Errorf("TranslationUseCase - Translate - s.webAPI.Translate: %w", err)
39
	}
40

41
	err = uc.repo.Store(context.Background(), translation)
42
	if err != nil {
43
		return entity.Translation{}, fmt.Errorf("TranslationUseCase - Translate - s.repo.Store: %w", err)
44
	}
45

46
	return translation, nil
47
}
48

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.