Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DB ¶
type DB struct {
// DynamoDB Client
Client *dynamodb.DynamoDB
// Name of the Usage table
UsageTableName string
PartitionKeyName string
SortKeyName string
// Use Consistent Reads when scanning or querying. When possbile.
ConsistentRead bool
}
DB contains DynamoDB client and table names
func New ¶
func New(client *dynamodb.DynamoDB, usageTableName string, partitionKeyName string, sortKeyName string) *DB
New creates a new usage DB Service struct, with all the necessary fields configured.
func NewFromEnv ¶
NewFromEnv creates a DB instance configured from environment variables. Requires env vars for:
- AWS_CURRENT_REGION - USAGE_CACHE_DB
func (*DB) GetUsage ¶
func (db *DB) GetUsage(input GetUsageInput) (GetUsageOutput, error)
GetUsage takes a set of filtering criteria and scans the Usage table for the matching records.
func (*DB) GetUsageByDateRange ¶
GetUsageByDateRange returns usage amount for all leases for input date range startDate and endDate are epoch Unix dates
func (*DB) GetUsageByPrincipal ¶
GetUsageByPrincipal returns usage amount for all leases for input Principal startDate is epoch Unix date
type DBer ¶
type DBer interface {
PutUsage(input Usage) error
GetUsageByDateRange(startDate time.Time, endDate time.Time) ([]*Usage, error)
GetUsageByPrincipal(startDate time.Time, principalID string) ([]*Usage, error)
}
The DBer interface includes all methods used by the DB struct to interact with Usage DynamoDB. This is useful if we want to mock the DB service.
type GetUsageInput ¶
type GetUsageInput struct {
StartKeys map[string]string
PrincipalID string
AccountID string
StartDate time.Time
Limit int64
}
GetUsageInput contains the filtering criteria for the GetUsage scan.
type GetUsageOutput ¶
GetUsageOutput contains the scan results as well as the keys for retrieve the next page of the result set.
type MultipleReader ¶
MultipleReader reads multiple usages from the data store
type NewServiceInput ¶
type NewServiceInput struct {
DataSvc ReaderWriter
}
NewServiceInput Input for creating a new Service
type NewUsageInput ¶
type NewUsageInput struct {
PrincipalID string
AccountID string
StartDate int64
EndDate int64
CostAmount float64
CostCurrency string
TimeToLive int64
}
NewUsageInput has the input for create a new usage record
type ReaderWriter ¶
ReaderWriter includes Reader and Writer interfaces
type Service ¶
type Service struct {
// contains filtered or unexported fields
}
Service is a type corresponding to a Usage table record
func NewService ¶
func NewService(input NewServiceInput) *Service
NewService creates a new instance of the Service
type SingleReader ¶
SingleReader Reads Usage information from the data store
type Usage ¶
type Usage struct {
PrincipalID *string `json:"principalId,omitempty" dynamodbav:"PrincipalId" schema:"principalId,omitempty"` // User Principal ID
AccountID *string `json:"accountId,omitempty" dynamodbav:"AccountId,omitempty" schema:"accountId,omitempty"` // AWS Account ID
StartDate *int64 `json:"startDate,omitempty" dynamodbav:"StartDate" schema:"startDate,omitempty"` // Usage start date Epoch Timestamp
EndDate *int64 `json:"endDate,omitempty" dynamodbav:"EndDate,omitempty" schema:"endDate,omitempty"` // Usage ends date Epoch Timestamp
CostAmount *float64 `json:"costAmount,omitempty" dynamodbav:"CostAmount,omitempty" schema:"costAmount,omitempty"` // Cost Amount for given period
CostCurrency *string `json:"costCurrency,omitempty" dynamodbav:"CostCurrency,omitempty" schema:"costCurrency,omitempty"` // Cost currency
TimeToLive *int64 `json:"timeToLive,omitempty" dynamodbav:"TimeToLive,omitempty" schema:"timeToLive,omitempty"` // ttl attribute
Limit *int64 `json:"-" dynamodbav:"-" schema:"limit,omitempty"`
NextStartDate *int64 `json:"-" dynamodbav:"-" schema:"nextStartDate,omitempty"`
NextPrincipalID *string `json:"-" dynamodbav:"-" schema:"nextPrincipalId,omitempty"`
}
Usage item
func NewUsage ¶
func NewUsage(input NewUsageInput) (*Usage, error)
NewUsage creates a new instance of usage