File size: 2,095 Bytes
be0ac47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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."