diff --git a/the_works/database.py b/the_works/database.py new file mode 100644 index 0000000..b9086a9 --- /dev/null +++ b/the_works/database.py @@ -0,0 +1,28 @@ +import sqlite3 +import click +from flask import current_app, g + +def init_app(app): + app.teardown_appcontext(close_db) + app.cli.add_command(init_db_command) + +@click.command("init-db") +def init_db_command(): + db = get_db() + with current_app.open_resource("schema.sql") as f: + db.executescript(f.read().decode("utf-8")) + click.echo("You successfully initialized the database!") + +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() \ No newline at end of file