1package local 2 3import ( 4 "context" 5 "os" 6 "path/filepath" 7 8 "github.com/cortexproject/cortex/pkg/chunk" 9) 10 11type TableClient struct { 12 directory string 13} 14 15// NewTableClient returns a new TableClient. 16func NewTableClient(directory string) (chunk.TableClient, error) { 17 return &TableClient{directory: directory}, nil 18} 19 20func (c *TableClient) ListTables(ctx context.Context) ([]string, error) { 21 boltDbFiles := []string{} 22 err := filepath.Walk(c.directory, func(path string, info os.FileInfo, err error) error { 23 if err != nil { 24 return err 25 } 26 if !info.IsDir() { 27 boltDbFiles = append(boltDbFiles, info.Name()) 28 } 29 return nil 30 }) 31 32 if err != nil { 33 return nil, err 34 } 35 return boltDbFiles, nil 36} 37 38func (c *TableClient) CreateTable(ctx context.Context, desc chunk.TableDesc) error { 39 file, err := os.OpenFile(filepath.Join(c.directory, desc.Name), os.O_CREATE|os.O_RDONLY, 0666) 40 if err != nil { 41 return err 42 } 43 44 return file.Close() 45} 46 47func (c *TableClient) DeleteTable(ctx context.Context, name string) error { 48 return os.Remove(filepath.Join(c.directory, name)) 49} 50 51func (c *TableClient) DescribeTable(ctx context.Context, name string) (desc chunk.TableDesc, isActive bool, err error) { 52 return chunk.TableDesc{ 53 Name: name, 54 }, true, nil 55} 56 57func (c *TableClient) UpdateTable(ctx context.Context, current, expected chunk.TableDesc) error { 58 return nil 59} 60 61func (*TableClient) Stop() {} 62