diff --git a/API_mem_usage.py b/API_mem_usage.py new file mode 100644 index 0000000..eb55c12 --- /dev/null +++ b/API_mem_usage.py @@ -0,0 +1,41 @@ +from flask import Flask, jsonify,request +from db_connect import get_data, get_query + +app = Flask(__name__) + + +@app.route('/usage', methods=['POST']) +def get_usage(): + + data = request.get_json() + print(data) + + + timestamp = data.get('timestamp') + hour = data.get('hour') + minute = data.get('minute') + second = data.get('second') + + query=get_query(timestamp, hour, minute, second) + + + #print(query) + data= get_data(query) + if data == []: + return "no data available at this time" + else: + + keys = ['id', 'timestamp', 'memory_footprint', 'cpu_usage', 'hour', 'minute', 'second'] + + result = [] + for sublist in data: + dictionary = dict(zip(keys, sublist)) + result.append(dictionary) + + print(result) + + return jsonify(result) + + +if __name__ == '__main__': + app.run(port=2910) diff --git a/db_connect.py b/db_connect.py new file mode 100644 index 0000000..05be82d --- /dev/null +++ b/db_connect.py @@ -0,0 +1,57 @@ + + +import psycopg2 +from psycopg2.extras import RealDictCursor +import os +from dotenv import load_dotenv + + +# loading from .env file +load_dotenv() + +db_user=os.getenv('DB_USER') +db_password=os.getenv('DB_password') + + + +def db_connect(): + conn = psycopg2.connect( + host='localhost', + port='5432', + database='db_ushnah', + user=db_user, + password=db_password + ) + return conn + +def get_data(query): + conn=db_connect() + cursor = conn.cursor() + cursor.execute(query) + data = cursor.fetchall() + print(data) + cursor.close() + return data + +def get_query(timestamp, hour, minute, second): + if timestamp is not None: + query = f"SELECT * FROM memory_usage WHERE timestamp = '{timestamp}'" + else: + query = "SELECT * FROM memory_usage WHERE " + conditions = [] + + if hour is not None: + conditions.append(f"hour = {hour}") + if minute is not None and hour is None and second is None: + conditions.append(f"minute = {minute}") + if minute is not None and hour is None and second is not None: + conditions.append(f"minute = {minute} and second = {second}") + if minute is not None and hour is not None and second is None: + conditions.append(f"hour = {hour} and minute = {minute}") + if second is not None and hour is None and minute is None: + conditions.append(f"second = {second}") + + query += " and ".join(conditions) + + return query +