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)