from flask import Flask import psycopg2 as psql from os import environ as env 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") def movies(): c = db.cursor() try: c.execute('SELECT uuid, name, scheduled_datetime, movie_details, image_url, max_passes FROM movies') except Exception: return { "error": "Failed to list movies", "result": None }, 503 res = c.fetchall() c.close() return { "error": "", "result": [ { "uuid": i[0], "name": i[1], "scheduled_datetime": i[2].strftime("%Y-%m-%d %H:%M:%S"), "movie_details": i[3], "image_url": i[4], "max_passes": i[5] } for i in res ] } @app.route("/movie/") def movie_byid(movie_uuid): c = db.cursor() try: c.execute(f"SELECT name, scheduled_datetime, movie_details, image_url, max_passes FROM movies WHERE uuid='{movie_uuid}'") except Exception: return { "error": "Failed to search for a movie", "result": None }, 503 res = c.fetchone() c.close() if res: return { "error": "", "result": { "name": res[0], "scheduled_datetime": res[1].strftime("%Y-%m-%d %H:%M:%S"), "movie_details": res[2], "image_url": res[3], "max_passes": res[4] } } else: return { "error": f"No movie with uuid={movie_uuid} has been found", "result": None }, 404