41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
package replications
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/influxdata/influxdb/v2"
|
|
"github.com/influxdata/influxdb/v2/kit/platform"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type ReplicationDeleter interface {
|
|
// DeleteBucketReplications deletes all replications registered to the local bucket
|
|
// with the given ID.
|
|
DeleteBucketReplications(context.Context, platform.ID) error
|
|
}
|
|
|
|
type bucketService struct {
|
|
influxdb.BucketService
|
|
logger *zap.Logger
|
|
replicationDeleter ReplicationDeleter
|
|
}
|
|
|
|
func NewBucketService(log *zap.Logger, bucketSvc influxdb.BucketService, deleter ReplicationDeleter) *bucketService {
|
|
return &bucketService{
|
|
BucketService: bucketSvc,
|
|
logger: log,
|
|
replicationDeleter: deleter,
|
|
}
|
|
}
|
|
|
|
func (s *bucketService) DeleteBucket(ctx context.Context, id platform.ID) error {
|
|
if err := s.BucketService.DeleteBucket(ctx, id); err != nil {
|
|
return err
|
|
}
|
|
if err := s.replicationDeleter.DeleteBucketReplications(ctx, id); err != nil {
|
|
s.logger.Error("Failed to delete replications for bucket",
|
|
zap.String("bucket_id", id.String()), zap.Error(err))
|
|
}
|
|
return nil
|
|
}
|