in dth/service.go [335:373]
func (db *DBService) UpdateItem(ctx context.Context, key *string, result *TransferResult) error {
// log.Printf("Update item for %s in DynamoDB\n", *key)
etag := ""
if result.etag != nil {
etag = *result.etag
}
expr := "set JobStatus = :s, Etag = :tg, EndTime = :et, EndTimestamp = :etm, SpentTime = :etm - StartTimestamp"
input := &dynamodb.UpdateItemInput{
TableName: &db.tableName,
Key: map[string]dtype.AttributeValue{
"ObjectKey": &dtype.AttributeValueMemberS{Value: *key},
},
ExpressionAttributeValues: map[string]dtype.AttributeValue{
":s": &dtype.AttributeValueMemberS{Value: result.status},
":tg": &dtype.AttributeValueMemberS{Value: etag},
":et": &dtype.AttributeValueMemberS{Value: time.Now().Format("2006/01/02 15:04:05")},
":etm": &dtype.AttributeValueMemberN{Value: fmt.Sprintf("%d", time.Now().Unix())},
},
ReturnValues: "NONE",
UpdateExpression: &expr,
}
_, err := db.client.UpdateItem(ctx, input)
if err != nil {
log.Printf("Failed to update item for %s in DynamoDB - %s\n", *key, err.Error())
// return nil
}
// item = &Item{}
// err = attributevalue.UnmarshalMap(output.Attributes, item)
// if err != nil {
// log.Printf("failed to unmarshal Dynamodb Scan Items, %v", err)
// }
return err
}