Skip to content

Commit 3597d76

Browse files
committed
Refactor strategy service and engine initialization
1 parent 5b1f27c commit 3597d76

File tree

5 files changed

+41
-26
lines changed

5 files changed

+41
-26
lines changed

app/api/v1/endpoints/strategy.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@
2020
@router.get("", response_model=FindAllStrategyResult)
2121
@inject
2222
def get_strategy_list(
23-
schema: FindBase = Depends(),
2423
service: StrategyService = Depends(Provide[Container.strategy_service]),
2524
):
26-
return service.get_list(schema)
25+
response = service.list_all_strategies()
26+
print(" ")
27+
print(" ")
28+
print(" ")
29+
print("---------------------------------------")
30+
return response
2731

2832

2933
# @router.get("{id}", response_model=FindStrategyResult)

app/engine/__init_.py

Lines changed: 0 additions & 21 deletions
This file was deleted.

app/engine/__init__.py

Whitespace-only changes.

app/engine/all_engine_strategies.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import os
2+
import importlib
3+
from app.engine.check_base_strategy_class import check_class_methods_and_variables
4+
5+
6+
def all_engine_strategies():
7+
strategies = []
8+
for file in os.listdir("app/engine"):
9+
if (
10+
file.endswith(".py") and
11+
file != "__init__.py" and
12+
file != "check_base_strategy_class.py" and
13+
file != "all_engine_strategies.py"):
14+
strategy = file[:-3]
15+
strategies.append(strategy)
16+
17+
# import all strategies and check if they are valid with check_base_strategy_class
18+
# if not, remove them from the list
19+
20+
for strategy in strategies:
21+
module = importlib.import_module(f"app.engine.{strategy}")
22+
# get classes Name and check if it is a valid strategy
23+
classes = [getattr(module, name)
24+
for name in dir(module) if name[0].isupper()]
25+
for Class in classes:
26+
if not check_class_methods_and_variables(Class):
27+
strategies.remove(strategy)
28+
break
29+
30+
return strategies

app/services/strategy_service.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
from app.core.exceptions import ConflictError
22
from app.repository.strategy_repository import StrategyRepository
33
from app.services.base_service import BaseService
4-
from app.engine.import_app_engine_modules import import_app_engine_modules
4+
from app.engine.all_engine_strategies import all_engine_strategies
5+
56

67
class StrategyService(BaseService):
78
def __init__(self, strategy_repository: StrategyRepository):
89
self.strategy_repository = strategy_repository
910
super().__init__(strategy_repository)
1011

11-
def list_all_strategies(self, schema):
12-
all_strategies = import_app_engine_modules
12+
def list_all_strategies(self):
13+
all_strategies = all_engine_strategies()
14+
print(all_strategies)
1315
pass
1416

1517
def get_strategy_by_id(self, id):

0 commit comments

Comments
 (0)