edh-elo/app/__init__.py
2024-01-22 23:20:29 -08:00

33 lines
968 B
Python

import os
import sys
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__)
secret_key = os.environ.get('SECRET_KEY')
if not secret_key:
sys.stderr.write('YOU NEED TO SET AN ENV VARIABLE NAMED SECRET_KEY\n')
sys.exit(1)
app.config['SECRET_KEY'] = secret_key
# TODO - support other database types 🙃
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
db.init_app(app)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
# TODO - understand how this works, since `db.create_all()` requires that the model classes have already been
# imported in order to know what to create. Perhaps `__init__.py` just magically has the context of everything in
# its module? Good opportunity to learn more about the Python import system!
with app.app_context():
db.create_all()
return app