| 26 | } |
| 27 | |
| 28 | func (c Client) HSET(key string, fieldValues map[string]Value) (newlySavedFields map[string]Value, err error) { |
| 29 | newlySavedFields = make(map[string]Value) |
| 30 | |
| 31 | for field, value := range fieldValues { |
| 32 | builder := newExpresionBuilder() |
| 33 | builder.updateSetAV(vk, value.ToAV()) |
| 34 | |
| 35 | resp, err := c.ddbClient.UpdateItemRequest(&dynamodb.UpdateItemInput{ |
| 36 | ConditionExpression: builder.conditionExpression(), |
| 37 | ExpressionAttributeNames: builder.expressionAttributeNames(), |
| 38 | ExpressionAttributeValues: builder.expressionAttributeValues(), |
| 39 | Key: keyDef{pk: key, sk: field}.toAV(c), |
| 40 | ReturnValues: dynamodb.ReturnValueAllOld, |
| 41 | TableName: aws.String(c.table), |
| 42 | UpdateExpression: builder.updateExpression(), |
| 43 | }).Send(context.TODO()) |
| 44 | |
| 45 | if err != nil { |
| 46 | return newlySavedFields, err |
| 47 | } |
| 48 | |
| 49 | if len(resp.Attributes) < 1 { |
| 50 | newlySavedFields[field] = value |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | return |
| 55 | } |
| 56 | |
| 57 | func (c Client) HMSET(key string, fieldValues map[string]Value) (err error) { |
| 58 | items := make([]dynamodb.TransactWriteItem, 0, len(fieldValues)) |