diff --git a/app/api/queue/routes/next.py b/app/api/queue/routes/next.py index b148c07..add3078 100644 --- a/app/api/queue/routes/next.py +++ b/app/api/queue/routes/next.py @@ -18,7 +18,7 @@ def get_next_queue( cursor = conn.cursor() # Build query with optional filters - query = "SELECT * FROM queue" + base_query = "SELECT * FROM queue" filters = [] params = [] if collection: @@ -27,34 +27,52 @@ def get_next_queue( if group: filters.append('"group" = %s') params.append(group) - if filters: - query += " WHERE " + " AND ".join(filters) - query += " ORDER BY updated DESC LIMIT 1;" + where_clause = (" WHERE " + " AND ".join(filters)) if filters else "" + # 1. Get the next record + query = base_query + where_clause + " ORDER BY updated DESC LIMIT 1;" cursor.execute(query, params) row = cursor.fetchone() columns = [desc[0] for desc in cursor.description] if cursor.description else [] + record = dict(zip(columns, row)) if row and columns else None + + # 2. Get count of records matching filters + count_query = "SELECT COUNT(*) FROM queue" + where_clause + ";" + cursor.execute(count_query, params) + filtered_row = cursor.fetchone() + filtered_count = filtered_row[0] if filtered_row else 0 + + # 3. Get total count + cursor.execute("SELECT COUNT(*) FROM queue;") + total_row = cursor.fetchone() + total_count = total_row[0] if total_row else 0 + + # 4. Get table schema + cursor.execute("SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'queue';") + schema = [ + {"name": row[0], "type": row[1], "nullable": row[2]} for row in cursor.fetchall() + ] + conn.close() - if row and columns: - record = dict(zip(columns, row)) - # Build a dynamic title with filters - filters = [] - if collection: - filters.append(f"collection='{collection}'") - if group: - filters.append(f"group='{group}'") - filter_str = f" (filtered by {', '.join(filters)})" if filters else "" - title = f"Next queue record found{filter_str}" - return { - "meta": make_meta("success", title), - "data": record - } - else: - return { - "meta": make_meta("info", "No queue record to show"), - "data": None, - "message": "Nothing to show for the given filters." + # Build a dynamic title with filters + filter_labels = [] + if collection: + filter_labels.append(f"collection='{collection}'") + if group: + filter_labels.append(f"group='{group}'") + filter_str = f" (filtered by {', '.join(filter_labels)})" if filter_labels else "" + title = f"Next queue record found{filter_str}" if record else "No queue record to show" + + return { + "meta": make_meta("success" if record else "info", title), + "data": { + "record": record, + "filtered_count": filtered_count, + "total_count": total_count, + "schema": schema, + "message": None if record else "Nothing to show for the given filters." } + } except Exception as e: raise HTTPException(status_code=500, detail=str(e)) diff --git a/app/static/python-logo.svg b/app/static/python-logo.svg deleted file mode 100644 index 467b07b..0000000 --- a/app/static/python-logo.svg +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -