Redesign1 #1
3 changed files with 40 additions and 7 deletions
35
muck/app.py
35
muck/app.py
|
|
@ -1,10 +1,22 @@
|
|||
from flask import Flask
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker, scoped_session
|
||||
|
||||
from muck.models.dbref import Base
|
||||
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
|
||||
|
||||
engine = create_engine("sqlite:///muck.db", echo=True)
|
||||
DATABASE_URL = "sqlite:///muck.db"
|
||||
|
||||
engine = create_engine(DATABASE_URL, echo=True)
|
||||
SessionLocal = scoped_session(sessionmaker(bind=engine))
|
||||
|
||||
Base.metadata.create_all(engine)
|
||||
|
|
@ -12,3 +24,22 @@ Base.metadata.create_all(engine)
|
|||
session = SessionLocal()
|
||||
|
||||
bootstrap_world(session)
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
dbref_service = CRUDService(Dbref, session)
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -8,5 +8,6 @@ class Program(Dbref):
|
|||
id = Column(Integer, ForeignKey("dbref.id"), primary_key=True)
|
||||
|
||||
__mapper_args__ = {
|
||||
"polymorphic_identity": ObjectType.PROGRAM
|
||||
"polymorphic_identity": ObjectType.PROGRAM,
|
||||
"inherit_condition": id == Dbref.id
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from sqlalchemy import Column, Integer, ForeignKey
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.orm import relationship, foreign, remote
|
||||
|
||||
from crudkit.core.base import CRUDMixin
|
||||
|
||||
|
|
@ -12,9 +12,10 @@ class Thing(Dbref):
|
|||
|
||||
value = Column(Integer, nullable=False, default=0)
|
||||
|
||||
home_id = Column(Integer, ForeignKey("dbref.id"), nullable=False)
|
||||
home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id])
|
||||
home_id = Column(Integer, ForeignKey("dbref.id"), nullable=True)
|
||||
home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id], primaryjoin=lambda: foreign(Thing.home_id) == remote(Dbref.id))
|
||||
|
||||
__mapper_args__ = {
|
||||
"polymorphic_identity": ObjectType.THING
|
||||
"polymorphic_identity": ObjectType.THING,
|
||||
"inherit_condition": id == Dbref.id
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue