dynamodb userBase 추가

This commit is contained in:
2025-02-15 01:36:26 +09:00
parent e59b323ef7
commit 62ba0c760e
5 changed files with 109 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
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.*;
import software.amazon.awssdk.enhanced.dynamodb.mapper.annotations.DynamoDbBean;
@Getter
@Setter
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@DynamoDbBean
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserBaseAttrib extends DynamoDBAttribBase {
@JsonProperty("account_id")
private String accountId;
@JsonProperty("user_guid")
private String userGuid;
private String eoa;
@JsonProperty("selected_character_guid")
private String selectedCharacterGuid;
@JsonProperty("is_intro_completed")
private boolean isIntroCompleted;
@JsonProperty("game_login_datetime")
private String gameLoginDateTime;
@JsonProperty("game_logout_datetime")
private String gameLogoutDateTime;
}

View File

@@ -0,0 +1,29 @@
package com.caliverse.admin.dynamodb.domain.doc;
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 UserBaseDoc extends DynamoDBDocBase {
private String userBaseAttrib;
public String getAttribFieldName() {
return "UserBaseAttrib";
}
@DynamoDbAttribute("UserBaseAttrib")
@JsonProperty("UserBaseAttrib")
public String getAttribValue() {
return userBaseAttrib;
}
public void setAttribValue(String value) {
this.userBaseAttrib = value;
}
}

View File

@@ -0,0 +1,41 @@
package com.caliverse.admin.dynamodb.repository.Impl;
import com.caliverse.admin.dynamodb.domain.atrrib.UserBaseAttrib;
import com.caliverse.admin.dynamodb.domain.doc.UserBaseDoc;
import com.caliverse.admin.dynamodb.repository.BaseDynamoDBRepository;
import com.caliverse.admin.dynamodb.repository.UserBaseRepository;
import com.caliverse.admin.dynamodb.service.DynamoDBOperations;
import com.caliverse.admin.global.common.code.CommonCode;
import com.caliverse.admin.global.common.code.ErrorCode;
import com.caliverse.admin.global.common.constants.DynamoDBConstants;
import com.caliverse.admin.global.common.exception.RestApiException;
import com.caliverse.admin.history.service.DynamodbHistoryLogService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import software.amazon.awssdk.enhanced.dynamodb.Key;
@Component
@Slf4j
public class UserBaseRepositoryImpl extends BaseDynamoDBRepository<UserBaseDoc> implements UserBaseRepository {
public UserBaseRepositoryImpl(DynamoDBOperations operations, DynamodbHistoryLogService dynamodbHistoryLogService, ObjectMapper objectMapper) {
super(operations, UserBaseDoc.class, dynamodbHistoryLogService, objectMapper);
}
@Override
public UserBaseAttrib findUser(String guid) {
Key key = Key.builder()
.partitionValue(DynamoDBConstants.PK_KEY_USER_BASE + guid)
.sortValue(DynamoDBConstants.EMPTY)
.build();
UserBaseDoc doc = findById(key);
try {
return objectMapper.readValue(doc.getAttribValue(), UserBaseAttrib.class);
} catch (JsonProcessingException e) {
throw new RestApiException(CommonCode.ERROR.getHttpStatus(), ErrorCode.DYNAMODB_CONNECTION_ERROR.getMessage());
}
}
}

View File

@@ -0,0 +1,8 @@
package com.caliverse.admin.dynamodb.repository;
import com.caliverse.admin.dynamodb.domain.atrrib.UserBaseAttrib;
import com.caliverse.admin.dynamodb.domain.doc.UserBaseDoc;
public interface UserBaseRepository extends DynamoDBRepository<UserBaseDoc> {
UserBaseAttrib findUser(String guid);
}

View File

@@ -19,6 +19,7 @@ public class DynamoDBConstants {
public static final String PK_KEY_OWNED_BUILDING = "owned_building#";
public static final String PK_KEY_BATTLE_EVENT = "management_battle_event#global";
public static final String PK_KEY_ACCOUNT_BASE = "account_base#";
public static final String PK_KEY_USER_BASE = "user_base#";
//SK