예제 #1
0
파일: queries.py 프로젝트: meldi44/Pyfa
def directAttributeRequest(itemIDs, attrIDs):
    for itemID in itemIDs:
        if not isinstance(itemID, int):
            raise TypeError("All attrIDs must be integer")
    for itemID in itemIDs:
        if not isinstance(itemID, int):
            raise TypeError("All itemIDs must be integer")

    q = select((eos.types.Item.typeID, eos.types.Attribute.attributeID, eos.types.Attribute.value),
                                  and_(eos.types.Attribute.attributeID.in_(attrIDs), eos.types.Item.typeID.in_(itemIDs)),
                                  from_obj=[join(eos.types.Attribute, eos.types.Item)])

    result = gamedata_session.execute(q).fetchall()
    return result
예제 #2
0
파일: queries.py 프로젝트: copyliu/Pyfa
def directAttributeRequest(itemIDs, attrIDs):
    for itemID in itemIDs:
        if not isinstance(itemID, int):
            raise TypeError("All attrIDs must be integer")
    for itemID in itemIDs:
        if not isinstance(itemID, int):
            raise TypeError("All itemIDs must be integer")

    q = select((Item.typeID, Attribute.attributeID, Attribute.value),
               and_(Attribute.attributeID.in_(attrIDs), Item.typeID.in_(itemIDs)),
               from_obj=[join(Attribute, Item)])

    result = gamedata_session.execute(q).fetchall()
    return result
예제 #3
0
파일: queries.py 프로젝트: copyliu/Pyfa
def getRequiredFor(itemID, attrMapping):
    Attribute1 = aliased(Attribute)
    Attribute2 = aliased(Attribute)

    skillToLevelClauses = []

    for attrSkill, attrLevel in attrMapping.iteritems():
        skillToLevelClauses.append(and_(Attribute1.attributeID == attrSkill, Attribute2.attributeID == attrLevel))

    queryOr = or_(*skillToLevelClauses)

    q = select((Attribute2.typeID, Attribute2.value),
               and_(Attribute1.value == itemID, queryOr),
               from_obj=[
                   join(Attribute1, Attribute2, Attribute1.typeID == Attribute2.typeID)
               ])

    result = gamedata_session.execute(q).fetchall()

    return result
예제 #4
0
def getRequiredFor(itemID, attrMapping):
    Attribute1 = aliased(Attribute)
    Attribute2 = aliased(Attribute)

    skillToLevelClauses = []

    for attrSkill, attrLevel in attrMapping.items():
        skillToLevelClauses.append(and_(Attribute1.attributeID == attrSkill, Attribute2.attributeID == attrLevel))

    queryOr = or_(*skillToLevelClauses)

    q = select((Attribute2.typeID, Attribute2.value),
               and_(Attribute1.value == itemID, queryOr),
               from_obj=[
                   join(Attribute1, Attribute2, Attribute1.typeID == Attribute2.typeID)
               ])

    result = gamedata_session.execute(q).fetchall()

    return result