Documentation
¶
Index ¶
- type BandwidthType
- type Database
- type Quota
- type QuotaEnforcer
- func (q *QuotaEnforcer) CanUpload(ctx context.Context, userID string, usage *Usage, fileSize int64) (bool, error)
- func (q *QuotaEnforcer) CheckQuota(ctx context.Context, userID string, usage *Usage) (bool, error)
- func (q *QuotaEnforcer) GetDefaultQuota() *Quota
- func (q *QuotaEnforcer) GetQuota(userID string) *Quota
- func (q *QuotaEnforcer) GetUsagePercentage(userID string, usage *Usage) map[string]float64
- func (q *QuotaEnforcer) SetQuota(userID string, quota *Quota)
- type Usage
- type UsageTracker
- func (u *UsageTracker) GetUsage(ctx context.Context, userID string) (*Usage, error)
- func (u *UsageTracker) RecordBandwidth(ctx context.Context, userID string, bwType BandwidthType, bytes int64) error
- func (u *UsageTracker) RecordDelete(ctx context.Context, userID, bucket, key string, size int64) error
- func (u *UsageTracker) RecordUpload(ctx context.Context, userID, bucket, key string, size int64) error
- func (u *UsageTracker) ResetMonthlyBandwidth(ctx context.Context) error
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 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 ¶
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) 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)