Skip to content

#1154 make delete return entity #1185

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 30, 2024

Conversation

MatejNedic
Copy link
Member

@MatejNedic MatejNedic commented Jul 30, 2024

📢 Type of change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring

📜 Description

#1154

💡 Motivation and Context

💚 How did you test it?

📝 Checklist

  • I reviewed submitted code
  • I added tests to verify changes
  • I updated reference documentation to reflect the change
  • All tests passing
  • No breaking changes

🔮 Next steps

@github-actions github-actions bot added the component: dynamodb DynamoDB integration related issue label Jul 30, 2024
@MatejNedic MatejNedic merged commit 7570672 into awspring:main Jul 30, 2024
4 checks passed
@alexanderankin
Copy link

thank you!

adding to my codebase for now until i can change the import and type declaration back to the official one is released:

import io.awspring.cloud.dynamodb.DefaultDynamoDbTableNameResolver;
import io.awspring.cloud.dynamodb.DefaultDynamoDbTableSchemaResolver;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedClient;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbTable;
import software.amazon.awssdk.enhanced.dynamodb.Key;

/**
 * @see <a href="https://github.com/awspring/spring-cloud-aws/pull/1185">awspring/spring-cloud-aws#1185</a>
 */
@RequiredArgsConstructor
@Component
public class DynamoDbTemplateIssue1185 {
    private final DefaultDynamoDbTableNameResolver tableNameResolver;
    private final DefaultDynamoDbTableSchemaResolver dynamoDbTableSchemaResolver;
    private final DynamoDbEnhancedClient dynamoDbEnhancedClient;

    public <T> T delete(Key key, Class<T> clazz) {
        Assert.notNull(key, "key is required");
        Assert.notNull(clazz, "clazz is required");
        return prepareTable(clazz).deleteItem(key);
    }

    public <T> T delete(T entity) {
        Assert.notNull(entity, "entity is required");
        return prepareTable(entity).deleteItem(entity);
    }

    protected <T> DynamoDbTable<T> prepareTable(Class<T> clazz) {
        Assert.notNull(clazz, "clazz is required");
        String tableName = tableNameResolver.resolve(clazz);
        return dynamoDbEnhancedClient.table(tableName, dynamoDbTableSchemaResolver.resolve(clazz));
    }

    @SuppressWarnings("unchecked")
    protected <T> DynamoDbTable<T> prepareTable(T entity) {
        Assert.notNull(entity, "entity is required");
        String tableName = tableNameResolver.resolve(entity.getClass());
        return (DynamoDbTable<T>) dynamoDbEnhancedClient.table(tableName,
                dynamoDbTableSchemaResolver.resolve(entity.getClass()));
    }
}

kcsurapaneni pushed a commit to kcsurapaneni/spring-cloud-aws that referenced this pull request Jun 13, 2025
Update Delete operations to return entity object
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: dynamodb DynamoDB integration related issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants