premium

package
v4.19.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 4, 2023 License: MPL-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultMaxQuotaFailures = 10 // 5 minutes
View Source
const DefaultQuotaCheckInterval = 30 * time.Second

Variables

View Source
var ErrNoQuota = errors.New("no remaining quota for the month, please increase your usage limit if you want to continue syncing this plugin")

Functions

func ContainsPaidTables

func ContainsPaidTables(tables schema.Tables) bool

ContainsPaidTables returns true if any of the tables are paid

func MakeAllTablesPaid

func MakeAllTablesPaid(tables schema.Tables) schema.Tables

MakeAllTablesPaid sets all tables to paid (including relations)

func WithCancelOnQuotaExceeded

func WithCancelOnQuotaExceeded(ctx context.Context, qm QuotaMonitor, ops ...QuotaCheckOption) (context.Context, error)

WithCancelOnQuotaExceeded monitors the quota usage at intervals defined by duration and cancels the context if the quota is exceeded

func WithPluginKind

func WithPluginKind(pluginKind string) cqapi.PluginKind

func WithPluginName

func WithPluginName(pluginName string) cqapi.PluginName

func WithPluginTeam

func WithPluginTeam(pluginTeam string) cqapi.PluginTeam

Types

type BatchUpdater

type BatchUpdater struct {
	// contains filtered or unexported fields
}

func NewUsageClient

func NewUsageClient(pluginTeam cqapi.PluginTeam, pluginKind cqapi.PluginKind, pluginName cqapi.PluginName, ops ...UsageClientOptions) (*BatchUpdater, error)

func (*BatchUpdater) Close

func (u *BatchUpdater) Close() error

func (*BatchUpdater) HasQuota

func (u *BatchUpdater) HasQuota(ctx context.Context) (bool, error)

func (*BatchUpdater) Increase

func (u *BatchUpdater) Increase(rows uint32) error

type QuotaCheckOption

type QuotaCheckOption func(*quotaChecker)

func WithQuotaCheckPeriod

func WithQuotaCheckPeriod(duration time.Duration) QuotaCheckOption

WithQuotaCheckPeriod controls the time interval between quota checks

func WithQuotaMaxConsecutiveFailures

func WithQuotaMaxConsecutiveFailures(n int) QuotaCheckOption

WithQuotaMaxConsecutiveFailures controls the number of consecutive failed quota checks before the context is cancelled

type QuotaMonitor

type QuotaMonitor interface {
	// HasQuota returns true if the quota has not been exceeded
	HasQuota(context.Context) (bool, error)
}

type TokenClient added in v4.19.1

type TokenClient interface {
	GetToken() (auth.Token, error)
	GetTokenType() auth.TokenType
}

type UsageClient

type UsageClient interface {
	QuotaMonitor
	// Increase updates the usage by the given number of rows
	Increase(uint32) error
	// Close flushes any remaining rows and closes the quota service
	Close() error
}

type UsageClientOptions

type UsageClientOptions func(updater *BatchUpdater)

func WithAPIClient

func WithAPIClient(apiClient *cqapi.ClientWithResponses) UsageClientOptions

WithAPIClient sets the API client to use - defaults to a client using a bearer token generated from the refresh token stored in the configuration

func WithBatchLimit

func WithBatchLimit(batchLimit uint32) UsageClientOptions

WithBatchLimit sets the maximum number of rows to update in a single request

func WithLogger

func WithLogger(logger zerolog.Logger) UsageClientOptions

WithLogger sets the logger to use - defaults to a no-op logger

func WithMaxRetries

func WithMaxRetries(maxRetries int) UsageClientOptions

WithMaxRetries sets the maximum number of retries to update the usage in case of an API error

func WithMaxTimeBetweenFlushes

func WithMaxTimeBetweenFlushes(maxTimeBetweenFlushes time.Duration) UsageClientOptions

WithMaxTimeBetweenFlushes sets the flush duration - the time at which an update will be triggered even if the batch limit is not reached

func WithMaxWaitTime

func WithMaxWaitTime(maxWaitTime time.Duration) UsageClientOptions

WithMaxWaitTime sets the maximum time to wait before retrying a failed update

func WithMinTimeBetweenFlushes

func WithMinTimeBetweenFlushes(minTimeBetweenFlushes time.Duration) UsageClientOptions

WithMinTimeBetweenFlushes sets the minimum time between updates

func WithURL

func WithURL(url string) UsageClientOptions

WithURL sets the API URL to use - defaults to https://api.cloudquery.io

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL