import os from flask import Flask, request import mysql.connector import logging import json logging.basicConfig( format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO ) logger = logging.getLogger(__name__) def connect_db(): db = mysql.connector.connect( host = os.environ.get("MYSQL_HOST"), user = os.environ.get("MYSQL_USER"), password = os.environ.get("MYSQL_PASSWORD"), database = os.environ.get("MYSQL_DATABASE") ) return db def populate_db(): con = connect_db() cur = con.cursor(prepared=True) cur.execute('CREATE TABLE IF NOT EXISTS messages (id INT AUTO_INCREMENT PRIMARY KEY, user VARCHAR(255), message VARCHAR(255), audio BOOLEAN, processed BOOLEAN)') con.commit() con.close() def query_messages(): con = connect_db() cur = con.cursor(prepared=True) cur.execute('SELECT id, user, message, audio FROM messages WHERE processed IS false LIMIT 1') ret = cur.fetchall() con.close() return ret def insert_message(user, message, audio): con = connect_db() cur = con.cursor(prepared=True) params = (user, message, audio) cur.execute('INSERT INTO messages (user, message, audio, processed) VALUES (%s, %s, %s, 0)', params) con.commit() con.close() def update_message(id): con = connect_db() cur = con.cursor(prepared=True) cur.execute(f'UPDATE messages SET processed = true WHERE id = {id}') con.commit() con.close() server = Flask(__name__) @server.route('/getmessage') def getmessage(): rec = query_messages() try: id = rec[0][0] user = rec[0][1] message = rec[0][2] audio = rec[0][3] update_message(id) response = {"user": user, "message": message, "audio": audio} return json.dumps(response) except Exception as e: logging.info(f"Error: {e}") return '' @server.route('/sendmessage', methods=['GET']) def sendmessage(): user = request.args.get('user') message = request.args.get('message') audio = request.args.get('audio') try: insert_message(user, message, audio) return f"Inserted {user} - {message} - {audio}" except Exception as e: logging.info(f"Error: {e}") return '' if __name__ == '__main__': server.run()