Line data Source code
1 : // Package profile は 認容済みユーザーユースケースの I/O を定義します
2 : package profile
3 :
4 : import vo "resume/internal/usecase/valueobject"
5 :
6 : // =======================
7 : // Query inputs
8 : // =======================
9 :
10 : // UserInput は 認証済みユーザーのUserIdを入力します
11 : type UserInput struct {
12 : UserID uint64
13 : }
14 :
15 : // UserIdentityInput は 認証済みユーザー検索のの入力項目を表す
16 : type UserIdentityInput struct {
17 : UserID uint64
18 : Page int
19 : PerPage int
20 : Sort string
21 : SortOrder string
22 : Query *string
23 : }
24 :
25 : // Offset は ページング機能のスタートを表す
26 0 : func (in UserIdentityInput) Offset() int {
27 0 : if in.PerPage <= 0 || in.Page < 1 || in.PerPage == -1 {
28 0 : return 0
29 0 : }
30 0 : return (in.Page - 1) * in.PerPage
31 : }
32 :
33 : // Limit は ページング機能の表示件数を表す
34 0 : func (in UserIdentityInput) Limit() int { return in.PerPage }
35 :
36 : // SortCol は ページング機能のソート項目を表す
37 0 : func (in UserIdentityInput) SortCol() string { return in.Sort }
38 :
39 : // Order は ページング機能の昇降順を表す
40 0 : func (in UserIdentityInput) Order() string { return in.SortOrder }
41 :
42 : // Q は 検索波他メータを表す
43 0 : func (in UserIdentityInput) Q() *string { return in.Query }
44 :
45 : // PatchUserProfileInput は 認証済みユーザー個人情報の入力項目を表す
46 : type PatchUserProfileInput struct {
47 : UserID uint64
48 : FamilyName string
49 : GivenName string
50 : FamilyNameKana string
51 : GivenNameKana string
52 : BirthDate vo.PatchValue[string]
53 : GenderID vo.PatchValue[uint8]
54 : Initial vo.PatchValue[string]
55 : }
56 :
57 : // CreateUserAddressInput は ユーザーの住所登録入力項目を表す
58 : type CreateUserAddressInput struct {
59 : UserID uint64
60 : PurposeID uint64 // address_purposes.id(TINYINT UNSIGNED)
61 : IsPrimary bool // 同一 (user_id, purpose_id) で true は最大 1 件
62 :
63 : // 位置情報(必須・任意の定義はマイグレーションに準拠)
64 : CountryCode string // CHAR(2) NOT NULL (ISO 3166-1 alpha-2)
65 : AdministrativeArea *string // VARCHAR(128) NULL
66 : Locality *string // VARCHAR(128) NULL
67 : DependentLocality *string // VARCHAR(128) NULL
68 : PostalCode *string // VARCHAR(32) NULL
69 : SortingCode *string // VARCHAR(32) NULL
70 :
71 : AddressLine1 string // VARCHAR(160) NOT NULL
72 : AddressLine2 *string // VARCHAR(160) NULL
73 : AddressLine3 *string // VARCHAR(160) NULL
74 :
75 : Latitude *float64 // DECIMAL(9,6) NULL
76 : Longitude *float64 // DECIMAL(9,6) NULL
77 : }
78 :
79 : // ListUserAddressInput は ユーザー住所一覧取得の入力項目を表します。
80 : type ListUserAddressInput struct {
81 : UserID uint64
82 : Page int
83 : PerPage int
84 : Sort string
85 : SortOrder string
86 :
87 : PurposeID *uint64
88 : //Country *string
89 : //City *string
90 : }
91 :
92 : // Offset は ページング機能のスタートを表す
93 0 : func (in ListUserAddressInput) Offset() int {
94 0 : if in.PerPage <= 0 || in.Page < 1 || in.PerPage == -1 {
95 0 : return 0
96 0 : }
97 0 : return (in.Page - 1) * in.PerPage
98 : }
99 :
100 : // Limit は ページング機能の表示件数を表す
101 0 : func (in ListUserAddressInput) Limit() int { return in.PerPage }
102 :
103 : // SortCol は ページング機能のソート項目を表す
104 0 : func (in ListUserAddressInput) SortCol() string { return in.Sort }
105 :
106 : // Order は ページング機能の昇降順を表す
107 0 : func (in ListUserAddressInput) Order() string { return in.SortOrder }
108 :
109 : // PurposeIDVal は 一覧検索仕様で利用する住所目的IDを返します。
110 0 : func (in ListUserAddressInput) PurposeIDVal() *uint64 { return in.PurposeID }
111 :
112 : // UpdateUserAddressInput は ユーザー住所更新の入力項目を表す
113 : // CreateUserAddressInput を埋め込むことで、バリデーションやマッピングを共通化する
114 : type UpdateUserAddressInput struct {
115 : AddressID uint64
116 : CreateUserAddressInput
117 : }
118 :
119 : // DeleteUserAddressInput は ユーザー住所の入力項目を表す
120 : // 削除時に最低限のDTOでユーザー自身の住所かどうかを表す
121 : type DeleteUserAddressInput struct {
122 : UserID uint64
123 : AddressID uint64
124 : }
125 :
126 : // DetailUserAddressInput は ユーザー住所の入力項目を表す
127 : // 詳細取得時に最低限のDTOでユーザー自身の住所かどうかを表す
128 : type DetailUserAddressInput struct {
129 : UserID uint64
130 : AddressID uint64
131 : }
|