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(
|
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
@@ -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'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -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