Commit f27e5829 by arjun.b

delete a ticket

parent b8e7b169
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base, Session
from scripts.database.model import Base
from scripts.logging.logging import logger
......@@ -8,6 +9,7 @@ def db_connect():
try:
engine = create_engine("postgresql://postgres:123@localhost/ticket")
Session=sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base.metadata.create_all(engine)
session = Session()
return session
except Exception as e:
......
class EndPoints:
root="/"
publish="/"
\ No newline at end of file
root = "/"
book_ticket = "/book ticket"
delete_a_ticket = "/delete_ticket{ticket_id}"
import redis
from scripts.constants.db_connect import db_connect
from scripts.database.model import Ticket
from scripts.logging.logging import logger
import redis
import pickle
class Book_Ticket:
......@@ -41,15 +40,19 @@ class Book_Ticket:
# save ticket details to database
save_ticket = Ticket(
mobile_no=ticket.mobile_no,
pref_class=ticket.pref_class,
no_of_ticket=ticket.no_of_ticket,
preferred_class=ticket.pref_class,
no_of_tickets=ticket.no_of_ticket,
seat_no=ticket.seat_no,
age=ticket.age
)
# booked_ticket = Booking(
# booking_id=Ticket.booking_id,
# row_no=1,
# seat_no=12
# )
session = db_connect()
session.add(save_ticket)
r.hset(ticket.pref_class, pickle.loads(save_ticket))
session.commit()
booking.append(ticket)
print("ticket booked successfully")
except Exception as e:
......
from scripts.constants.db_connect import db_connect
from scripts.database.model import Ticket
from scripts.logging.logging import logger
class db_handler:
@staticmethod
def delete_row(booking_id):
try:
# Soft delete a row in the ticket_details table
session = db_connect()
ticket = session.query(Ticket).filter(Ticket.booking_id == booking_id, Ticket.status == False).first()
if ticket is not None:
ticket.status = True
session.commit()
no_seats = ticket.seat_no
data_of_list = no_seats.split(",")
integer_list = [int(item) for item in data_of_list]
print("data_of_list")
data = {ticket.preferred_class: integer_list}
return {"message": "ticket deleted",
"Status": ticket.status,
"data": data
}
else:
print(f"Ticket with id {booking_id} is not exist")
logger.error(f"Ticket with id {booking_id} is not exist")
return {"message": "ticket not deleted", "status": "Ticket not exist", "data": ticket.seat_no}
except Exception as e:
logger.error(e)
from sqlalchemy import Column, String, Integer, text
from datetime import date
from sqlalchemy import Column, String, Integer, Boolean, Date, ForeignKey, UniqueConstraint
from sqlalchemy.orm import declarative_base
Base = declarative_base()
......@@ -6,9 +7,20 @@ Base = declarative_base()
class Ticket(Base):
__tablename__ = "ticket_details"
# id = Column(Integer, primary_key=True, server_default=text("SERIAL"))
mobile_no = Column(String, primary_key=True, unique=True, index=True)
pref_class = Column(String)
no_of_ticket = Column(Integer)
booking_id = Column(Integer, primary_key=True)
# __table_args__ = (UniqueConstraint("booking_id", "booking_id"))
mobile_no = Column(String, unique=True)
preferred_class = Column(String)
no_of_tickets = Column(Integer)
seat_no = Column(String)
date_of_purchase = Column(Date, default=date.today())
age = Column(Integer)
status = Column(Boolean, default=False)
# class Booking(Base):
# __tablename__ = "booking_details"
# booking_id = Column(Integer, ForeignKey('ticket_details.booking_id'))
# row_no = Column(Integer)
# seat_no = Column(Integer)
# status = Column(Boolean, default=False)
from pydantic import BaseModel
from sqlalchemy import String
class Film_Ticket(BaseModel):
mobile_no: int
pref_class: str
no_of_ticket: int
age:int
seat_no: str
age: int
class soft_delete(BaseModel):
ticket_id: int
......@@ -2,7 +2,8 @@ from fastapi import APIRouter
from scripts.constants.end_points import EndPoints
from scripts.core.handlers.book_ticket import Book_Ticket
from scripts.database.schema import Film_Ticket
from scripts.core.handlers.delete_ticket import db_handler
from scripts.database.schema import Film_Ticket, soft_delete
router = APIRouter()
......@@ -12,7 +13,14 @@ def root():
return {"data": "ticket booking task"}
@router.post("/book ticket", tags=["book tickets"])
@router.post(EndPoints.book_ticket, tags=["book tickets"])
def book_ticket(ticket: Film_Ticket):
Book_Ticket.book_ticket(ticket)
return {"data": "ticket booked successfully"}
@router.post(EndPoints.delete_a_ticket, tags=["delete a ticket"])
def delete_tickets(tid: int):
res=db_handler.delete_row(tid)
print(res)
return res
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment