Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
redis_movie_booking
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
logesh.n
redis_movie_booking
Commits
532720bc
Commit
532720bc
authored
Feb 13, 2023
by
logesh.n
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
inserting into postgres
parent
3349b44f
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
188 additions
and
3 deletions
+188
-3
.idea/sonarlint/issuestore/index.pb
+10
-0
app.py
+7
-0
conf/application.conf
+2
-1
main.py
+81
-0
requirements.txt
+7
-2
scripts/config/databases/sqlalchemy/sqlalchemy_connection.py
+12
-0
scripts/core/handlers/insert_data.py
+69
-0
No files found.
.idea/sonarlint/issuestore/index.pb
View file @
532720bc
No preview for this file type
app.py
View file @
532720bc
import
uvicorn
if
__name__
==
"__main__"
:
try
:
uvicorn
.
run
(
"main:app"
,
port
=
8000
)
except
Exception
as
e
:
print
(
e
)
conf/application.conf
View file @
532720bc
...
@@ -11,8 +11,9 @@ redis_database_two = 2
...
@@ -11,8 +11,9 @@ redis_database_two = 2
redis_port
=
6379
redis_port
=
6379
[
postgres
]
[
postgres
]
postgres_port
=
543
3
postgres_port
=
543
2
postgres_password
=
admin
postgres_password
=
admin
postgres_username
=
postgres
postgres_username
=
postgres
postgres_host
=
localhost
postgres_host
=
localhost
postgres_database
=
postgres
postgres_database
=
postgres
main.py
0 → 100644
View file @
532720bc
from
fastapi
import
FastAPI
,
Header
,
HTTPException
import
paho.mqtt.client
as
mqtt
from
fastapi
import
FastAPI
,
HTTPException
from
scripts.core.handlers.insert_data
import
Film_Ticket
,
insert_data_into_db
# from scripts.core.handlers.insert_data import insert_data_into_db, BookingDetails
app
=
FastAPI
()
def
on_connect
(
client
,
userdata
,
flags
,
rc
):
print
(
"Connected with result code "
+
str
(
rc
))
client
.
subscribe
(
"book_movies/"
)
def
on_message
(
client
,
userdata
,
msg
):
print
(
msg
.
topic
+
" "
+
str
(
msg
.
payload
))
client
=
mqtt
.
Client
()
client
.
on_connect
=
on_connect
client
.
on_message
=
on_message
client
.
connect
(
"192.168.0.220"
,
1883
,
60
)
app
=
FastAPI
()
booked_seats
=
[]
@app.post
(
"/book_ticket"
)
async
def
book_ticket
(
class_type
:
str
,
number_of_tickets
:
int
,
seat_numbers
:
list
[
str
],
user_name
:
str
,
user_age
:
int
,
user_phone
:
int
):
if
class_type
not
in
[
"gold"
,
"silver"
]:
raise
HTTPException
(
status_code
=
400
,
detail
=
"Invalid class type"
)
if
len
(
seat_numbers
)
!=
number_of_tickets
:
raise
HTTPException
(
status_code
=
400
,
detail
=
"Number of seat numbers must match the number of tickets"
)
for
seat_number
in
seat_numbers
:
if
seat_number
in
booked_seats
:
raise
HTTPException
(
status_code
=
400
,
detail
=
f
"Seat number {seat_number} is already booked"
)
booked_seats
.
append
(
seat_number
)
# seat_list = f",{seat_number}"
payload
=
f
"{class_type} class ticket : booking: {number_of_tickets} tickets by {user_name} "
\
f
" for seat numbers {seat_numbers} having telephone number {user_phone} whose age is"
\
f
" {user_age}"
,
gold_payload
=
f
"class_type :{class_type} ,seat_number :{seat_numbers} "
silver_payload
=
f
"class_type :{class_type} ,seat_number :{seat_numbers} "
client
.
publish
(
"book_movies/"
,
str
(
payload
))
client
.
subscribe
(
"book_movies/#"
)
# print(type(user_phone), type(user_name), type(user_phone), type(user_age), type)
tickets
=
Film_Ticket
(
mobile_no
=
user_phone
,
preferred_class
=
class_type
,
no_of_tickets
=
number_of_tickets
,
seat_no
=
str
(
seat_numbers
),
age
=
user_age
)
print
(
tickets
.
age
)
# status = insert_data_into_db(tickets)
# if status:
# print("detials", tickets)
if
class_type
==
"silver"
:
client
.
publish
(
"silver_ticket_booking"
,
str
(
silver_payload
))
client
.
subscribe
(
"silver_ticket_booking"
)
elif
class_type
==
"gold"
:
client
.
publish
(
"gold_ticket_booking"
,
str
(
gold_payload
))
client
.
subscribe
(
"gold_ticket_booking"
)
return
{
"message"
:
"Ticket booking successful"
}
requirements.txt
View file @
532720bc
redis
~=4.5.1
redis
~=4.5.1
psycopg2
~=2.9.5
psycopg2
~=2.9.5
\ No newline at end of file
SQLAlchemy
~=2.0.3
paho-mqtt
~=1.6.1
fastapi
~=0.91.0
uvicorn
~=0.20.0
pydantic
~=1.10.4
\ No newline at end of file
scripts/config/databases/sqlalchemy/sqlalchemy_connection.py
0 → 100644
View file @
532720bc
from
sqlalchemy
import
create_engine
from
scripts.config.databases.postgres.postgres_connection
import
connection
import
urllib.parse
database_uri
=
'postgresql+psycopg2://postgres:admin@localhost:5433/postgres'
try
:
urllib
.
parse
.
quote_plus
(
"admin"
)
engine
=
create_engine
(
database_uri
)
print
(
"Sql alchemy connected!"
)
except
Exception
as
e
:
print
(
"Exception occurred due to >> "
,
e
)
scripts/core/handlers/insert_data.py
0 → 100644
View file @
532720bc
from
datetime
import
date
from
pydantic
import
BaseModel
from
sqlalchemy
import
Column
,
Integer
,
String
,
Boolean
,
Date
,
ForeignKey
from
sqlalchemy
import
create_engine
from
sqlalchemy.orm
import
declarative_base
from
sqlalchemy.orm
import
sessionmaker
# create engine
engine
=
create_engine
(
'postgresql://postgres:admin@localhost:5432/theater_db1'
,
echo
=
True
)
# create session
Session
=
sessionmaker
(
bind
=
engine
)
session
=
Session
()
# create Base
Base
=
declarative_base
()
# create BookingDetails class
class
BookingDetails
(
Base
):
__tablename__
=
'ticket_details1'
booking_id
=
Column
(
Integer
,
primary_key
=
True
)
mobile_no
=
Column
(
Integer
)
preferred_class
=
Column
(
String
)
no_of_tickets
=
Column
(
Integer
)
seat_numbers
=
Column
(
String
(
300
))
date_of_purchase
=
Column
(
Date
,
default
=
date
.
today
())
age
=
Column
(
Integer
)
status
=
Column
(
Boolean
,
default
=
False
)
class
Ticket
(
Base
):
__tablename__
=
"ticket_details"
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
)
# create tables
Base
.
metadata
.
create_all
(
engine
)
class
Film_Ticket
(
BaseModel
):
mobile_no
:
int
pref_class
:
str
no_of_ticket
:
int
seat_no
:
str
age
:
int
def
insert_data_into_db
(
ticket
):
# add new booking details
try
:
new_booking
=
Ticket
(
mobile_no
=
ticket
.
mobile_no
,
preferred_class
=
ticket
.
pref_class
,
no_of_tickets
=
ticket
.
no_of_ticket
,
seat_no
=
ticket
.
seat_no
,
age
=
ticket
.
age
)
session
.
add
(
new_booking
)
session
.
commit
()
return
True
except
Exception
as
e
:
print
(
e
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment