[backend] add endpoints for listing movies and fetching a movie by uuid

This commit is contained in:
ІО-23 Шмуляр Олег 2025-05-07 21:03:55 +03:00
parent 83838a4ca4
commit 51c05e94ab
1 changed files with 57 additions and 9 deletions

View File

@ -14,15 +14,63 @@ db_params = {
db = psql.connect(**db_params) db = psql.connect(**db_params)
@app.route("/") @app.route("/movies")
def test(): def movies():
c = db.cursor() c = db.cursor()
try:
c.execute('SELECT * FROM movies')
except Exception:
db.rollback()
return "Failed to fetch table 'movies'"
res = c.fetchmany(10) 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() c.close()
return "<p>Hello, World! test data:<br>" + "<br>".join(str(i) for i in res) + "</p>"
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/<movie_uuid>")
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