Store cadence values in database
This commit is contained in:
4
app.py
4
app.py
@@ -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
36
db.py
Normal 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)
|
||||||
Reference in New Issue
Block a user