From a3cd42943798ef2f12f9a7fd7b08ffb3cdfc84f4 Mon Sep 17 00:00:00 2001 From: BimaAdi Date: Fri, 5 Jun 2026 22:18:17 +0700 Subject: [PATCH] add feature ticket order --- ...620f0b3ec868_add_column_order_on_ticket.py | 28 +++++++++++++++++++ models/Ticket.py | 1 + repository/ticket.py | 2 +- routes/tests/test_ticket.py | 9 +++--- 4 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 migrations/versions/2026_06_05_2156-620f0b3ec868_add_column_order_on_ticket.py diff --git a/migrations/versions/2026_06_05_2156-620f0b3ec868_add_column_order_on_ticket.py b/migrations/versions/2026_06_05_2156-620f0b3ec868_add_column_order_on_ticket.py new file mode 100644 index 0000000..0cb4245 --- /dev/null +++ b/migrations/versions/2026_06_05_2156-620f0b3ec868_add_column_order_on_ticket.py @@ -0,0 +1,28 @@ +"""add column order on ticket + +Revision ID: 620f0b3ec868 +Revises: 10419d21e3d0 +Create Date: 2026-06-05 21:56:37.519244 + +""" + +from typing import Sequence, Union + +from alembic import op +import sqlalchemy as sa + +# revision identifiers, used by Alembic. +revision: str = "620f0b3ec868" +down_revision: Union[str, None] = "10419d21e3d0" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + """Upgrade schema.""" + op.add_column("ticket", sa.Column("order", sa.Integer(), nullable=True)) + + +def downgrade() -> None: + """Downgrade schema.""" + op.drop_column("ticket", "order") diff --git a/models/Ticket.py b/models/Ticket.py index b5e27bc..6bc58cb 100644 --- a/models/Ticket.py +++ b/models/Ticket.py @@ -18,3 +18,4 @@ class Ticket(Base): is_sold_out: Mapped[bool] = mapped_column("is_sold_out", Boolean, default=False) is_active: Mapped[bool] = mapped_column("is_active", Boolean, default=True) description: Mapped[str] = mapped_column("description", String, nullable=True) + order: Mapped[int] = mapped_column("order", Integer, nullable=True) diff --git a/repository/ticket.py b/repository/ticket.py index de22672..75f547e 100644 --- a/repository/ticket.py +++ b/repository/ticket.py @@ -4,7 +4,7 @@ def get_active_tickets(db: Session): - return db.query(Ticket).filter(Ticket.is_active).all() + return db.query(Ticket).filter(Ticket.is_active).order_by(Ticket.order.asc()).all() def get_active_ticket_by_id(db: Session, ticket_id: str): diff --git a/routes/tests/test_ticket.py b/routes/tests/test_ticket.py index 9a5b0f4..b28d53f 100644 --- a/routes/tests/test_ticket.py +++ b/routes/tests/test_ticket.py @@ -86,11 +86,10 @@ def test_list_ticket(self): assert response.status_code == 200 data = response.json() assert "results" in data - assert any( - t["name"] == "Test Ticket" - and t.get("description") == "Ini deskripsi test ticket" - for t in data["results"] - ) + ordered_ticket = self.session.query(Ticket).order_by(Ticket.order.asc()).all() + ordered_ticket = [x.name for x in ordered_ticket] + ordered_result = [x["name"] for x in data["results"]] + self.assertListEqual(ordered_result, ordered_ticket) def test_get_my_ticket_without_payment(self): response = self.client.get(