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)