Fixed server cache & improved frontend implementation #268_achievements
This commit is contained in:
@@ -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)
|
||||
|
@@ -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:
|
||||
|
Reference in New Issue
Block a user