Line data Source code
1 : package meta
2 :
3 : import (
4 : "context"
5 :
6 : "resume/internal/domain/entity"
7 : vo "resume/internal/domain/valueobject/i18n"
8 : "resume/internal/shared/util"
9 : )
10 :
11 : // ListExperience は経験年数の一覧を取得します
12 : func (uc *Interactor) ListExperience(
13 : ctx context.Context,
14 : in ListExperienceInput,
15 0 : ) (ListExperienceOutput, error) {
16 0 : var list []entity.Experience
17 0 :
18 0 : if err := uc.tx.Do(ctx, func(txCtx context.Context) error {
19 0 : var err error
20 0 : list, err = uc.exRepo.ListIsActive(txCtx)
21 0 : return err
22 0 : }); err != nil {
23 0 : return ListExperienceOutput{}, err
24 0 : }
25 :
26 0 : out := assembleExperience(list, func(code, fallback string) (string, string) {
27 0 : label := util.ToCamel("master.experience." + code)
28 0 : key := vo.NewKey("master.experience." + code)
29 0 : translatedText, ok := uc.translator.Translate(vo.NewLocale(in.Locale), key)
30 0 : if !ok {
31 0 : if fallback != "" {
32 0 : return label, fallback
33 0 : }
34 0 : return label, code
35 : }
36 0 : return label, translatedText
37 : })
38 0 : return out, nil
39 : }
|