github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/storage/stores/indexshipper/table_client.go (about) 1 package indexshipper 2 3 import ( 4 "context" 5 6 "github.com/grafana/loki/pkg/storage/chunk/client" 7 "github.com/grafana/loki/pkg/storage/config" 8 "github.com/grafana/loki/pkg/storage/stores/indexshipper/storage" 9 "github.com/grafana/loki/pkg/storage/stores/series/index" 10 ) 11 12 type tableClient struct { 13 indexStorageClient storage.Client 14 } 15 16 // NewTableClient creates a client for managing tables in object storage based index store. 17 // It is typically used when running a table manager. 18 func NewTableClient(objectClient client.ObjectClient, storageKeyPrefix string) index.TableClient { 19 return &tableClient{storage.NewIndexStorageClient(objectClient, storageKeyPrefix)} 20 } 21 22 func (b *tableClient) ListTables(ctx context.Context) ([]string, error) { 23 b.indexStorageClient.RefreshIndexListCache(ctx) 24 return b.indexStorageClient.ListTables(ctx) 25 } 26 27 func (b *tableClient) CreateTable(ctx context.Context, desc config.TableDesc) error { 28 return nil 29 } 30 31 func (b *tableClient) Stop() { 32 b.indexStorageClient.Stop() 33 } 34 35 func (b *tableClient) DeleteTable(ctx context.Context, tableName string) error { 36 files, _, err := b.indexStorageClient.ListFiles(ctx, tableName, true) 37 if err != nil { 38 return err 39 } 40 41 for _, file := range files { 42 err := b.indexStorageClient.DeleteFile(ctx, tableName, file.Name) 43 if err != nil { 44 return err 45 } 46 } 47 48 return nil 49 } 50 51 func (b *tableClient) DescribeTable(ctx context.Context, name string) (desc config.TableDesc, isActive bool, err error) { 52 return config.TableDesc{ 53 Name: name, 54 }, true, nil 55 } 56 57 func (b *tableClient) UpdateTable(ctx context.Context, current, expected config.TableDesc) error { 58 return nil 59 }