add env argument for StorageLoader to load correct module and use it when store game history is enabled

This commit is contained in:
2024-05-05 22:12:14 +02:00
parent 10c7f2656c
commit 7dd46dd72b
3 changed files with 12 additions and 3 deletions
+1
View File
@@ -25,6 +25,7 @@ if __name__ == "__main__":
server = Server( server = Server(
data_path=os.path.dirname(__file__), data_path=os.path.dirname(__file__),
snake_type=os.environ.get("SNAKE", "TemplateSnake"), snake_type=os.environ.get("SNAKE", "TemplateSnake"),
storage_type=os.environ.get("STORAGE", "LocalStorage"),
store_game_when_win_and_moves_are_bigger_as=int(os.environ.get("STORE_IF_WIN_AND_MOVES_ARE_BIGGER_AS", 10)), store_game_when_win_and_moves_are_bigger_as=int(os.environ.get("STORE_IF_WIN_AND_MOVES_ARE_BIGGER_AS", 10)),
debug=os.environ.get("DEBUG_SERVER", False) debug=os.environ.get("DEBUG_SERVER", False)
) )
+4 -3
View File
@@ -2,7 +2,7 @@ from server.Files import read_file
from server.GameBoard import GameBoard from server.GameBoard import GameBoard
from server.SnakeBuilder import SnakeBuilder from server.SnakeBuilder import SnakeBuilder
from statestorage.LocalStorage import LocalStorage from statestorage.StorageLoader import StorageLoader
from flask import Flask from flask import Flask
from flask import request from flask import request
@@ -11,9 +11,10 @@ import logging, json, os, re
class Server: class Server:
default_snake_config = {"apiversion":"1","author":"","color":"#888888","head":"default","tail":"default"} default_snake_config = {"apiversion":"1","author":"","color":"#888888","head":"default","tail":"default"}
def __init__(self, data_path:str, snake_type:str, debug:bool=False, store_game_when_win_and_moves_are_bigger_as:int=10): def __init__(self, data_path:str, snake_type:str, storage_type:str, debug:bool=False, store_game_when_win_and_moves_are_bigger_as:int=10):
self.debug = debug self.debug = debug
self.snake_type = snake_type self.snake_type = snake_type
self.storage_type = storage_type
self.config_file = os.path.join(data_path, 'data', 'snake-config.json') self.config_file = os.path.join(data_path, 'data', 'snake-config.json')
self.data_path = data_path self.data_path = data_path
@@ -135,7 +136,7 @@ class Server:
game_board = self._get_game_board(game_state, end=True) game_board = self._get_game_board(game_state, end=True)
if not game_board.get_winner() == "me" and not game_board.get_turn() <= self.store_game_when_win_and_moves_are_bigger_as: if not game_board.get_winner() == "me" and not game_board.get_turn() <= self.store_game_when_win_and_moves_are_bigger_as:
game_board.save( game_board.save(
LocalStorage, StorageLoader.build(self.storage_type),
file_path=os.path.join(self.data_path, 'data'), file_path=os.path.join(self.data_path, 'data'),
) )
+7
View File
@@ -0,0 +1,7 @@
class StorageLoader:
@classmethod
def build(self, selected_storage:str):
storage_module = __import__(f'statestorage.{selected_storage}', fromlist=[selected_storage])
storage_class = getattr(storage_module, selected_storage)
return storage_class