Line data Source code
1 : // Package request は リクエスト DTO 関連の定義を提供します
2 : package request
3 :
4 : import "strings"
5 :
6 : // ListUserSkillRequest はユーザスキル一覧取得リクエストのDTOです
7 : type ListUserSkillRequest struct {
8 : ListPagingQuery
9 : Sort string `form:"sort" binding:"omitempty,sort_key=skills"`
10 : SkillCategoryID *uint64 `form:"skill_category_id" json:"skill_category_id" binding:"omitempty"`
11 : SkillLevelID *uint64 `form:"skill_level_id" json:"skill_level_id" binding:"omitempty"`
12 : ExperienceID *uint64 `form:"experience_id" json:"experience_id" binding:"omitempty"`
13 : SkillNameNorm *string `form:"skill_name_norm" json:"skill_name_norm" binding:"omitempty,min=1,max=200"`
14 : }
15 :
16 : // Normalize はリクエストDTOの値を正規化します
17 0 : func (r *ListUserSkillRequest) Normalize() {
18 0 : r.ListPagingQuery.Normalize()
19 0 : // Sort / Order の正規化(あなたの実装があるならそちら優先)
20 0 : r.Sort = strings.TrimSpace(r.Sort)
21 0 : if r.Sort == "" {
22 0 : r.Sort = "sort_order"
23 0 : }
24 :
25 : // ★本題:skill name
26 0 : if r.SkillNameNorm != nil {
27 0 : s := strings.TrimSpace(*r.SkillNameNorm)
28 0 : if s == "" {
29 0 : // 空文字は「未指定扱い」にする
30 0 : r.SkillNameNorm = nil
31 0 : } else {
32 0 : // 正規化後の値を戻す
33 0 : r.SkillNameNorm = &s
34 0 : }
35 : }
36 : }
|