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