influxdb/dbrp/bucket_service.go

50 lines
1.3 KiB
Go

package dbrp
import (
"context"
"github.com/influxdata/influxdb/v2"
"github.com/influxdata/influxdb/v2/kit/platform"
"go.uber.org/zap"
)
type BucketService struct {
influxdb.BucketService
Logger *zap.Logger
DBRPMappingService influxdb.DBRPMappingService
}
func NewBucketService(logger *zap.Logger, bucketService influxdb.BucketService, dbrpService influxdb.DBRPMappingService) *BucketService {
return &BucketService{
Logger: logger,
BucketService: bucketService,
DBRPMappingService: dbrpService,
}
}
func (s *BucketService) DeleteBucket(ctx context.Context, id platform.ID) error {
bucket, err := s.BucketService.FindBucketByID(ctx, id)
if err != nil {
return err
}
if err := s.BucketService.DeleteBucket(ctx, id); err != nil {
return err
}
logger := s.Logger.With(zap.String("bucket_id", id.String()))
mappings, _, err := s.DBRPMappingService.FindMany(ctx, influxdb.DBRPMappingFilter{
OrgID: &bucket.OrgID,
BucketID: &bucket.ID,
})
if err != nil {
logger.Error("Failed to lookup DBRP mappings for Bucket.", zap.Error(err))
return nil
}
for _, m := range mappings {
if err := s.DBRPMappingService.Delete(ctx, bucket.OrgID, m.ID); err != nil {
logger.Error("Failed to delete DBRP mapping for Bucket.", zap.Error(err))
}
}
return nil
}