import datetime
from typing import ClassVar
from .base_nodes import CCBaseNode

class CalendarNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = 'Calendar'
    name: str
    start_date: datetime.date
    end_date: datetime.date

class CalendarYearNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = 'CalendarYear'
    year: str

class CalendarMonthNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = 'CalendarMonth'
    year: str
    month: str
    month_name: str

class CalendarWeekNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = 'CalendarWeek'
    start_date: datetime.date
    week_number: str
    iso_week: str  # ISO 8601 week

class CalendarDayNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = 'CalendarDay'
    date: datetime.date
    day_of_week: str
    iso_day: str  # ISO 8601 day
    
class CalendarTimeChunkNode(CCBaseNode):
    __primarylabel__: ClassVar[str] = 'CalendarTimeChunk'
    start_time: datetime.time
    end_time: datetime.time
