github.com/smugmug/godynamo@v0.0.0-20151122084750-7913028f6623/types/capacity/capacity.go (about) 1 // Package Capacity implements the Capacity type. See: 2 // http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Capacity.html 3 package capacity 4 5 import ( 6 "encoding/json" 7 ) 8 9 type ConsumedCapacityUnit float32 10 11 type ConsumedCapacityUnit_struct struct { 12 CapacityUnits ConsumedCapacityUnit `json:",omitempty"` 13 } 14 15 type ConsumedCapacity struct { 16 CapacityUnits ConsumedCapacityUnit `json:",omitempty"` 17 GlobalSecondaryIndexes map[string]ConsumedCapacityUnit_struct `json:",omitempty"` 18 LocalSecondaryIndexes map[string]ConsumedCapacityUnit_struct `json:",omitempty"` 19 Table *ConsumedCapacityUnit_struct `json:",omitempty"` 20 TableName string `json:",omitempty"` 21 } 22 23 func NewConsumedCapacity() *ConsumedCapacity { 24 c := new(ConsumedCapacity) 25 c.GlobalSecondaryIndexes = make(map[string]ConsumedCapacityUnit_struct) 26 c.LocalSecondaryIndexes = make(map[string]ConsumedCapacityUnit_struct) 27 c.Table = new(ConsumedCapacityUnit_struct) 28 return c 29 } 30 31 type ReturnConsumedCapacity string 32 33 type consumedcapacity ConsumedCapacity 34 35 // Empty determines if this has struct has been assigned 36 func (c ConsumedCapacity) Empty() bool { 37 if ((c.Table == nil) || (c.Table.CapacityUnits == 0)) && 38 len(c.LocalSecondaryIndexes) == 0 && 39 len(c.GlobalSecondaryIndexes) == 0 && 40 c.TableName == "" && 41 c.CapacityUnits == 0 { 42 return true 43 } else { 44 return false 45 } 46 } 47 48 func (c ConsumedCapacity) MarshalJSON() ([]byte, error) { 49 if c.Empty() { 50 return json.Marshal(nil) 51 } 52 ci := consumedcapacity(c) 53 if c.Table != nil && c.Table.CapacityUnits == 0 { 54 ci.Table = nil 55 } 56 return json.Marshal(ci) 57 }