diff --git a/muck/models/dbref.py b/muck/models/dbref.py index 9bf3c1e..afd3081 100644 --- a/muck/models/dbref.py +++ b/muck/models/dbref.py @@ -1,11 +1,19 @@ -from sqlalchemy import Column, Integer, String, ForeignKey, Boolean +from sqlalchemy import Column, Integer, String, ForeignKey, Boolean, Enum as SQLEnum from sqlalchemy.orm import relationship from crudkit.core.base import CRUDMixin, Base +from enum import Enum + +class ObjectType(str, Enum): + ROOM = "room" + THING = "thing" + EXIT = "exit" + PLAYER = "player" + PROGRAM = "program" class Dbref(Base, CRUDMixin): __tablename__ = "dbref" - type = Column(String, nullable=False) + type = Column(SQLEnum(ObjectType, name="object_type_enum"), nullable=False) name = Column(String, nullable=False) is_deleted = Column(Boolean, nullable=False, default=False) @@ -23,20 +31,20 @@ class Dbref(Base, CRUDMixin): def __str__(self): return f"#{self.id} ({self.type}): {self.name}" - def is_type(self, *types: str) -> bool: + def is_type(self, *types: ObjectType) -> bool: return self.type in types @property - def is_room(self): return self.is_type("room") + def is_room(self): return self.is_type(ObjectType.ROOM) @property - def is_thing(self): return self.is_type("thing") + def is_thing(self): return self.is_type(ObjectType.THING) @property - def is_exit(self): return self.is_type("exit") + def is_exit(self): return self.is_type(ObjectType.EXIT) @property - def is_player(self): return self.is_type("player") + def is_player(self): return self.is_type(ObjectType.PLAYER) @property - def is_program(self): return self.is_type("programI ho") + def is_program(self): return self.is_type(ObjectType.PROGRAM)