39 lines
968 B
Python
39 lines
968 B
Python
from typing import Optional
|
|
from flask import Flask, app
|
|
from flask_socketio import SocketIO
|
|
from flask_login import LoginManager
|
|
from .db import close_db, init_db
|
|
from app.models.user import User
|
|
|
|
|
|
sIO = SocketIO()
|
|
login_manager = LoginManager()
|
|
|
|
@login_manager.user_loader
|
|
def load_user(user_id: int | str) -> Optional["User"]:
|
|
return User.get(user_id)
|
|
|
|
def create_app():
|
|
app = Flask(__name__)
|
|
app.config['SECRET_KEY'] = 'dev' #! ofc not intended for prod use
|
|
|
|
from .sockets import socket as _socket
|
|
|
|
app.teardown_appcontext(close_db)
|
|
|
|
sIO.init_app(app)
|
|
login_manager.init_app(app)
|
|
|
|
from .routes.auth import auth_bp
|
|
from .routes.main import main_bp
|
|
from .routes.friends import friends_bp
|
|
from .routes.presence import presence_bp
|
|
|
|
app.register_blueprint(main_bp)
|
|
app.register_blueprint(auth_bp)
|
|
app.register_blueprint(friends_bp)
|
|
app.register_blueprint(presence_bp)
|
|
|
|
init_db(app)
|
|
|
|
return app |