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  }