Fix showing/counting items that are socketed into other items
This commit is contained in:
@@ -92,22 +92,26 @@ def storage_count(item: Item, stash: str) -> int | str:
|
|||||||
db = get_stash_db(stash)
|
db = get_stash_db(stash)
|
||||||
if item.is_simple:
|
if item.is_simple:
|
||||||
return db.execute(
|
return db.execute(
|
||||||
"SELECT COUNT(id) FROM item WHERE code = ? AND deleted IS NULL",
|
"SELECT COUNT(id) FROM item "
|
||||||
|
"WHERE code = ? AND deleted IS NULL AND socketed_into IS NULL",
|
||||||
(item.code,),
|
(item.code,),
|
||||||
).fetchone()[0]
|
).fetchone()[0]
|
||||||
elif item.quality == Quality.UNIQUE:
|
elif item.quality == Quality.UNIQUE:
|
||||||
return db.execute(
|
return db.execute(
|
||||||
"SELECT COUNT(id) FROM item INNER JOIN item_extra ON id = item_id WHERE code = ? AND unique_id = ? AND deleted IS NULL",
|
"SELECT COUNT(id) FROM item INNER JOIN item_extra ON id = item_id "
|
||||||
|
"WHERE code = ? AND unique_id = ? AND deleted IS NULL AND socketed_into IS NULL",
|
||||||
(item.code, item.unique_id),
|
(item.code, item.unique_id),
|
||||||
).fetchone()[0]
|
).fetchone()[0]
|
||||||
elif item.quality == Quality.SET:
|
elif item.quality == Quality.SET:
|
||||||
return db.execute(
|
return db.execute(
|
||||||
"SELECT COUNT(id) FROM item INNER JOIN item_extra ON id = item_id WHERE code = ? AND set_id = ? AND deleted IS NULL",
|
"SELECT COUNT(id) FROM item INNER JOIN item_extra ON id = item_id "
|
||||||
|
"WHERE code = ? AND set_id = ? AND deleted IS NULL AND socketed_into IS NULL",
|
||||||
(item.code, item.set_id),
|
(item.code, item.set_id),
|
||||||
).fetchone()[0]
|
).fetchone()[0]
|
||||||
elif item.is_runeword:
|
elif item.is_runeword:
|
||||||
return db.execute(
|
return db.execute(
|
||||||
"SELECT COUNT(id) FROM item INNER JOIN item_extra ON id = item_id WHERE code = ? AND runeword_id = ? AND deleted IS NULL",
|
"SELECT COUNT(id) FROM item INNER JOIN item_extra ON id = item_id "
|
||||||
|
"WHERE code = ? AND runeword_id = ? AND deleted IS NULL and socketed_into IS NULL",
|
||||||
(item.code, item.runeword_id),
|
(item.code, item.runeword_id),
|
||||||
).fetchone()[0]
|
).fetchone()[0]
|
||||||
else:
|
else:
|
||||||
@@ -217,7 +221,9 @@ def list_storage(stash_name: str):
|
|||||||
|
|
||||||
db = get_stash_db(stash_name)
|
db = get_stash_db(stash_name)
|
||||||
items = {}
|
items = {}
|
||||||
rows = db.execute("SELECT id FROM item WHERE deleted IS NULL").fetchall()
|
rows = db.execute(
|
||||||
|
"SELECT id FROM item WHERE deleted IS NULL and socketed_into IS NULL"
|
||||||
|
).fetchall()
|
||||||
for row in rows:
|
for row in rows:
|
||||||
items[row["id"]] = Item.load_from_db(row["id"], db=db)
|
items[row["id"]] = Item.load_from_db(row["id"], db=db)
|
||||||
|
|
||||||
@@ -238,16 +244,21 @@ def list_storage_category(stash_name: str, category: str):
|
|||||||
|
|
||||||
if category == "uniques":
|
if category == "uniques":
|
||||||
q = db.execute(
|
q = db.execute(
|
||||||
"SELECT id FROM item INNER JOIN item_extra ON id = item_id WHERE deleted IS NULL AND quality = ?",
|
"SELECT id FROM item INNER JOIN item_extra ON id = item_id "
|
||||||
|
"WHERE deleted IS NULL AND socketed_into IS NULL AND quality = ?",
|
||||||
(int(Quality.UNIQUE),),
|
(int(Quality.UNIQUE),),
|
||||||
)
|
)
|
||||||
elif category == "sets":
|
elif category == "sets":
|
||||||
q = db.execute(
|
q = db.execute(
|
||||||
"SELECT id FROM item INNER JOIN item_extra ON id = item_id WHERE deleted IS NULL AND quality = ?",
|
"SELECT id FROM item INNER JOIN item_extra ON id = item_id "
|
||||||
|
"WHERE deleted IS NULL AND socketed_into IS NULL AND quality = ?",
|
||||||
(int(Quality.SET),),
|
(int(Quality.SET),),
|
||||||
)
|
)
|
||||||
elif category == "misc":
|
elif category == "misc":
|
||||||
q = db.execute("SELECT id FROM item WHERE deleted IS NULL AND is_simple = TRUE")
|
q = db.execute(
|
||||||
|
"SELECT id FROM item "
|
||||||
|
"WHERE deleted IS NULL AND socketed_into IS NULL AND is_simple = TRUE"
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
return "Unexpected category", 400
|
return "Unexpected category", 400
|
||||||
|
|
||||||
@@ -325,7 +336,9 @@ def storage_currency_counts(item_codes: list[str], stash_name: str) -> dict:
|
|||||||
for code in item_codes:
|
for code in item_codes:
|
||||||
currencies[code] = {
|
currencies[code] = {
|
||||||
"count": db.execute(
|
"count": db.execute(
|
||||||
"SELECT COUNT(id) FROM item WHERE code = ? AND deleted IS NULL", (code,)
|
"SELECT COUNT(id) FROM item "
|
||||||
|
"WHERE code = ? AND deleted IS NULL AND socketed_into IS NULL",
|
||||||
|
(code,),
|
||||||
).fetchone()[0],
|
).fetchone()[0],
|
||||||
"name": lookup_basetype(code)["name"],
|
"name": lookup_basetype(code)["name"],
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user