LCOV - code coverage report
Current view: top level - shared/valerr - validation.go Coverage Total Hit
Test: coverage.lcov Lines: 0.0 % 18 0
Test Date: 2026-04-14 06:42:22 Functions: - 0 0

            Line data    Source code
       1              : // Package valerr は、ドメイン層で発生する値検証エラーを表現するための共通インターフェースおよび型定義を提供します。
       2              : // バリデーションエラーの集約やエラーメッセージ整形などに利用します。
       3              : package valerr
       4              : 
       5              : // FieldError は 1 フィールドに対する単一の検証エラーを表します。
       6              : // JSON では {"code": "...", "params": {...}} の形でシリアライズされます。
       7              : type FieldError struct {
       8              :         // Code はエラーコードです (例: "validation.rules.required", "validation.rules.duplicate" など)。
       9              :         Code string `json:"code"`
      10              : 
      11              :         // Params はメッセージ組み立てや i18n に利用する追加パラメータです。
      12              :         // 例: {"field": "domain.address.purposeId.label"}
      13              :         Params map[string]any `json:"params,omitempty"`
      14              : }
      15              : 
      16              : // ValidationErrors はフィールド名ごとの検証エラー一覧を表します。
      17              : // JSON では {"domain.address.purposeId": [ {..}, {..} ]} のようにシリアライズされます。
      18              : type ValidationErrors map[string][]FieldError
      19              : 
      20              : // New は空の ValidationErrors を返します。
      21            0 : func New() ValidationErrors {
      22            0 :         return make(ValidationErrors)
      23            0 : }
      24              : 
      25              : // Add は指定フィールドに FieldError を追加します。
      26            0 : func (ve ValidationErrors) Add(field, code string, params map[string]any) {
      27            0 :         ve[field] = append(ve[field], FieldError{
      28            0 :                 Code:   code,
      29            0 :                 Params: params,
      30            0 :         })
      31            0 : }
      32              : 
      33              : // ToDetails は app エラーの Details フィールドに設定可能な形式へ変換します。
      34              : // apperr.New の第3引数 (details map[string]any) にそのまま渡すために利用します。
      35            0 : func (ve ValidationErrors) ToDetails() map[string]any {
      36            0 :         if ve == nil {
      37            0 :                 return nil
      38            0 :         }
      39              : 
      40            0 :         details := make(map[string]any, len(ve))
      41            0 :         for k, v := range ve {
      42            0 :                 details[k] = v
      43            0 :         }
      44            0 :         return details
      45              : }
        

Generated by: LCOV version 2.3.1-1