Line data Source code
1 : // Package auth は、entity↔DTO の詰め替え(アセンブラ)を提供します。
2 : package auth
3 :
4 : import "resume/internal/shared/util"
5 :
6 : // NOTE: entity は domain/entity の型(User, Identity)を使用します。
7 :
8 0 : func toUserOutput(u *User, ps []*Identity) UserOutput {
9 0 : out := UserOutput{
10 0 : ID: uint64(u.ID),
11 0 : UID: u.UID,
12 0 : Email: u.Email,
13 0 : EmailVerified: u.EmailVerified,
14 0 : DisplayName: u.DisplayName,
15 0 : PhotoURL: u.PhotoURL,
16 0 : LastLoginAt: u.LastLoginAt,
17 0 : CreatedAt: u.CreatedAt,
18 0 : UpdatedAt: u.UpdatedAt,
19 0 : Providers: make([]ProviderOutput, 0, len(ps)),
20 0 : }
21 0 : for _, p := range ps {
22 0 : out.Providers = append(out.Providers, ProviderOutput{
23 0 : ID: uint64(p.ID),
24 0 : Provider: p.Provider,
25 0 : ProviderUserID: p.ProviderUserID,
26 0 : ProviderDisplayName: p.ProviderDisplayName,
27 0 : EmailAtSignup: util.Clone(p.EmailAtSignup),
28 0 : LinkedAt: p.CreatedAt,
29 0 : })
30 0 : }
31 0 : return out
32 : }
|