import json import pandas as pd from uuid import uuid4 class ItemManager: def __init__(self,name) -> None: self.name = name self.filename = f"data/{self.name}s.json" with open(self.filename,"r") as f: self.items = json.load(f) def get_items(self): df = pd.DataFrame(self.items) return df def get_item(self,value,attribute="name"): df = pd.DataFrame(self.items) if attribute in df.columns: return df[df[attribute]==value] else: return "The attribute you are searching for does not exist." def add_item(self,item): if type(item) == dict: self.items.append(item) elif type(item) == str: item = json.loads(item) else: return "item must be a dictionary or a string." item.update({"id":str(uuid4())}) self.items.append(item) with open(self.filename,"w") as f: json.dump(self.items,f) def update_item(self,item): if type(item) == dict: pass elif type(item) == str: item = json.loads(item) else: return "item must be a dictionary or a string." for i in range(len(self.items)): if self.items[i]["id"] == item["id"]: self.items[i] = item with open(self.filename,"w") as f: json.dump(self.items,f) return "item updated." return "item not found." def summarize_item(self): df = pd.DataFrame(self.items) return df.groupby("name").agg( count=("id","count") ) def remove_item(self,item_id): for i in range(len(self.items)): if self.items[i]["id"] == item_id: self.items.pop(i) with open(self.filename,"w") as f: json.dump(self.items,f) return "item removed." return "item not found."