from __future__ import annotations

from dataclasses import dataclass
from datetime import date
from pathlib import PurePosixPath

from src.organize.normalize import normalize_folder_component


@dataclass(frozen=True)
class FolderPath:
    region: str
    place: str
    venue: str
    year: str
    month: str

    def relpath(self) -> str:
        path = PurePosixPath(self.region, self.place, self.venue, self.year, self.month)
        return f"{path.as_posix()}/"


def build_folder_path(*, region: str, place: str, venue: str, event_date: date) -> FolderPath:
    return FolderPath(
        region=normalize_folder_component(region, label="region"),
        place=normalize_folder_component(place, label="place"),
        venue=normalize_folder_component(venue, label="venue"),
        year=f"{event_date.year:04d}",
        month=f"{event_date.month:02d}",
    )
