byceps/byceps

View on GitHub
byceps/services/ticketing/dbmodels/checkin.py

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
"""
byceps.services.ticketing.dbmodels.checkin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

:Copyright: 2014-2024 Jochen Kupperschmidt
:License: Revised BSD (see `LICENSE` file for details)
"""

from datetime import datetime
from uuid import UUID

from sqlalchemy.orm import Mapped, mapped_column

from byceps.database import db
from byceps.services.ticketing.models.ticket import TicketID
from byceps.services.user.models.user import UserID
from byceps.util.uuid import generate_uuid7


class DbTicketCheckIn(db.Model):
    """The check-in of a ticket."""

    __tablename__ = 'ticket_checkins'

    id: Mapped[UUID] = mapped_column(
        db.Uuid, default=generate_uuid7, primary_key=True
    )
    occurred_at: Mapped[datetime]
    ticket_id: Mapped[TicketID] = mapped_column(
        db.Uuid, db.ForeignKey('tickets.id'), index=True
    )
    initiator_id: Mapped[UserID] = mapped_column(
        db.Uuid, db.ForeignKey('users.id')
    )

    def __init__(
        self,
        occurred_at: datetime,
        ticket_id: TicketID,
        initiator_id: UserID,
    ) -> None:
        self.occurred_at = occurred_at
        self.ticket_id = ticket_id
        self.initiator_id = initiator_id