LCOV - code coverage report
Current view: top level - adapter/validation/errors - convert.go Coverage Total Hit
Test: coverage.lcov Lines: 86.7 % 15 13
Test Date: 2026-04-14 06:42:22 Functions: - 0 0

            Line data    Source code
       1              : // Package errors は go-playground/validator/v10 の ValidationErrors を
       2              : // API レスポンスの details 形式(フィールドごとのタグ/パラメータ/値)へ変換する
       3              : // ユーティリティを提供します。
       4              : package errors
       5              : 
       6              : import (
       7              :         "errors"
       8              : 
       9              :         v10 "github.com/go-playground/validator/v10"
      10              : )
      11              : 
      12              : // ToDetails は、バリデーションエラーを API レスポンスの details 形式に変換します。
      13              : // 各フィールドに対応するタグ名(tag)、パラメータ(param)、入力値(value)を含むマップを返します。
      14              : // ValidationErrors でない場合は、エラーメッセージを単一要素のマップ {"error": "..."} として返します。
      15            1 : func ToDetails(err error) map[string]any {
      16            1 :         var verr v10.ValidationErrors
      17            1 :         if !errors.As(err, &verr) {
      18            0 :                 return map[string]any{"error": err.Error()}
      19            0 :         }
      20            1 :         out := make(map[string]any, len(verr))
      21            2 :         for _, fe := range verr {
      22            1 :                 // fe.Field() は構造体のフィールド名(JSON名にしたければタグから引く実装を足す)
      23            1 :                 out[fe.Field()] = map[string]any{
      24            1 :                         "tag":   fe.Tag(),   // e.g. "required", "max", "jp_postal"
      25            1 :                         "param": fe.Param(), // e.g. "160"
      26            1 :                         "value": fe.Value(),
      27            1 :                 }
      28            1 :         }
      29            1 :         return out
      30              : }
        

Generated by: LCOV version 2.3.1-1