usage

package
v0.28.0 Latest Latest
Warning

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

Go to latest
Published: Sep 5, 2025 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BandwidthType

type BandwidthType string

BandwidthType represents upload or download

const (
	BandwidthTypeUpload   BandwidthType = "upload"
	BandwidthTypeDownload BandwidthType = "download"
)

type Database

type Database interface {
	// Will be implemented with PostgreSQL
	UpdateUsage(ctx context.Context, usage *Usage) error
	GetUsage(ctx context.Context, userID string) (*Usage, error)
}

Database interface for usage operations

type Quota

type Quota struct {
	UserID            string
	MaxStorageBytes   int64
	MaxObjects        int64
	MaxBandwidthMonth int64
}

Quota represents storage limits for a user

type QuotaEnforcer

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

QuotaEnforcer enforces storage quotas

func NewQuotaEnforcer

func NewQuotaEnforcer() *QuotaEnforcer

NewQuotaEnforcer creates a new quota enforcer

func (*QuotaEnforcer) CanUpload

func (q *QuotaEnforcer) CanUpload(ctx context.Context, userID string, usage *Usage, fileSize int64) (bool, error)

CanUpload checks if a user can upload a file of given size

func (*QuotaEnforcer) CheckQuota

func (q *QuotaEnforcer) CheckQuota(ctx context.Context, userID string, usage *Usage) (bool, error)

CheckQuota checks if usage is within quota

func (*QuotaEnforcer) GetDefaultQuota

func (q *QuotaEnforcer) GetDefaultQuota() *Quota

GetDefaultQuota returns the default free tier quota

func (*QuotaEnforcer) GetQuota

func (q *QuotaEnforcer) GetQuota(userID string) *Quota

GetQuota returns quota for a user

func (*QuotaEnforcer) GetUsagePercentage

func (q *QuotaEnforcer) GetUsagePercentage(userID string, usage *Usage) map[string]float64

GetUsagePercentage returns usage as percentage of quota

func (*QuotaEnforcer) SetQuota

func (q *QuotaEnforcer) SetQuota(userID string, quota *Quota)

SetQuota sets quota for a user

type Usage

type Usage struct {
	UserID            string
	StorageBytes      int64
	ObjectCount       int64
	BandwidthUpload   int64
	BandwidthDownload int64
	LastUpdated       time.Time
}

Usage represents a user's current usage

type UsageTracker

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

UsageTracker tracks storage and bandwidth usage

func NewUsageTracker

func NewUsageTracker(db Database) *UsageTracker

NewUsageTracker creates a new usage tracker

func (*UsageTracker) GetUsage

func (u *UsageTracker) GetUsage(ctx context.Context, userID string) (*Usage, error)

GetUsage returns current usage for a user

func (*UsageTracker) RecordBandwidth

func (u *UsageTracker) RecordBandwidth(ctx context.Context, userID string, bwType BandwidthType, bytes int64) error

RecordBandwidth records bandwidth usage

func (*UsageTracker) RecordDelete

func (u *UsageTracker) RecordDelete(ctx context.Context, userID, bucket, key string, size int64) error

RecordDelete records a file deletion

func (*UsageTracker) RecordUpload

func (u *UsageTracker) RecordUpload(ctx context.Context, userID, bucket, key string, size int64) error

RecordUpload records a file upload

func (*UsageTracker) ResetMonthlyBandwidth

func (u *UsageTracker) ResetMonthlyBandwidth(ctx context.Context) error

ResetMonthlyBandwidth resets bandwidth counters (for monthly billing)

Jump to

Keyboard shortcuts

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