summaryrefslogtreecommitdiffstats
path: root/app/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'app/__init__.py')
-rw-r--r--app/__init__.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/app/__init__.py b/app/__init__.py
new file mode 100644
index 0000000..3fb828f
--- /dev/null
+++ b/app/__init__.py
@@ -0,0 +1,38 @@
+from sanic import Sanic
+import config
+from asyncpg import create_pool
+import jinja2_sanic
+from jinja2 import FileSystemLoader
+import logging
+from .in_log import LOG_SETTINGS
+from .util import URLCoder
+from .schema import schema_up
+
+blure = Sanic(__name__, log_config=LOG_SETTINGS)
+log = logging.getLogger('blure')
+
+jinja2_sanic.setup(blure, loader=FileSystemLoader('app/templates'))
+blure.config.from_object(config)
+blure.static('/static', './app/static')
+blure.url = URLCoder(blure.config.APP_SECRET[::2]) # cut secret, because it is too long
+
+
+@blure.listener('before_server_start')
+async def setup_db(_app, loop):
+ _app.pool = await create_pool(_app.config.PG_URI, loop=loop)
+ async with _app.pool.acquire() as conn:
+ await create_tables(conn)
+
+
+@blure.listener('after_server_stop')
+async def close_db_conns(_app, loop):
+ await _app.pool.close()
+
+
+from . import views # noqa # unused-import, E402
+
+
+async def create_tables(conn):
+ async with conn.transaction():
+ for statement in schema_up:
+ await conn.execute(statement)