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(
data_path=os.path.dirname(__file__),
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)),
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.SnakeBuilder import SnakeBuilder
from statestorage.LocalStorage import LocalStorage
from statestorage.StorageLoader import StorageLoader
from flask import Flask
from flask import request
@@ -11,9 +11,10 @@ import logging, json, os, re
class Server:
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.snake_type = snake_type
self.storage_type = storage_type
self.config_file = os.path.join(data_path, 'data', 'snake-config.json')
self.data_path = data_path
@@ -135,7 +136,7 @@ class Server:
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:
game_board.save(
LocalStorage,
StorageLoader.build(self.storage_type),
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