github.com/fogfish/dynamo/v2 (go): Package dynamo implements a simple key-value abstraction to store algebraic data types with AWS services:  ↣ AWS DynamoDB  ↣ AWS S3  The library encourages developers to use Golang struct to define domain models, write correct, maintainable code. Using the library, the application can achieve the ideal data model that would require a single request to DynamoDB and model one-to-one, one-to-many and even many-to-many relations. The library uses generic programming style to implement actual storage I/O, while expose external domain object as `[T dynamo.Thing]` with implicit conversion back and forth between a concrete struct(s).  Essentially, it implement a following generic key-value trait to access domain objects. The library AWS Go SDK under the hood  Define an application domain model using product types, which are strongly expressed by struct in Go.  Make sure that defined type implements dynamo.Thing interface for identity  Use DynamoDB attributes from AWS Go SDK to specify marshalling rules https://docs.aws.amazon.com/sdk-for-go/api/service/dynamodb/dynamodbattribute.  Create an implicit I/O endpoint to Dynamo DB table  Creates a new entity, or replaces an old entity with a new value.  Lookup the struct using Get. This function takes input structure as key and return a new copy upon the completion. The only requirement - ID has to be defined.  Remove the entity  Apply a partial update using Update function. This function takes a partially defined structure, patches the instance at storage and returns remaining attributes.  Use following DynamoDB schema:  See README at https://github.com/fogfish/dynamo
Keywords: aws-dynamodb|aws-s3|dynamodb|golang|key-value|orm|orm-library|type-safe