From 4e60d1d37ac14040ebb170743a672164018d3fc4 Mon Sep 17 00:00:00 2001
From: Houkime <>
Date: Mon, 12 Dec 2022 10:15:33 +0000
Subject: [PATCH] refactor(tokens-repo): move token getters to abstract class

Not performance-optimal, but not in critical path either.
100 tokens max irl?
---
 .../tokens/abstract_tokens_repository.py       | 15 +++++++++++++--
 .../tokens/json_tokens_repository.py           | 18 ------------------
 2 files changed, 13 insertions(+), 20 deletions(-)

diff --git a/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py b/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py
index 3cf6e1d..2840917 100644
--- a/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py
+++ b/selfprivacy_api/repositories/tokens/abstract_tokens_repository.py
@@ -3,18 +3,29 @@ from datetime import datetime
 from typing import Optional
 
 from selfprivacy_api.models.tokens.token import Token
+from selfprivacy_api.repositories.tokens.exceptions import TokenNotFound
 from selfprivacy_api.models.tokens.recovery_key import RecoveryKey
 from selfprivacy_api.models.tokens.new_device_key import NewDeviceKey
 
 
 class AbstractTokensRepository(ABC):
-    @abstractmethod
     def get_token_by_token_string(self, token_string: str) -> Optional[Token]:
         """Get the token by token"""
+        tokens = self.get_tokens()
+        for token in tokens:
+            if token.token == token_string:
+                return token
+
+        raise TokenNotFound("Token not found!")
 
-    @abstractmethod
     def get_token_by_name(self, token_name: str) -> Optional[Token]:
         """Get the token by name"""
+        tokens = self.get_tokens()
+        for token in tokens:
+            if token.device_name == token_name:
+                return token
+
+        raise TokenNotFound("Token not found!")
 
     @abstractmethod
     def get_tokens(self) -> list[Token]:
diff --git a/selfprivacy_api/repositories/tokens/json_tokens_repository.py b/selfprivacy_api/repositories/tokens/json_tokens_repository.py
index 30d8021..86e756a 100644
--- a/selfprivacy_api/repositories/tokens/json_tokens_repository.py
+++ b/selfprivacy_api/repositories/tokens/json_tokens_repository.py
@@ -23,24 +23,6 @@ DATETIME_FORMAT = "%Y-%m-%dT%H:%M:%S.%f"
 
 
 class JsonTokensRepository(AbstractTokensRepository):
-    def get_token_by_token_string(self, token_string: str) -> Optional[Token]:
-        """Get the token by token"""
-        tokens = self.get_tokens()
-        for token in tokens:
-            if token.token == token_string:
-                return token
-
-        raise TokenNotFound("Token not found!")
-
-    def get_token_by_name(self, token_name: str) -> Optional[Token]:
-        """Get the token by name"""
-        tokens = self.get_tokens()
-        for token in tokens:
-            if token.device_name == token_name:
-                return token
-
-        raise TokenNotFound("Token not found!")
-
     def get_tokens(self) -> list[Token]:
         """Get the tokens"""
         tokens_list = []