Merge pull request #30 from alexjurkiewicz/master

Improve market search
This commit is contained in:
Anton Vorobyov
2014-01-10 09:50:00 -08:00

View File

@@ -184,8 +184,6 @@ def getItemsByCategory(filter, where=None, eager=None):
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()
@@ -193,8 +191,11 @@ def searchItems(nameLike, where=None, join=None, eager=None):
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()
items = gamedata_session.query(Item).options(*processEager(eager)).join(*join)
for token in nameLike.split(' '):
token_safe = u"%{0}%".format(sqlizeString(token))
items = items.filter(processWhere(Item.name.like(token_safe, escape="\\"), where))
items = items.limit(100).all()
return items
@cachedQuery(2, "where", "itemids")