from abc import ABC
from datetime import datetime
from typing import Optional
from uuid import UUID

from pydantic import BaseModel

from app.domain.models.Invitasjon import InvitasjonStatus
from app.routers.dto.Overforingspakke import OverforingspakkeStatusRead


class InvitasjonBase(BaseModel, ABC):
    """
    Abstract base class for Invitasjon
    """
    ekstern_id: UUID
    arkivuttrekk_id: int
    status: InvitasjonStatus
    avgiver_epost: str


class InvitasjonRead(InvitasjonBase):
    """
    Used as the response model for Invitasjon.
    Contains information about sent invitations.
    """
    id: int
    opprettet: datetime
    overforingspakke: Optional[OverforingspakkeStatusRead]

    class Config:
        orm_mode = True

from abc import ABC
from datetime import datetime
from typing import Optional
from uuid import UUID

from pydantic import BaseModel

from app.domain.models.Invitasjon import InvitasjonStatus
from app.routers.dto.Overforingspakke import OverforingspakkeStatusRead


class InvitasjonBase(BaseModel, ABC):
    """
    Abstract base class for Invitasjon
    """
    ekstern_id: UUID
    arkivuttrekk_id: int
    status: InvitasjonStatus
    avgiver_epost: str


class InvitasjonRead(InvitasjonBase):
    """
    Used as the response model for Invitasjon.
    Contains information about sent invitations.
    """
    id: int
    opprettet: datetime
    overforingspakke: Optional[OverforingspakkeStatusRead]

    class Config:
        orm_mode = True

Abstract base class for Invitasjon Used as the response model for Invitasjon.     Contains information about sent invitations.