Line data Source code
1 : // Package meta は、職域のメタ情報を扱うユースケースを提供します。
2 : package meta
3 :
4 : import (
5 : "context"
6 :
7 : "resume/internal/domain/entity"
8 : vo "resume/internal/domain/valueobject/i18n"
9 : "resume/internal/shared/util"
10 : )
11 :
12 : // ListOccupation は 職業一覧を取得します
13 : func (uc *Interactor) ListOccupation(
14 : ctx context.Context,
15 : in ListOccupationInput,
16 0 : ) (ListOccupationOutput, error) {
17 0 : var list []entity.Occupation
18 0 :
19 0 : if err := uc.tx.Do(ctx, func(txCtx context.Context) error {
20 0 : var err error
21 0 : list, err = uc.ocRepo.ListIsActive(txCtx)
22 0 : return err
23 0 : }); err != nil {
24 0 : return ListOccupationOutput{}, err
25 0 : }
26 :
27 0 : out := assembleOccupation(list, func(code, fallback string) (string, string) {
28 0 : label := util.ToCamel("master.occupation." + code)
29 0 : key := vo.NewKey("master.occupation." + code)
30 0 :
31 0 : translatedText, ok := uc.translator.Translate(vo.NewLocale(in.Locale), key)
32 0 : if !ok {
33 0 : // fallback(YAML未定義なら DisplayName または code を返す)
34 0 : if fallback != "" {
35 0 : return label, fallback
36 0 : }
37 0 : return label, code
38 : }
39 0 : return label, translatedText
40 : })
41 0 : return out, nil
42 : }
|