buckets

package
v1.90.1 Latest Latest
Warning

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

Go to latest
Published: Oct 16, 2023 License: AGPL-3.0 Imports: 8 Imported by: 1

Documentation

Index

Constants

View Source
const (
	// DirectionForward lists forwards from cursor, including cursor.
	DirectionForward = pb.ListDirection_FORWARD
	// DirectionAfter lists forwards from cursor, without cursor.
	DirectionAfter = pb.ListDirection_AFTER
)

Variables

View Source
var (
	// ErrBucket is an error class for general bucket errors.
	ErrBucket = errs.Class("bucket")

	// ErrNoBucket is an error class for using empty bucket name.
	ErrNoBucket = errs.Class("no bucket specified")

	// ErrBucketNotFound is an error class for non-existing bucket.
	ErrBucketNotFound = errs.Class("bucket not found")

	// ErrBucketAlreadyExists is used to indicate that bucket already exists.
	ErrBucketAlreadyExists = errs.Class("bucket already exists")
)
View Source
var (
	// ErrBucketNotEmpty is returned when a caller attempts to change placement constraints.
	ErrBucketNotEmpty = errs.Class("bucket must be empty")
)

Functions

This section is empty.

Types

type Bucket

type Bucket struct {
	ID                          uuid.UUID
	Name                        string
	ProjectID                   uuid.UUID
	UserAgent                   []byte
	Created                     time.Time
	PathCipher                  storj.CipherSuite
	DefaultSegmentsSize         int64
	DefaultRedundancyScheme     storj.RedundancyScheme
	DefaultEncryptionParameters storj.EncryptionParameters
	Placement                   storj.PlacementConstraint
}

Bucket contains information about a specific bucket.

type DB

type DB interface {
	// CreateBucket creates a new bucket
	CreateBucket(ctx context.Context, bucket Bucket) (_ Bucket, err error)
	// GetBucket returns an existing bucket
	GetBucket(ctx context.Context, bucketName []byte, projectID uuid.UUID) (bucket Bucket, err error)
	// GetBucketPlacement returns with the placement constraint identifier.
	GetBucketPlacement(ctx context.Context, bucketName []byte, projectID uuid.UUID) (placement storj.PlacementConstraint, err error)
	// GetMinimalBucket returns existing bucket with minimal number of fields.
	GetMinimalBucket(ctx context.Context, bucketName []byte, projectID uuid.UUID) (bucket MinimalBucket, err error)
	// HasBucket returns if a bucket exists.
	HasBucket(ctx context.Context, bucketName []byte, projectID uuid.UUID) (exists bool, err error)
	// GetBucketID returns an existing bucket id.
	GetBucketID(ctx context.Context, bucket metabase.BucketLocation) (id uuid.UUID, err error)
	// UpdateBucket updates an existing bucket
	UpdateBucket(ctx context.Context, bucket Bucket) (_ Bucket, err error)
	// UpdateUserAgent updates buckets user agent.
	UpdateUserAgent(ctx context.Context, projectID uuid.UUID, bucketName string, userAgent []byte) error
	// DeleteBucket deletes a bucket
	DeleteBucket(ctx context.Context, bucketName []byte, projectID uuid.UUID) (err error)
	// ListBuckets returns all buckets for a project
	ListBuckets(ctx context.Context, projectID uuid.UUID, listOpts ListOptions, allowedBuckets macaroon.AllowedBuckets) (bucketList List, err error)
	// CountBuckets returns the number of buckets a project currently has
	CountBuckets(ctx context.Context, projectID uuid.UUID) (int, error)
	// IterateBucketLocations iterates through all buckets from some point with limit.
	IterateBucketLocations(ctx context.Context, projectID uuid.UUID, bucketName string, limit int, fn func([]metabase.BucketLocation) error) (more bool, err error)
}

DB is the interface for the database to interact with buckets.

architecture: Database

type List added in v1.78.1

type List struct {
	More  bool
	Items []Bucket
}

List is a list of buckets.

type ListDirection added in v1.78.1

type ListDirection = pb.ListDirection

ListDirection specifies listing direction.

type ListOptions added in v1.78.1

type ListOptions struct {
	Cursor    string
	Direction ListDirection
	Limit     int
}

ListOptions lists objects.

func (ListOptions) NextPage added in v1.78.1

func (opts ListOptions) NextPage(list List) ListOptions

NextPage returns options for listing the next page.

type MinimalBucket added in v1.78.1

type MinimalBucket struct {
	Name      []byte
	CreatedAt time.Time
}

MinimalBucket contains minimal bucket fields for metainfo protocol.

type Service

type Service struct {
	DB
	// contains filtered or unexported fields
}

Service encapsulates operations around buckets.

func NewService

func NewService(bucketsDB DB, metabase *metabase.DB) *Service

NewService converts the provided db and metabase calls into a single DB interface.

func (*Service) UpdateBucket

func (buckets *Service) UpdateBucket(ctx context.Context, bucket Bucket) (Bucket, error)

UpdateBucket overrides the default UpdateBucket behaviour by adding a check against MetabaseDB to ensure the bucket is empty before attempting to change the placement constraint of a bucket. If the placement constraint is not being changed, then this additional check is skipped.

Jump to

Keyboard shortcuts

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