20 lines
755 B
Python
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
|