feat: add service token rename command (#40)

* docs: preserve original issue 5 body

* feat: add service token rename command

* test: normalize rich option errors
This commit is contained in:
2026-09-19 21:19:39 +09:00
committed by GitHub
parent 996127f215
commit deaaa96c46
20 changed files with 882 additions and 7 deletions
+19
View File
@@ -35,6 +35,12 @@ class IssuedServiceToken:
auth_token: AuthToken
@dataclass
class RenamedServiceToken:
auth_token: AuthToken
changed: bool
def get_auth_service_repository(settings: Settings = Depends(get_settings)) -> PortfolioRepository:
return get_portfolio_repository_from_settings(settings)
@@ -130,6 +136,19 @@ class AuthService:
raw_token, auth_token = self._repository.rotate_service_token(name)
return IssuedServiceToken(token=raw_token, auth_token=auth_token)
def rename_service_token(self, name: str, new_name: str) -> RenamedServiceToken:
if name == new_name:
existing = self._repository.get_service_token_by_name(name)
if existing is None:
raise ValueError(f"서비스 토큰을 찾을 수 없습니다: {name}")
return RenamedServiceToken(auth_token=existing, changed=False)
try:
renamed = self._repository.rename_service_token(name, new_name)
except psycopg.errors.UniqueViolation as exc:
raise ValueError(f"이미 존재하는 서비스 토큰 이름입니다: {new_name}") from exc
return RenamedServiceToken(auth_token=renamed, changed=True)
def rebind_service_token(self, name: str, daemon_id: str) -> tuple[str | None, AuthToken]:
existing = self._repository.get_service_token_by_name(name)
if existing is None: