add env argument for StorageLoader to load correct module and use it when store game history is enabled
This commit is contained in:
@@ -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
@@ -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'),
|
||||
)
|
||||
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user