def getItemsByCategory(filter, where=None, eager=None): if isinstance(filter, int): filter = Category.ID == filter elif isinstance(filter, basestring): filter = Category.name == filter else: raise TypeError("Need integer or string as argument") filter = processWhere(filter, where) return gamedata_session.query(Item).options(*processEager(eager)).join(Item.group, Group.category).filter(filter).all()
def getRegion(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: region = gamedata_session.query(Region).get(lookfor) else: region = gamedata_session.query(Region).options(*processEager(eager)).filter(Region.ID == lookfor).first() elif isinstance(lookfor, basestring): if lookfor in regionNameMap: id = regionNameMap[lookfor] if eager is None: region = gamedata_session.query(Region).get(id) else: region = gamedata_session.query(Region).options(*processEager(eager)).filter(Region.ID == id).first() else: # Group names are unique, so we can use first() instead of one() region = gamedata_session.query(Region).options(*processEager(eager)).filter(Region.name == lookfor).first() regionNameMap[lookfor] = region.ID else: raise TypeError("Need integer or string as argument") return region
def getMarketGroup(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: marketGroup = gamedata_session.query(MarketGroup).get(lookfor) else: marketGroup = gamedata_session.query(MarketGroup).options(*processEager(eager)).filter(MarketGroup.ID == lookfor).first() elif isinstance(lookfor, basestring): marketGroup = gamedata_session.query(MarketGroup).filter(MarketGroup.name == lookfor).first() else: raise TypeError("Need integer or string as argument") return marketGroup
def getCategory(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: category = gamedata_session.query(Category).get(lookfor) else: category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.ID == lookfor).first() elif isinstance(lookfor, basestring): if lookfor in categoryNameMap: id = categoryNameMap[lookfor] if eager is None: category = gamedata_session.query(Category).get(id) else: category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.ID == id).first() else: # Category names are unique, so we can use first() instead of one() category = gamedata_session.query(Category).options(*processEager(eager)).filter(Category.name == lookfor).first() categoryNameMap[lookfor] = category.ID else: raise TypeError("Need integer or string as argument") return category
def getAttributeInfo(attr, eager=None): if isinstance(attr, basestring): filter = AttributeInfo.name == attr elif isinstance(attr, int): filter = AttributeInfo.ID == attr else: raise TypeError("Need integer or string as argument") try: result = gamedata_session.query(AttributeInfo).options(*processEager(eager)).filter(filter).one() except exc.NoResultFound: result = None return result
def getItem(lookfor, eager=None): if isinstance(lookfor, int): if eager is None: item = gamedata_session.query(Item).get(lookfor) else: item = gamedata_session.query(Item).options(*processEager(eager)).filter(Item.ID == lookfor).first() elif isinstance(lookfor, basestring): if lookfor in itemNameMap: id = itemNameMap[lookfor] if eager is None: item = gamedata_session.query(Item).get(id) else: item = gamedata_session.query(Item).options(*processEager(eager)).filter(Item.ID == id).first() else: # Item names are unique, so we can use first() instead of one() item = gamedata_session.query(Item).options(*processEager(eager)).filter(Item.name == lookfor).first() if not item: return None itemNameMap[lookfor] = item.ID else: raise TypeError("Need integer or string as argument") return item
def getVariations(itemids, where=None, eager=None): for itemid in itemids: if not isinstance(itemid, int): raise TypeError("All passed item IDs must be integers") # Get out if list of provided IDs is empty if len(itemids) == 0: return [] itemfilter = or_(*(metatypes_table.c.parentTypeID == itemid for itemid in itemids)) filter = processWhere(itemfilter, where) joinon = items_table.c.typeID == metatypes_table.c.typeID vars = gamedata_session.query(Item).options(*processEager(eager)).join((metatypes_table, joinon)).filter(filter).all() return vars
def searchItems(nameLike, where=None, join=None, eager=None): if not isinstance(nameLike, basestring): raise TypeError("Need string as argument") # Prepare our string for request nameLike = u"%{0}%".format(sqlizeString(nameLike)) if join is None: join = tuple() if not hasattr(join, "__iter__"): join = (join,) filter = processWhere(Item.name.like(nameLike, escape="\\"), where) items = gamedata_session.query(Item).options(*processEager(eager)).join(*join).filter(filter).all() return items