feat(enakgame): filter play history by game and status
GET /customer/enakgame/sessions takes optional game_id and status, so a game reloaded mid-play finds the session it was running (status=STARTED) instead of starting a new one and charging EnakCoin again. An invalid game_id or status is refused. integration-enakgame.md §4.4 now describes recovery after a reload: keep the session_id in sessionStorage, continue a STARTED session before expires_at, and call complete again for a COMPLETED one to get the full answer, prize included. The mobile guide and RFC §11 mention the filters. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
b5d2cd491a
commit
52e8fe11c6
@@ -72,7 +72,7 @@ type EnakGameCustomerService interface {
|
||||
ListGames(ctx context.Context, customerID uuid.UUID) *contract.Response
|
||||
StartSession(ctx context.Context, customerID uuid.UUID, req *contract.StartGameSessionRequest, idempotencyKey string) *contract.Response
|
||||
CompleteSession(ctx context.Context, customerID, sessionID uuid.UUID, in models.GameSessionCompleteInput) *contract.Response
|
||||
ListSessions(ctx context.Context, customerID uuid.UUID, page, limit int) *contract.Response
|
||||
ListSessions(ctx context.Context, customerID uuid.UUID, q models.GameSessionListQuery) *contract.Response
|
||||
GetSession(ctx context.Context, customerID, sessionID uuid.UUID) *contract.Response
|
||||
|
||||
ListVouchers(ctx context.Context, customerID uuid.UUID) *contract.Response
|
||||
@@ -371,8 +371,8 @@ func (s *EnakGameCustomerServiceImpl) CompleteSession(ctx context.Context, custo
|
||||
return respond(ctx, completion, err)
|
||||
}
|
||||
|
||||
func (s *EnakGameCustomerServiceImpl) ListSessions(ctx context.Context, customerID uuid.UUID, page, limit int) *contract.Response {
|
||||
sessions, err := s.sessions.ListSessions(ctx, customerID, page, limit)
|
||||
func (s *EnakGameCustomerServiceImpl) ListSessions(ctx context.Context, customerID uuid.UUID, q models.GameSessionListQuery) *contract.Response {
|
||||
sessions, err := s.sessions.ListSessions(ctx, customerID, q)
|
||||
return respond(ctx, sessions, err)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user