Files
telemovris/telemovris_web/app.py
2023-08-04 10:25:20 +02:00

87 lines
2.3 KiB
Python

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()