go-clean-template
47 строк · 1.2 Кб
1package usecase
2
3import (
4"context"
5"fmt"
6
7"github.com/evrone/go-clean-template/internal/entity"
8)
9
10// TranslationUseCase -.
11type TranslationUseCase struct {
12repo TranslationRepo
13webAPI TranslationWebAPI
14}
15
16// New -.
17func New(r TranslationRepo, w TranslationWebAPI) *TranslationUseCase {
18return &TranslationUseCase{
19repo: r,
20webAPI: w,
21}
22}
23
24// History - getting translate history from store.
25func (uc *TranslationUseCase) History(ctx context.Context) ([]entity.Translation, error) {
26translations, err := uc.repo.GetHistory(ctx)
27if err != nil {
28return nil, fmt.Errorf("TranslationUseCase - History - s.repo.GetHistory: %w", err)
29}
30
31return translations, nil
32}
33
34// Translate -.
35func (uc *TranslationUseCase) Translate(ctx context.Context, t entity.Translation) (entity.Translation, error) {
36translation, err := uc.webAPI.Translate(t)
37if err != nil {
38return entity.Translation{}, fmt.Errorf("TranslationUseCase - Translate - s.webAPI.Translate: %w", err)
39}
40
41err = uc.repo.Store(context.Background(), translation)
42if err != nil {
43return entity.Translation{}, fmt.Errorf("TranslationUseCase - Translate - s.repo.Store: %w", err)
44}
45
46return translation, nil
47}
48