MiFactory / tools /items.py
shengxio's picture
Upload 13 files
be0ac47 verified
raw
history blame
No virus
2.1 kB
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."