diff --git a/generics_func.py b/generics_1_func.py similarity index 100% rename from generics_func.py rename to generics_1_func.py diff --git a/generics_2_registry_class.py b/generics_2_registry_class.py new file mode 100644 index 0000000..2270be6 --- /dev/null +++ b/generics_2_registry_class.py @@ -0,0 +1,73 @@ +from dataclasses import dataclass +from typing import Dict, Generic, TypeVar + + +T = TypeVar("T") + + +class Registry(Generic[T]): + def __init__(self) -> None: + self._store: Dict[str, T] = {} + + def set_item(self, key: str, value: T) -> None: + self._store[key] = value + + def get_item(self, key: str) -> T: + return self._store[key] + + +@dataclass +class Database: + host: str + port: int + user: str + password: str + + +@dataclass +class ApiEndpoint: + url: str + method: str + + +def main(): + database_registry = Registry[Database]() + database_registry.set_item( + "cloud", + Database( + host="localhost", + port=5432, + user="pero", + password="pero001", + ), + ) + database_registry.set_item( + "central", + Database( + host="central.someserver.com", + port=5432, + user="mirko", + password="mirko001", + ), + ) + + db = database_registry.get_item("cloud") + print(db) + + api_endpoints_registy = Registry[ApiEndpoint]() + api_endpoints_registy.set_item( + "get user", ApiEndpoint(url="/user/{user_id}", method="GET") + ) + api_endpoints_registy.set_item( + "create user", ApiEndpoint(url="/user", method="POST") + ) + api_endpoints_registy.set_item( + "update user", ApiEndpoint(url="/user/{user_id}", method="PUT") + ) + + api_endpoint = api_endpoints_registy.get_item("create user") + print(api_endpoint) + + +if __name__ == "__main__": + main() diff --git a/generics_1.py b/generics_3_without_generics.py similarity index 100% rename from generics_1.py rename to generics_3_without_generics.py diff --git a/generics_2.py b/generics_4_with_generics.py similarity index 100% rename from generics_2.py rename to generics_4_with_generics.py diff --git a/generics_registry.py b/generics_registry.py deleted file mode 100644 index 8b46d69..0000000 --- a/generics_registry.py +++ /dev/null @@ -1,25 +0,0 @@ -from typing import Dict, Generic, TypeVar - - -T = TypeVar("T") - - -class Registry(Generic[T]): - def __init__(self) -> None: - self._store: Dict[str, T] = {} - - def set_item(self, key: str, value: T) -> None: - self._store[key] = value - - def get_item(self, key: str) -> T: - return self._store[key] - - -if __name__ == "__main__": - family_name_reg = Registry[str]() - family_age_reg = Registry[int]() - - family_name_reg.set_item("husband", "steve") - family_name_reg.set_item("dad", "john") - - family_age_reg.set_item("steve", 30)