package storage

import (
	"context"

	"github.com/pingcap-inc/alioth/storage/keyvalue"
	"github.com/pingcap-inc/alioth/storage/leveldb"
)

type LogPatternStore struct {
	*keyvalue.Store

	db keyvalue.DB
}

func NewStore(path string) (*LogPatternStore, error) {
	db, err := leveldb.OpenGoLevelDB(path, nil)
	if err != nil {
		return nil, err
	}

	return &LogPatternStore{
		db:    db,
		Store: keyvalue.NewStore(db),
	}, nil
}

func (s *LogPatternStore) Close(ctx context.Context) error {
	if s.db != nil {
		return s.db.Close(ctx)
	}

	return nil
}

func (s *LogPatternStore) GetDB() keyvalue.DB {
	return s.db
}
