| 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." |