summaryrefslogtreecommitdiffstats
path: root/nfsw/db.py
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2019-09-12 21:22:01 -0400
committerrsiddharth <s@ricketyspace.net>2019-09-12 21:22:01 -0400
commit3d6ea3afec8d2f6db68f66dd60fa78efa9035e87 (patch)
tree709b3ed1d30a629ab27a31dca3814335e06fabac /nfsw/db.py
parent39c85710f5ab1f7c63caf30beaaaede7286fc53a (diff)
Add some auth flask snafu.
Diffstat (limited to 'nfsw/db.py')
-rw-r--r--nfsw/db.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/nfsw/db.py b/nfsw/db.py
new file mode 100644
index 0000000..fefc22a
--- /dev/null
+++ b/nfsw/db.py
@@ -0,0 +1,46 @@
+import sqlite3
+
+import click
+
+from flask import current_app, g
+from flask.cli import with_appcontext
+
+
+def get_db():
+ if 'db' in g:
+ return g.db
+
+ 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')
+@with_appcontext
+def init_db_command():
+ """Clear database and freshly create tables"""
+ init_db()
+ click.echo('Freshly provisioned database.')
+
+
+def init_app(app):
+ app.teardown_appcontext(close_db)
+ app.cli.add_command(init_db_command)