123 lines
3.0 KiB
Python
Raw Normal View History

from flask import Flask
import psycopg2 as psql
from os import environ as env
import datetime
app = Flask(__name__)
db_params = {
'database': env.get('DB_NAME'),
'user': env.get('DB_USER'),
'password': env.get('DB_PASS'),
'host': env.get('DB_HOST'),
'port': int(env.get('DB_PORT'))
}
db = psql.connect(**db_params)
@app.route("/movies", methods = ['GET'])
def movies():
c = db.cursor()
fields = ['uuid',
'name',
'scheduled_datetime',
'movie_details',
'image_url',
'max_passes']
try:
c.execute(f"SELECT {','.join(fields)} FROM public.movie")
except Exception as e:
c.close()
print(e)
return {
"error": "Failed to list movies",
"result": None
}, 503
res = c.fetchall()
c.close()
return {
"error": "",
"result": [{fields[i]: v
if type(v) != datetime.datetime
else v.strftime("%Y-%m-%d %H:%M:%S")
for i, v in enumerate(r)}
for r in res]
}
@app.route("/movie/<movie_uuid>", methods = ['GET'])
def movie_byid(movie_uuid):
c = db.cursor()
fields = ['name',
'scheduled_datetime',
'movie_details',
'image_url',
'max_passes']
try:
c.execute(f"SELECT {','.join(fields)} FROM public.movie WHERE uuid='{movie_uuid}'")
except Exception as e:
c.close()
print(e)
return {
"error": "Failed to search for a movie",
"result": None
}, 503
res = c.fetchone()
c.close()
if res:
return {
"error": "",
"result": {fields[i]: v
if type(v) != datetime.datetime
else v.strftime("%Y-%m-%d %H:%M:%S")
for i, v in enumerate(res)}
}
else:
return {
"error": f"No movie with uuid={movie_uuid} has been found",
"result": None
}, 404
@app.route("/passes", methods = ['GET'])
def passes():
c = db.cursor()
fields = ["uuid",
"movie_uuid",
"user_first",
"user_last",
"user_email",
"pass_type",
"pass_price",
"pass_requested_at",
"payment_received",
"payment_received_at"]
try:
c.execute(f"SELECT {','.join(fields)} FROM public.pass")
except Exception as e:
c.close()
print(e)
return {
"error": "Failed to list out passes",
"result": None
}
res = c.fetchall()
c.close()
return {
"error": "",
"result": [{fields[i]: v
if type(v) != datetime.datetime
else v.strftime("%Y-%m-%d %H:%M:%S")
for i, v in enumerate(r)}
for r in res]}