Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package com.faforever.api.achievements;

import io.swagger.v3.oas.annotations.media.Schema;

record AchievementUpdateRequest(
int playerId,
String achievementId,
Operation operation,
int steps
@Schema(description = "Required for INCREMENT and SET_STEPS_AT_LEAST; ignored (and may be null/omitted) for REVEAL and UNLOCK.", nullable = true)
Integer steps
) {
public enum Operation {
REVEAL, UNLOCK, INCREMENT, SET_STEPS_AT_LEAST
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,16 @@ public void update(AchievementUpdateRequest request) {
switch (request.operation()) {
case REVEAL -> throw new UnsupportedOperationException("REVEAL is not yet implemented");
case UNLOCK -> achievementService.unlock(request.playerId(), request.achievementId());
case INCREMENT -> achievementService.increment(request.playerId(), request.achievementId(), request.steps());
case INCREMENT -> achievementService.increment(request.playerId(), request.achievementId(), requireSteps(request));
case SET_STEPS_AT_LEAST ->
achievementService.setStepsAtLeast(request.playerId(), request.achievementId(), request.steps());
achievementService.setStepsAtLeast(request.playerId(), request.achievementId(), requireSteps(request));
}
}

private static int requireSteps(AchievementUpdateRequest request) {
if (request.steps() == null) {
throw new IllegalArgumentException("steps is required for operation " + request.operation());
}
return request.steps();
}
}
Loading