inventory/crudkit/integrations/flask.py
2025-09-08 11:56:29 -05:00

20 lines
755 B
Python

from __future__ import annotations
from flask import Flask
from sqlalchemy.orm import scoped_session
from ..engines import CRUDKitRuntime
from ..config import Config
def init_app(app: Flask, *, runtime: CRUDKitRuntime | None = None, config: type[Config] | None == None):
"""
Initializes CRUDKit for a Flask app. Provies `app.extensions['crudkit']`
with a runtime (engine + session_factory). Caller manages session lifecycle.
"""
runtime = runtime or CRUDKitRuntime(config=config)
app.extensions.setdefault("crudkit", {})
app.extensions["crudkit"]["runtime"] = runtime
Session = runtime.session_factory
if Session is not None:
app.extensions["crudkit"]["Session"] = scoped_session(Session)
return runtime