summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorubq323 <ubq323>2021-05-21 16:34:45 +0000
committerubq323 <ubq323>2021-05-21 16:34:45 +0000
commitbab4893709e736e30f208a810b46d21aed6cef0e (patch)
tree409bdbd25206051f0762fafb75311bba6ac9afde
parentc8681bb17437e316c82f89c792458cda019ba74e (diff)
database infrastructure
-rw-r--r--.fossil-settings/ignore-glob1
-rw-r--r--apioforum/__init__.py9
-rw-r--r--apioforum/db.py40
3 files changed, 50 insertions, 0 deletions
diff --git a/.fossil-settings/ignore-glob b/.fossil-settings/ignore-glob
index f166c18..8c284f4 100644
--- a/.fossil-settings/ignore-glob
+++ b/.fossil-settings/ignore-glob
@@ -1,2 +1,3 @@
venv/*
+*.db
*.py[cod]
diff --git a/apioforum/__init__.py b/apioforum/__init__.py
index 0ea397f..6d4e53d 100644
--- a/apioforum/__init__.py
+++ b/apioforum/__init__.py
@@ -2,12 +2,21 @@
# yay
from flask import Flask
+from .db import get_db
def create_app():
app = Flask(__name__)
+ from . import db
+ db.init_app(app)
+
@app.route("/")
def main():
return "the"
+ @app.route("/b")
+ def b():
+ db=get_db()
+ return str(db.execute("select 2 + 2;").fetchone()[0])
+
return app
diff --git a/apioforum/db.py b/apioforum/db.py
new file mode 100644
index 0000000..be2d7e0
--- /dev/null
+++ b/apioforum/db.py
@@ -0,0 +1,40 @@
+import sqlite3
+import click
+from flask import current_app, g
+from flask.cli import with_appcontext
+
+def get_db():
+ if 'db' not in g:
+ g.db = sqlite3.connect('database.db',detect_types=sqlite3.PARSE_DECLTYPES)
+ g.db.row_factory = sqlite3.Row
+ g.db.execute("PRAGMA foreighn_keys = ON;")
+ return g.db
+
+def close_db(e=None):
+ db = g.pop('db', None)
+ if db is not None:
+ db.close()
+
+migrations = [
+]
+
+def init_db():
+ db = get_db()
+ version = db.execute("PRAGMA user_version;").fetchone()[0]
+ for i in range(version, len(migrations)):
+ db.executescript(migrations[i])
+ db.execute(f"PRAGMA user_version = {i+1}")
+ db.commit()
+ click.echo(f"migration {i}")
+
+@click.command("migrate")
+@with_appcontext
+def migrate_command():
+ """update database scheme etc"""
+ init_db()
+ click.echo("ok")
+
+def init_app(app):
+ app.teardown_appcontext(close_db)
+ app.cli.add_command(migrate_command)
+