From 0ab0ef8874ccd835722508e2a4db4922690c9562 Mon Sep 17 00:00:00 2001 From: "Dustin C. Hatch" Date: Tue, 25 Jan 2022 21:42:40 -0600 Subject: [PATCH] backend: api: Create database tables at startup We might need to use Alembic for schema migrations at some point, but until then, creating the database tables when the application first starts will work fine. --- backend/src/lycodon/api/main.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/src/lycodon/api/main.py b/backend/src/lycodon/api/main.py index b156730..6a347dc 100644 --- a/backend/src/lycodon/api/main.py +++ b/backend/src/lycodon/api/main.py @@ -2,8 +2,9 @@ from typing import Awaitable, Callable import fastapi +import sqlalchemy -from .. import __version__ +from .. import __version__, tables from ..config import Configuration from .context import Context @@ -22,6 +23,12 @@ context = Context() context.config = Configuration() +@app.on_event('startup') +def start() -> None: + engine = sqlalchemy.create_engine(context.config.database.url) + tables.metadata.create_all(engine) + + @app.middleware('http') async def context_middleware( request: fastapi.Request,