crudkit/muck/app.py
2025-09-08 11:50:43 -05:00

48 lines
1.7 KiB
Python

from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
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 muck.models.dbref import Base, Dbref
from muck.models.exit import Exit
from muck.models.player import Player
from muck.models.program import Program
from muck.models.room import Room
from muck.models.thing import Thing
from muck.init import bootstrap_world
DATABASE_URL = "sqlite:///muck.db"
engine = create_engine(DATABASE_URL, echo=True)
SessionLocal = scoped_session(sessionmaker(bind=engine))
Base.metadata.create_all(engine)
session = SessionLocal()
bootstrap_world(session)
app = Flask(__name__)
dbref_service = CRUDService(Dbref, session, polymorphic=True)
exit_service = CRUDService(Exit, session)
player_service = CRUDService(Player, session)
program_service = CRUDService(Program, session)
room_service = CRUDService(Room, session)
thing_service = CRUDService(Thing, session)
app.register_blueprint(generate_crud_blueprint(Dbref, dbref_service), url_prefix="/api/dbref")
app.register_blueprint(generate_crud_blueprint(Exit, exit_service), url_prefix="/api/exits")
app.register_blueprint(generate_crud_blueprint(Player, player_service), url_prefix="/api/players")
app.register_blueprint(generate_crud_blueprint(Program, program_service), url_prefix="/api/programs")
app.register_blueprint(generate_crud_blueprint(Room, room_service), url_prefix="/api/rooms")
app.register_blueprint(generate_crud_blueprint(Thing, thing_service), url_prefix="/api/things")
if __name__ == "__main__":
init_app(app, config=ProdConfig)
# app.run(debug=True, port=5050)