LCOV - code coverage report
Current view: top level - adapter/http/dto/request - patch_profile_request.go Coverage Total Hit
Test: coverage.lcov Lines: 0.0 % 15 0
Test Date: 2026-04-14 06:42:22 Functions: - 0 0

            Line data    Source code
       1              : // Package request は、HTTP リクエストから受け取るデータ転送オブジェクト (DTO) を定義します。
       2              : // このパッケージでは、主に controller 層で Gin の Bind 機能によって入力を構造体にマッピングし、
       3              : // validation・正規化を行うための型を提供します。
       4              : package request
       5              : 
       6              : import (
       7              :         "strings"
       8              : 
       9              :         vo "resume/internal/usecase/valueobject"
      10              : )
      11              : 
      12              : // PatchProfileRequest は、プロフィール情報(氏名・生年月日・性別など)の
      13              : // 更新リクエストを表す構造体です。
      14              : //
      15              : // PATCH /fl/profile/personal のリクエストボディに対応し、
      16              : // JSON → DTO へのバインド時に Gin の binding タグによって
      17              : // 必須項目やオプショナル項目のバリデーションを行います。
      18              : //
      19              : // - `BirthDate` / `GenderID` / `Initial` は省略可能です。
      20              : // JSON にフィールドが存在しない場合は Set=false となり、ユースケース層で「更新しない」と判断されます。
      21              : // JSON に null が指定された場合は Set=true, Value=nil となり、「値をクリアする」として扱われます。
      22              : //
      23              : // Normalize メソッドによって、入力値の前後スペース除去などの軽微な正規化を行います。
      24              : type PatchProfileRequest struct {
      25              :         FamilyName     string                `json:"family_name" binding:"required"`
      26              :         GivenName      string                `json:"given_name" binding:"required"`
      27              :         FamilyNameKana string                `json:"family_name_kana" binding:"required"`
      28              :         GivenNameKana  string                `json:"given_name_kana" binding:"required"`
      29              :         BirthDate      vo.PatchValue[string] `json:"birth_date" binding:"omitempty"`
      30              :         GenderID       vo.PatchValue[uint8]  `json:"gender_id" binding:"omitempty"`
      31              :         Initial        vo.PatchValue[string] `json:"initial" binding:"omitempty"`
      32              : }
      33              : 
      34              : // Normalize はハンドラ層で Bind 後に呼ぶ
      35            0 : func (r *PatchProfileRequest) Normalize() {
      36            0 :         trim := func(p *string) {
      37            0 :                 if p == nil {
      38            0 :                         return
      39            0 :                 }
      40            0 :                 s := strings.TrimSpace(*p)
      41            0 :                 if s == "" {
      42            0 :                         *p = ""
      43            0 :                 } else {
      44            0 :                         *p = s
      45            0 :                 }
      46              :         }
      47              : 
      48            0 :         trim(&r.FamilyName)
      49            0 :         trim(&r.GivenName)
      50            0 :         trim(&r.FamilyNameKana)
      51            0 :         trim(&r.GivenNameKana)
      52              : 
      53              :         //trim(r.BirthDate)
      54              :         //trim(r.GenderID)
      55              :         //trim(r.Initial)
      56              : }
        

Generated by: LCOV version 2.3.1-1