from dataclasses import dataclass, field
from datetime import datetime
from pathlib import Path
from typing import List, Optional
from models.astro_object import AstroObject


@dataclass
class Session:
    """Модель сессии наблюдения"""
    camera: str
    optics: str
    start_time: datetime
    end_time: Optional[datetime] = None
    objects: List[AstroObject] = field(default_factory=list)
    session_folder: Optional[Path] = None

    def add_object(self, astro_object: AstroObject):
        self.objects.append(astro_object)

    def get_current_object(self) -> Optional[AstroObject]:
        return self.objects[-1] if self.objects else None

    def get_session_name(self) -> str:
        return f"AstroSession_{self.start_time.strftime('%Y-%m-%d')}"

    def finish(self):
        self.end_time = datetime.now()

    def is_active(self) -> bool:
        return self.end_time is None