API up and running.
This commit is contained in:
parent
d9ed6d5cd7
commit
207e3f5b51
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 import create_engine
|
||||||
from sqlalchemy.orm import sessionmaker, scoped_session
|
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
|
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))
|
SessionLocal = scoped_session(sessionmaker(bind=engine))
|
||||||
|
|
||||||
Base.metadata.create_all(engine)
|
Base.metadata.create_all(engine)
|
||||||
|
|
@ -12,3 +24,22 @@ Base.metadata.create_all(engine)
|
||||||
session = SessionLocal()
|
session = SessionLocal()
|
||||||
|
|
||||||
bootstrap_world(session)
|
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)
|
id = Column(Integer, ForeignKey("dbref.id"), primary_key=True)
|
||||||
|
|
||||||
__mapper_args__ = {
|
__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 import Column, Integer, ForeignKey
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship, foreign, remote
|
||||||
|
|
||||||
from crudkit.core.base import CRUDMixin
|
from crudkit.core.base import CRUDMixin
|
||||||
|
|
||||||
|
|
@ -12,9 +12,10 @@ class Thing(Dbref):
|
||||||
|
|
||||||
value = Column(Integer, nullable=False, default=0)
|
value = Column(Integer, nullable=False, default=0)
|
||||||
|
|
||||||
home_id = Column(Integer, ForeignKey("dbref.id"), nullable=False)
|
home_id = Column(Integer, ForeignKey("dbref.id"), nullable=True)
|
||||||
home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id])
|
home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id], primaryjoin=lambda: foreign(Thing.home_id) == remote(Dbref.id))
|
||||||
|
|
||||||
__mapper_args__ = {
|
__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