feat(strategy): expose configurable nick contract

This commit is contained in:
2026-08-15 23:38:18 +09:00
parent acfaab7fd4
commit e6a90800ec
8 changed files with 189 additions and 60 deletions
+36 -13
View File
@@ -46,26 +46,49 @@ class StrategySetService:
return self.get(strategy_set_id, active_only=True)
def create(self, payload: CreateStrategySetRequest) -> StrategySet:
create_strategy = cast(
Callable[..., StrategySet] | None,
getattr(self._repository, "create_strategy_set", None),
)
if create_strategy is not None:
strategy = create_strategy(payload.name, payload.config, status=payload.status)
else:
strategy = self._repository.get_or_create_strategy_set(payload.name, payload.config)
if payload.status != strategy.status:
strategy = self.update(
strategy.id,
UpdateStrategySetRequest(status=payload.status),
try:
create_strategy = cast(
Callable[..., StrategySet] | None,
getattr(self._repository, "create_strategy_set", None),
)
return strategy
if create_strategy is not None:
strategy = create_strategy(
payload.name,
payload.config,
nick=payload.nick,
status=payload.status,
)
else:
strategy = self._repository.get_or_create_strategy_set(payload.name, payload.config)
if payload.nick is not None and payload.nick != strategy.nick:
strategy = self.update(
strategy.id,
UpdateStrategySetRequest(nick=payload.nick),
)
if payload.status != strategy.status:
strategy = self.update(
strategy.id,
UpdateStrategySetRequest(status=payload.status),
)
return strategy
except StrategyConflictError:
raise
except ValueError as exc:
raise StrategyConflictError(str(exc)) from exc
def update(self, strategy_set_id: str, payload: UpdateStrategySetRequest) -> StrategySet:
try:
if payload.nick is None:
return self._repository.update_strategy_set(
strategy_set_id,
name=payload.name,
config=payload.config,
status=payload.status,
)
return self._repository.update_strategy_set(
strategy_set_id,
name=payload.name,
nick=payload.nick,
config=payload.config,
status=payload.status,
)