Commit f27e5829 by arjun.b

delete a ticket

parent b8e7b169
from sqlalchemy import create_engine from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base, Session from sqlalchemy.orm import sessionmaker, declarative_base, Session
from scripts.database.model import Base
from scripts.logging.logging import logger from scripts.logging.logging import logger
...@@ -8,6 +9,7 @@ def db_connect(): ...@@ -8,6 +9,7 @@ def db_connect():
try: try:
engine = create_engine("postgresql://postgres:123@localhost/ticket") engine = create_engine("postgresql://postgres:123@localhost/ticket")
Session=sessionmaker(autocommit=False, autoflush=False, bind=engine) Session=sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base.metadata.create_all(engine)
session = Session() session = Session()
return session return session
except Exception as e: except Exception as e:
......
class EndPoints: class EndPoints:
root="/" root = "/"
publish="/" book_ticket = "/book ticket"
\ No newline at end of file delete_a_ticket = "/delete_ticket{ticket_id}"
import redis
from scripts.constants.db_connect import db_connect from scripts.constants.db_connect import db_connect
from scripts.database.model import Ticket from scripts.database.model import Ticket
from scripts.logging.logging import logger from scripts.logging.logging import logger
import redis
import pickle
class Book_Ticket: class Book_Ticket:
...@@ -41,15 +40,19 @@ class Book_Ticket: ...@@ -41,15 +40,19 @@ class Book_Ticket:
# save ticket details to database # save ticket details to database
save_ticket = Ticket( save_ticket = Ticket(
mobile_no=ticket.mobile_no, mobile_no=ticket.mobile_no,
pref_class=ticket.pref_class, preferred_class=ticket.pref_class,
no_of_ticket=ticket.no_of_ticket, no_of_tickets=ticket.no_of_ticket,
seat_no=ticket.seat_no,
age=ticket.age age=ticket.age
) )
# booked_ticket = Booking(
# booking_id=Ticket.booking_id,
# row_no=1,
# seat_no=12
# )
session = db_connect() session = db_connect()
session.add(save_ticket) session.add(save_ticket)
r.hset(ticket.pref_class, pickle.loads(save_ticket))
session.commit() session.commit()
booking.append(ticket)
print("ticket booked successfully") print("ticket booked successfully")
except Exception as e: 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 from sqlalchemy.orm import declarative_base
Base = declarative_base() Base = declarative_base()
...@@ -6,9 +7,20 @@ Base = declarative_base() ...@@ -6,9 +7,20 @@ Base = declarative_base()
class Ticket(Base): class Ticket(Base):
__tablename__ = "ticket_details" __tablename__ = "ticket_details"
booking_id = Column(Integer, primary_key=True)
# id = Column(Integer, primary_key=True, server_default=text("SERIAL")) # __table_args__ = (UniqueConstraint("booking_id", "booking_id"))
mobile_no = Column(String, primary_key=True, unique=True, index=True) mobile_no = Column(String, unique=True)
pref_class = Column(String) preferred_class = Column(String)
no_of_ticket = Column(Integer) no_of_tickets = Column(Integer)
seat_no = Column(String)
date_of_purchase = Column(Date, default=date.today())
age = Column(Integer) 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 pydantic import BaseModel
from sqlalchemy import String
class Film_Ticket(BaseModel): class Film_Ticket(BaseModel):
mobile_no: int mobile_no: int
pref_class: str pref_class: str
no_of_ticket: int 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 ...@@ -2,7 +2,8 @@ from fastapi import APIRouter
from scripts.constants.end_points import EndPoints from scripts.constants.end_points import EndPoints
from scripts.core.handlers.book_ticket import Book_Ticket 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() router = APIRouter()
...@@ -12,7 +13,14 @@ def root(): ...@@ -12,7 +13,14 @@ def root():
return {"data": "ticket booking task"} 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): def book_ticket(ticket: Film_Ticket):
Book_Ticket.book_ticket(ticket) Book_Ticket.book_ticket(ticket)
return {"data": "ticket booked successfully"} 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