Skip to content

feat: streaming-connection-api/#88 - #89

Merged
itzjb merged 4 commits into
mainfrom
feat/streaming-connection-api/#88
Aug 10, 2026
Merged

feat: streaming-connection-api/#88#89
itzjb merged 4 commits into
mainfrom
feat/streaming-connection-api/#88

Conversation

@itzjb

@itzjb itzjb commented Aug 10, 2026

Copy link
Copy Markdown
Member

변경 내용

  • 송출 계정 연결 목록 조회 API (GET /auth/streaming/accounts) — 플랫폼 중립 배열 응답이에요. 연결이 없으면 404가 아니라 빈 배열([])을 반환해요. 항목: provider, channel_id, channel_title, connected_at, reconnect_required
  • 연결 해제 API (DELETE /auth/streaming/accounts/{provider} → 204) — ①플랫폼 재사용 스트림 삭제 → ②플랫폼 권한 취소(Google revoke) → ③DB 행 삭제 순서를 보장하고, ①·②가 실패해도 ③은 수행해요(이미 토큰이 무효화된 연결의 해제가 정상 시나리오예요)
  • 재연결 필요 상태 구분 — refresh token이 무효화되면(invalid_grant) reconnect_required_at으로 표식하고, stream/start는 502 대신 409 streaming_reconnect_required 를, 조회 API는 reconnect_required: true를 반환해요. Testing 게시 시절 토큰의 만료 시각(refresh_token_expires_at) 경과도 같은 신호로 취급해요
  • 채널 표시 정보 갱신 — 조회는 저장값을 반환하되(quota 절약), 방송 준비(Prepare) 시점에 channels.list 1회로 신선도를 맞춰요
  • 마이그레이션 000005(reconnect_required_at 컬럼) — GORM AutoMigrate·versioned SQL 양쪽 반영이에요

확인 방법

  • go vet ./..., go test -race -count=1 ./... 전 패키지 통과를 확인했어요
  • 해제 3단계의 순서와 실패 경로(리소스 삭제 실패 / revoke 실패에도 행 삭제 수행)를 테스트로 고정했어요 (TestDisconnectRunsStepsInOrder, TestDisconnectContinuesWhenPlatformStepsFail)
  • 각 커밋이 독립적으로 빌드·vet를 통과하는 것을 확인했어요
  • PostgreSQL 게이트 테스트(TestPostgresStreamingAccountUpsert)에 ListByUser/Delete/Mark 검증을 추가했어요 — TEST_DATABASE_URL 설정 시 실행돼요

Closes #88

@itzjb
itzjb marked this pull request as ready for review August 10, 2026 11:20
@itzjb
itzjb requested a review from a team as a code owner August 10, 2026 11:20
@itzjb
itzjb merged commit e1dcb27 into main Aug 10, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: 송출 계정 연결 조회·해제 API 추가

2 participants