crudkit/muck/app.py
2025-09-05 09:36:15 -05:00

45 lines
1.6 KiB
Python

from flask import Flask
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
from crudkit.api.flask_api import generate_crud_blueprint
from crudkit.core.service import CRUDService
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__":
app.run(debug=True, port=5050)