Updated CRUDkit

This commit is contained in:
Yaro Kasear 2025-09-08 15:10:11 -05:00
parent f1fa1f2407
commit 571583bcf4
6 changed files with 186 additions and 24 deletions

View file

@ -3,25 +3,28 @@ import os
from flask import Flask
from crudkit import ProdConfig
from crudkit.api.flask_api import generate_crud_blueprint
from crudkit.core.service import CRUDService
from crudkit.integrations.flask import init_app
from .config import DevConfig
from .db import init_db, create_all_tables, get_session
def create_app(config_cls=DevConfig) -> Flask:
app = Flask(__name__)
app.config.from_object(config_cls)
init_db(
app.config["DATABASE_URL"],
config_cls.engine_kwargs(),
config_cls.session_kwargs()
)
runtime = init_app(app, config=ProdConfig)
from . import models as _models
create_all_tables()
session = get_session()
_models.Base.metadata.create_all(bind=runtime.engine)
Session = app.extensions["crudkit"].get("Session")
if Session is None:
SessionFactory = runtime.session_factory
Session = SessionFactory
session = Session
area_service = CRUDService(_models.Area, session)
brand_service = CRUDService(_models.Brand, session)
@ -45,8 +48,14 @@ def create_app(config_cls=DevConfig) -> Flask:
app.register_blueprint(generate_crud_blueprint(_models.WorkLog, work_log_service), url_prefix="/api/work_log")
app.register_blueprint(generate_crud_blueprint(_models.WorkNote, work_note_service), url_prefix="/api/work_note")
@app.teardown_appcontext
def _remove_session(_exc):
sess = app.extensions["crudkit"].get("Session")
if sess is not None:
sess.remove()
@app.get("/")
def index():
return {"status": "ok", "db": app.config["DATABASE_URL"]}
return {"status": "ok", "db": str(runtime.engine.url)}
return app