from aim.digifeeds.alma_client import AlmaClient
from aim.digifeeds.db_client import DBClient
from aim.digifeeds.item import Item
from requests.exceptions import HTTPError
[docs]
def add_to_db(barcode: str):
item = Item(DBClient().get_or_add_item(barcode))
if not item.has_status("added_to_digifeeds_set"):
try:
AlmaClient().add_barcode_to_digifeeds_set(barcode)
except HTTPError as ext_inst:
errorList = ext_inst.response.json()["errorList"]["error"]
if any(e["errorCode"] == "60120" for e in errorList):
if not item.has_status("not_found_in_alma"):
item = Item(
DBClient().add_item_status(
barcode=barcode, status="not_found_in_alma"
)
)
return item
else:
raise ext_inst
item = Item(
DBClient().add_item_status(barcode=barcode, status="added_to_digifeeds_set")
)
return item