From 44948b5ccdbc024ddc201cc38d5e231d42998321 Mon Sep 17 00:00:00 2001 From: bcjang Date: Mon, 24 Nov 2025 15:33:00 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9B=94=EB=93=9C=EC=9D=B4=EB=B2=A4=ED=8A=B8?= =?UTF-8?q?=20dynamodb=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../atrrib/WorldEventGlobalScoreAttrib.java | 38 ++++++++++++ .../domain/doc/WorldEventGlobalScoreDoc.java | 31 ++++++++++ .../domain/doc/WorldEventScheduleDoc.java | 12 ++-- .../Impl/WorldEventScoreRepositoryImpl.java | 61 +++++++++++++++++++ .../repository/WorldEventScoreRepository.java | 21 +++++++ 5 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/caliverse/admin/dynamodb/domain/atrrib/WorldEventGlobalScoreAttrib.java create mode 100644 src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventGlobalScoreDoc.java create mode 100644 src/main/java/com/caliverse/admin/dynamodb/repository/Impl/WorldEventScoreRepositoryImpl.java create mode 100644 src/main/java/com/caliverse/admin/dynamodb/repository/WorldEventScoreRepository.java diff --git a/src/main/java/com/caliverse/admin/dynamodb/domain/atrrib/WorldEventGlobalScoreAttrib.java b/src/main/java/com/caliverse/admin/dynamodb/domain/atrrib/WorldEventGlobalScoreAttrib.java new file mode 100644 index 0000000..8f847fd --- /dev/null +++ b/src/main/java/com/caliverse/admin/dynamodb/domain/atrrib/WorldEventGlobalScoreAttrib.java @@ -0,0 +1,38 @@ +package com.caliverse.admin.dynamodb.domain.atrrib; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.PropertyNamingStrategies; +import com.fasterxml.jackson.databind.annotation.JsonNaming; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; +import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute; +import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; + +@Getter +@Setter +@ToString(callSuper = true) +@NoArgsConstructor +@DynamoDbBean +@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) +public class WorldEventGlobalScoreAttrib { + @JsonProperty("world_event_id") + private String worldEventId; + private Integer score; + @JsonProperty("update_time") + private String updateTime; + + @DynamoDbAttribute("world_event_id") + public String getRankingGuid() { + return worldEventId; + } + @DynamoDbAttribute("score") + public Integer getScore() { + return score; + } + @DynamoDbAttribute("update_time") + public String getUpdateTime() { + return updateTime; + } +} diff --git a/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventGlobalScoreDoc.java b/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventGlobalScoreDoc.java new file mode 100644 index 0000000..1cbb949 --- /dev/null +++ b/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventGlobalScoreDoc.java @@ -0,0 +1,31 @@ +package com.caliverse.admin.dynamodb.domain.doc; + +import com.caliverse.admin.dynamodb.domain.atrrib.WorldEventGlobalScoreAttrib; +import com.caliverse.admin.global.common.constants.DynamoDBConstants; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbAttribute; +import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; + +@EqualsAndHashCode(callSuper = true) +@NoArgsConstructor +@DynamoDbBean +public class WorldEventGlobalScoreDoc extends DynamoDBDocBase { + private WorldEventGlobalScoreAttrib attrib; + + public String getAttribFieldName() { + return DynamoDBConstants.ATTRIB_WORLD_EVENT_SCORE; + } + + @DynamoDbAttribute(DynamoDBConstants.ATTRIB_WORLD_EVENT_SCORE) + @JsonProperty(DynamoDBConstants.ATTRIB_WORLD_EVENT_SCORE) + public WorldEventGlobalScoreAttrib getAttribValue() { + return attrib; + } + + public void setAttribValue(WorldEventGlobalScoreAttrib value) { + this.attrib = value; + } +} + diff --git a/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventScheduleDoc.java b/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventScheduleDoc.java index 42989be..747d54d 100644 --- a/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventScheduleDoc.java +++ b/src/main/java/com/caliverse/admin/dynamodb/domain/doc/WorldEventScheduleDoc.java @@ -11,20 +11,20 @@ import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean; @NoArgsConstructor @DynamoDbBean public class WorldEventScheduleDoc extends DynamoDBDocBase { - private String battleEventAttrib; + private String attrib; public String getAttribFieldName() { - return DynamoDBConstants.ATTRIB_RANKING_SCHEDULER; + return DynamoDBConstants.ATTRIB_WORLD_EVENT_SCHEDULER; } - @DynamoDbAttribute("BattleEventAttrib") - @JsonProperty("BattleEventAttrib") + @DynamoDbAttribute(DynamoDBConstants.ATTRIB_WORLD_EVENT_SCHEDULER) + @JsonProperty(DynamoDBConstants.ATTRIB_WORLD_EVENT_SCHEDULER) public String getAttribValue() { - return battleEventAttrib; + return attrib; } public void setAttribValue(String value) { - this.battleEventAttrib = value; + this.attrib = value; } } diff --git a/src/main/java/com/caliverse/admin/dynamodb/repository/Impl/WorldEventScoreRepositoryImpl.java b/src/main/java/com/caliverse/admin/dynamodb/repository/Impl/WorldEventScoreRepositoryImpl.java new file mode 100644 index 0000000..7db5fda --- /dev/null +++ b/src/main/java/com/caliverse/admin/dynamodb/repository/Impl/WorldEventScoreRepositoryImpl.java @@ -0,0 +1,61 @@ +package com.caliverse.admin.dynamodb.repository.Impl; + +import com.caliverse.admin.domain.entity.EFilterOperator; +import com.caliverse.admin.dynamodb.domain.atrrib.WorldEventGlobalScoreAttrib; +import com.caliverse.admin.dynamodb.domain.doc.WorldEventGlobalScoreDoc; +import com.caliverse.admin.dynamodb.dto.PageResult; +import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository; +import com.caliverse.admin.dynamodb.repository.WorldEventScoreRepository; +import com.caliverse.admin.dynamodb.service.DynamoDBOperations; +import com.caliverse.admin.global.common.constants.DynamoDBConstants; +import com.caliverse.admin.mongodb.service.DynamodbHistoryLogService; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; +import software.amazon.awssdk.enhanced.dynamodb.Key; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; + +import java.util.Map; + +@Component +@Slf4j +public class WorldEventScoreRepositoryImpl extends BaseDynamoDBRepository implements WorldEventScoreRepository { + public WorldEventScoreRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) { + super(operations, WorldEventGlobalScoreDoc.class, dynamodbHistoryLogService, objectMapper); + } + + @Override + public PageResult getWorldEventScoreListWithPaging(String sortKeyPrefix, String filterAttributeName, EFilterOperator filterOperator, String filterAttributeValue, Map exclusiveStartKey, boolean sortIndex) { + String pk = DynamoDBConstants.PK_KEY_WORLD_EVENT_TOTAL_SCORE; + + return findByPaging( + pk, + sortKeyPrefix, + filterAttributeName, + filterOperator, + filterAttributeValue, + exclusiveStartKey, + sortIndex + ); + } + + @Override + public WorldEventGlobalScoreAttrib findWorldEventScore(Integer eventId) { + Key key = Key.builder() + .partitionValue(DynamoDBConstants.PK_KEY_WORLD_EVENT_TOTAL_SCORE) + .sortValue(eventId.toString()) + .build(); + + WorldEventGlobalScoreDoc doc = findById(key); + + if(doc != null){ + try { + return doc.getAttribValue(); + }catch (Exception e){ + log.error("findWorldEventScore Error: {}", e.getMessage()); + return null; + } + } + return null; + } +} diff --git a/src/main/java/com/caliverse/admin/dynamodb/repository/WorldEventScoreRepository.java b/src/main/java/com/caliverse/admin/dynamodb/repository/WorldEventScoreRepository.java new file mode 100644 index 0000000..927af24 --- /dev/null +++ b/src/main/java/com/caliverse/admin/dynamodb/repository/WorldEventScoreRepository.java @@ -0,0 +1,21 @@ +package com.caliverse.admin.dynamodb.repository; + +import com.caliverse.admin.domain.entity.EFilterOperator; +import com.caliverse.admin.dynamodb.domain.atrrib.WorldEventGlobalScoreAttrib; +import com.caliverse.admin.dynamodb.domain.doc.WorldEventGlobalScoreDoc; +import com.caliverse.admin.dynamodb.dto.PageResult; +import software.amazon.awssdk.services.dynamodb.model.AttributeValue; + +import java.util.Map; + +public interface WorldEventScoreRepository extends DynamoDBRepository { + PageResult getWorldEventScoreListWithPaging( + String sortKeyPrefix, + String filterAttributeName, + EFilterOperator filterOperator, + String filterAttributeValue, + Map exclusiveStartKey, + boolean sortIndex + ); + WorldEventGlobalScoreAttrib findWorldEventScore(Integer eventId); +}