from typing import Optional from sqlalchemy import ForeignKey, String from sqlalchemy.orm import Mapped, mapped_column from .dao import BaseDAO class ItemType(BaseDAO): filename = "ItemTypes.txt" __tablename__ = "item_type" Id: Mapped[int] = mapped_column(primary_key=True) Code: Mapped[str] = mapped_column(String(4)) # referred to by other tables ItemType: Mapped[Optional[str]] # internal human readable name Equiv1 = mapped_column(ForeignKey("item_type.Code")) Equiv2 = mapped_column(ForeignKey("item_type.Code")) # what does Rarity do here? fileguide description is unclear def is_valid(self): return is_int(self.Id) and self.Code not in (None, '') def is_int(obj): try: int(obj) except ValueError: return False else: return True