Line data Source code
1 : // Package license は 資格・免許 に関するユースケース(アプリケーションロジック)を提供します
2 : // ドメイン層のエンティティやリポジトリを操作し、アプリケーション全体で利用可能なビジネスフローを実装します
3 : package license
4 :
5 : import (
6 : "context"
7 :
8 : "resume/internal/domain/entity"
9 : )
10 :
11 : // CreateUserLicense は 資格・免許 を 作成 します
12 : func (uc *Interactor) CreateUserLicense(
13 : ctx context.Context,
14 : in CreateUserLicenseInput,
15 0 : ) (CreateUserLicenseOutput, error) {
16 0 : license := &entity.UserLicense{
17 0 : UserID: in.UserID,
18 0 : Name: in.Name,
19 0 : EventDate: in.EventDate,
20 0 : }
21 0 : var saved uint64
22 0 : err := uc.tx.Do(ctx, func(txCtx context.Context) error {
23 0 :
24 0 : count, err := uc.ulRepo.CountByUserID(txCtx, in.UserID)
25 0 : if err != nil {
26 0 : return err
27 0 : }
28 0 : license.SortOrder = count
29 0 :
30 0 : res, err := uc.ulRepo.Create(txCtx, license)
31 0 : if err != nil {
32 0 : return err
33 0 : }
34 0 : saved = res
35 0 : return nil
36 : })
37 0 : if err != nil {
38 0 : return CreateUserLicenseOutput{}, err
39 0 : }
40 0 : return CreateUserLicenseOutput{
41 0 : ID: saved,
42 0 : }, nil
43 : }
|