From ac5c0fca171b19a768842ce89639a423978df00d Mon Sep 17 00:00:00 2001 From: Roland Thomas Date: Sun, 9 Jun 2024 19:11:26 -0400 Subject: [PATCH] Add item_manager.py --- cli/item_manager.py | 75 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 cli/item_manager.py diff --git a/cli/item_manager.py b/cli/item_manager.py new file mode 100644 index 0000000..67916f1 --- /dev/null +++ b/cli/item_manager.py @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +""" This is a simple example of a class that manages items. """ +from dataclasses import dataclass +from typing import List, Dict, Any + +@dataclass +class Item: + """ This is a simple class that represents an item. """ + id: str + name: str + json_data: Dict[str, Any] + +class ItemManager: + """ This is a simple class that manages items. """ + def __init__(self): + self.items_by_id: Dict[str, Item] = {} + self.ordered_items: List[Item] = [] + + def add_item(self, item: Item): + if item.id not in self.items_by_id: + self.items_by_id[item.id] = item + self.ordered_items.append(item) + print(f"Item added: {item}") + else: + print(f"Item with ID {item.id} already exists.") + + def add_items_from_json_list(self, json_list: List[Dict[str, Any]]): + for json_obj in json_list: + item = Item(id=json_obj['id'], name=json_obj['name'], json_data=json_obj) + self.add_item(item) + + def remove_item_by_id(self, item_id: str): + if item_id in self.items_by_id: + item_to_remove = self.items_by_id.pop(item_id) + self.ordered_items = [item for item in self.ordered_items if item.id != item_id] + print(f"Item removed: {item_to_remove}") + else: + print(f"Item with ID {item_id} not found.") + + def fetch_more_items_and_add(self, json_list: List[Dict[str, Any]]): + for json_obj in json_list: + item = Item(id=json_obj['id'], name=json_obj['name'], json_data=json_obj) + if item.id not in self.items_by_id: + self.add_item(item) + + def get_all_items(self) -> List[Item]: + return self.ordered_items + + +def main(): + item_manager = ItemManager() + + json_list_1 = [ + {"id": "1", "name": "Item1", "data": {"key1": "value1"}}, + {"id": "2", "name": "Item2", "data": {"key2": "value2"}}, + {"id": "1", "name": "Item1", "data": {"key1": "value1"}} + ] + + item_manager.add_items_from_json_list(json_list_1) + + json_list_2 = [ + {"id": "3", "name": "Item3", "data": {"key3": "value3"}}, + {"id": "4", "name": "Item4", "data": {"key4": "value4"}} + ] + + item_manager.fetch_more_items_and_add(json_list_2) + + item_manager.remove_item_by_id("2") + + all_items = item_manager.get_all_items() + for item in all_items: + print(item) + +if __name__ == "__main__": + main() \ No newline at end of file