Store cadence values in database

This commit is contained in:
Peter Stockings
2023-01-22 09:59:39 +11:00
parent dfc1988a88
commit 56069547c3
2 changed files with 40 additions and 0 deletions

4
app.py
View File

@@ -10,12 +10,15 @@ import minify_html
from urllib.parse import urlparse from urllib.parse import urlparse
from flask_socketio import SocketIO from flask_socketio import SocketIO
from db import DataBase
app = Flask(__name__) app = Flask(__name__)
# TODO CHANGE SECRET KEY TO ENVIRONMENT VARIABLE # TODO CHANGE SECRET KEY TO ENVIRONMENT VARIABLE
app.config['SECRET_KEY'] = 'secret!' app.config['SECRET_KEY'] = 'secret!'
jinja_partials.register_extensions(app) jinja_partials.register_extensions(app)
htmx = HTMX(app) htmx = HTMX(app)
socketio = SocketIO(app, cors_allowed_origins='*') socketio = SocketIO(app, cors_allowed_origins='*')
db = DataBase(app)
@app.after_request @app.after_request
@@ -38,6 +41,7 @@ def handle_message(data):
current_time = datetime.now().replace( current_time = datetime.now().replace(
microsecond=0).isoformat() microsecond=0).isoformat()
print('' + current_time + ' ' + json.dumps(data)) print('' + current_time + ' ' + json.dumps(data))
db.insert_cadence(data['rpm'], data['device_id'])
@app.route("/api/status", methods=['GET', 'POST']) @app.route("/api/status", methods=['GET', 'POST'])

36
db.py Normal file
View File

@@ -0,0 +1,36 @@
import os
import psycopg2
from psycopg2.extras import RealDictCursor
from urllib.parse import urlparse
class DataBase():
def __init__(self, app):
db_url = urlparse(os.environ['DATABASE_URL'])
self.conn = psycopg2.connect(
database=db_url.path[1:],
user=db_url.username,
password=db_url.password,
host=db_url.hostname,
port=db_url.port
)
def execute(self, query, args=(), one=False, commit=False):
cur = self.conn.cursor(cursor_factory=RealDictCursor)
cur.execute(query, args)
rv = None
if cur.description is not None:
rv = cur.fetchall()
if commit:
try:
self.conn.commit()
except:
self.conn.rollback()
cur.close()
return (rv[0] if rv else None) if one else rv
def insert_cadence(self, rpm, device_id):
self.execute('INSERT INTO cadence (rpm, device_id) VALUES (%s)',
[rpm, device_id], commit=True, one=True)