diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/models/achievements/Achievement.java b/src/main/java/org/patinanetwork/codebloom/common/db/models/achievements/Achievement.java index 950504952..70a09d814 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/models/achievements/Achievement.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/models/achievements/Achievement.java @@ -23,6 +23,9 @@ public class Achievement { @NotNullColumn private String userId; + @NotNullColumn + private String leaderboardId; + @NotNullColumn private AchievementPlaceEnum place; diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementRepository.java b/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementRepository.java index dbf7e7d23..9075c47cb 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementRepository.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementRepository.java @@ -15,6 +15,7 @@ public interface AchievementRepository { *
  • title *
  • description *
  • isActive + *
  • leaderboardId * */ void createAchievement(Achievement achievement); @@ -29,6 +30,7 @@ public interface AchievementRepository { *
  • description *
  • isActive *
  • deletedAt + *
  • leaderboardId * * * @return updated achievement if successful diff --git a/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementSqlRepository.java b/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementSqlRepository.java index 09bffe052..1ea215bba 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementSqlRepository.java +++ b/src/main/java/org/patinanetwork/codebloom/common/db/repos/achievements/AchievementSqlRepository.java @@ -26,6 +26,7 @@ public class AchievementSqlRepository implements AchievementRepository { var title = rs.getString("title"); var description = rs.getString("description"); var isActive = rs.getBoolean("isActive"); + var leaderboardId = rs.getString("leaderboardId"); var createdAt = StandardizedOffsetDateTime.normalize(rs.getObject("createdAt", OffsetDateTime.class)); OffsetDateTime deletedAt = StandardizedOffsetDateTime.normalize(rs.getObject("deletedAt", OffsetDateTime.class)); @@ -34,6 +35,7 @@ public class AchievementSqlRepository implements AchievementRepository { .userId(userId) .place(place) .leaderboard(leaderboard) + .leaderboardId(leaderboardId) .title(title) .description(description) .isActive(isActive) @@ -53,9 +55,9 @@ public void createAchievement(final Achievement achievement) { achievement.setId(UUID.randomUUID().toString()); String sql = """ INSERT INTO "Achievement" - (id, "userId", place, leaderboard, title, description, "isActive", "deletedAt") + (id, "userId", place, leaderboard, title, description, "isActive", "deletedAt", "leaderboardId") VALUES - (:id, :userId, :place, :leaderboard, :title, :description, :isActive, :deletedAt) + (:id, :userId, :place, :leaderboard, :title, :description, :isActive, :deletedAt, :leaderboardId) RETURNING "createdAt" """; @@ -71,6 +73,7 @@ public void createAchievement(final Achievement achievement) { .map(Enum::name) .orElse(null), Types.OTHER) + .param("leaderboardId", achievement.getLeaderboardId()) .param("title", achievement.getTitle()) .param("description", achievement.getDescription()) .param("isActive", achievement.isActive()) @@ -94,7 +97,8 @@ public Achievement updateAchievement(final Achievement achievement) { title = :title, description = :description, "isActive" = :isActive, - "deletedAt" = :deletedAt + "deletedAt" = :deletedAt, + "leaderboardId" = :leaderboardId WHERE id = :id """; @@ -108,6 +112,7 @@ public Achievement updateAchievement(final Achievement achievement) { .map(Enum::name) .orElse(null), Types.OTHER) + .param("leaderboardId", achievement.getLeaderboardId()) .param("title", achievement.getTitle()) .param("description", achievement.getDescription()) .param("isActive", achievement.isActive()) @@ -150,7 +155,8 @@ public Achievement getAchievementById(final String id) { description, "isActive", "createdAt", - "deletedAt" + "deletedAt", + "leaderboardId" FROM "Achievement" WHERE @@ -178,7 +184,8 @@ public List getAchievementsByUserId(final String userId) { description, "isActive", "createdAt", - "deletedAt" + "deletedAt", + "leaderboardId" FROM "Achievement" WHERE diff --git a/src/main/java/org/patinanetwork/codebloom/common/dto/achievement/AchievementDto.java b/src/main/java/org/patinanetwork/codebloom/common/dto/achievement/AchievementDto.java index 3d12f01fc..73f15a959 100644 --- a/src/main/java/org/patinanetwork/codebloom/common/dto/achievement/AchievementDto.java +++ b/src/main/java/org/patinanetwork/codebloom/common/dto/achievement/AchievementDto.java @@ -30,6 +30,9 @@ public class AchievementDto { @Schema(requiredMode = Schema.RequiredMode.REQUIRED, nullable = true) private Tag leaderboard; + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) + private String leaderboardId; + @Schema(requiredMode = Schema.RequiredMode.REQUIRED) private String title; @@ -52,6 +55,7 @@ public static AchievementDto fromAchievement(final Achievement achievement) { .leaderboard(achievement.getLeaderboard()) .place(achievement.getPlace()) .title(achievement.getTitle()) + .leaderboardId(achievement.getLeaderboardId()) .description(achievement.getDescription()) .isActive(achievement.isActive()) .createdAt(achievement.getCreatedAt())