(itemids, groupIDs=None, where=None, eager=None)
| 374 | |
| 375 | @cachedQuery(2, "where", "itemids") |
| 376 | def getVariations(itemids, groupIDs=None, where=None, eager=None): |
| 377 | for itemid in itemids: |
| 378 | if not isinstance(itemid, int): |
| 379 | raise TypeError("All passed item IDs must be integers") |
| 380 | # Get out if list of provided IDs is empty |
| 381 | if len(itemids) == 0: |
| 382 | return [] |
| 383 | |
| 384 | itemfilter = or_(*(items_table.c.variationParentTypeID == itemid for itemid in itemids)) |
| 385 | filter = processWhere(itemfilter, where) |
| 386 | vars = get_gamedata_session().query(Item).options(*processEager(eager)).filter(filter).all() |
| 387 | |
| 388 | if vars: |
| 389 | return vars |
| 390 | elif groupIDs: |
| 391 | itemfilter = or_(*(groups_table.c.groupID == groupID for groupID in groupIDs)) |
| 392 | filter = processWhere(itemfilter, where) |
| 393 | joinon = items_table.c.groupID == groups_table.c.groupID |
| 394 | vars = get_gamedata_session().query(Item).options(*processEager(eager)).join((groups_table, joinon)).filter( |
| 395 | filter).all() |
| 396 | |
| 397 | return vars |
| 398 | |
| 399 | |
| 400 | @cachedQuery(1, "attr") |
nothing calls this directly
no test coverage detected