Fixed server cache & improved frontend implementation #268_achievements

This commit is contained in:
2023-07-12 13:11:26 +02:00
parent a0d38bec49
commit b99dd1bded
5 changed files with 31 additions and 20 deletions

View File

@@ -5,12 +5,21 @@ from bot_data.model.server import Server
class CacheService:
def __init__(self):
self._cached_server = List(Server)
self._cached_servers = List(Server)
@property
def cached_server(self) -> List[Server]:
return self._cached_server
return self._cached_servers
@cached_server.setter
def cached_server(self, value: List[Server]):
self._cached_server = value
def add_server(self, server: Server):
if self._cached_servers.where(lambda x: x.id == server.id).count() > 0:
return
self._cached_servers.add(server)
def add_servers(self, servers: List[Server]):
new_ids = servers.select(lambda x: x.id)
for s in self._cached_servers:
if s.id in new_ids:
return
self._cached_servers.extend(servers)

View File

@@ -26,7 +26,7 @@ class ServerRepositoryService(ServerRepositoryABC):
for result in results:
servers.append(Server(result[1], result[2], result[3], id=result[0]))
self._cache.cached_server = List(Server, servers)
self._cache.add_servers(servers)
return servers
def get_filtered_servers(self, criteria: ServerSelectCriteria) -> FilteredResult:
@@ -56,13 +56,14 @@ class ServerRepositoryService(ServerRepositoryABC):
def get_server_by_id(self, server_id: int) -> Server:
cs = self._cache.cached_server.where(lambda x: x.id == server_id).single_or_default()
if cs is not None:
return cs
self._logger.trace(__name__, f"Send SQL command: {Server.get_select_by_id_string(server_id)}")
result = self._context.select(Server.get_select_by_id_string(server_id))[0]
server = Server(result[1], result[2], result[3], id=result[0])
self._cache.cached_server.add(server)
self._cache.add_server(server)
return server
def get_server_by_discord_id(self, discord_id: int) -> Server: