diff options
author | Matt Kohls <mattkohls13@gmail.com> | 2023-09-04 15:36:33 -0400 |
---|---|---|
committer | Matt Kohls <mattkohls13@gmail.com> | 2023-09-04 15:36:33 -0400 |
commit | c8ef8843aaaf28bc38b544ae8ac72accf233aead (patch) | |
tree | 53e846d7480814040bbebe11dd6e290f5d366589 /snag/db.py | |
download | sensor-aggregator-c8ef8843aaaf28bc38b544ae8ac72accf233aead.tar.gz sensor-aggregator-c8ef8843aaaf28bc38b544ae8ac72accf233aead.tar.bz2 sensor-aggregator-c8ef8843aaaf28bc38b544ae8ac72accf233aead.zip |
Revamped project init
New repo for larger structural changes from Sensor-Server. Currently
doing most all the same stuff but hopefully better. Still have to clean
out some of the older templates for the new interface
Diffstat (limited to 'snag/db.py')
-rw-r--r-- | snag/db.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/snag/db.py b/snag/db.py new file mode 100644 index 0000000..56e3306 --- /dev/null +++ b/snag/db.py @@ -0,0 +1,41 @@ +# snag +# Matt Kohls +# (c) 2023 + +import sqlite3 + +import click +from flask import current_app, g + +def get_db(): + if 'db' not in g: + g.db = sqlite3.connect( + current_app.config['DATABASE'], + detect_types=sqlite3.PARSE_DECLTYPES + ) + g.db.row_factory = sqlite3.Row + + return g.db + +def close_db(e=None): + db = g.pop('db', None) + + if db is not None: + db.close() + +def init_db(): + db = get_db() + + with current_app.open_resource('schema.sql') as f: + db.executescript(f.read().decode('utf8')) + +@click.command('init-db') +def init_db_command(): + """Clear the existing data and create new tables.""" + init_db() + click.echo('Initialized the database.') + +def init_app(app): + app.teardown_appcontext(close_db) + app.cli.add_command(init_db_command) + |