"""データモデル定義"""
from typing import List
from pydantic import BaseModel, field_validator, field_serializer
from datetime import datetime, date, time

# class CandidateDate(BaseModel):
#     """候補者の面接日程データモデル"""
#     full_name: str
#     interview_date: str

#     @field_validator('full_name')
#     @classmethod
#     def remove_spaces(cls, v):
#         """氏名からスペースを除去"""
#         return v.replace(' ', '').replace('　', '')  # 半角・全角スペース両方を除去


class CandidateDate(BaseModel):
    """候補者の面接日程データモデル"""
    full_name: str
    interview_day: date       # 日付を date 型で保持
    interview_start: time     # 開始時間を time 型で保持
    interview_end: time       # 終了時間を time 型で保持

    @field_validator('full_name')
    @classmethod
    def remove_spaces(cls, v):
        """氏名からスペースを除去"""
        return v.replace(' ', '').replace('　', '')  # 半角・全角スペース両方を除去

    # 出力時のフォーマット指定
    @field_serializer('interview_day')
    def serialize_day(self, v: date, _info):
        return v.strftime('%Y-%m-%d')  # 例: 2025-10-10

    @field_serializer('interview_start', 'interview_end')
    def serialize_time(self, v: time, _info):
        return v.strftime('%H:%M:%S')  # 例: 17:00:00


class CandidateDates(BaseModel):
    """複数の候補者データを格納するモデル"""
    candidates: List[CandidateDate]