cache

package
v0.0.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 8, 2021 License: MIT Imports: 10 Imported by: 0

README

cache 数据结构设计思路

  1. 使用嵌入式数据库
  2. 数据目录默认是 ~/.portainer-cli
  3. 数据库的命名方式:通过 md5(host) 标识不同 portainer 实例的数据
  4. 不同的数据结构建立不同的 bucket,目前有以下类型
  • token
  • endpoint
  • container

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	Token    = "token"
	KeyToken = []byte(Token)
)

Functions

This section is empty.

Types

type Store

type Store struct {
	DBName string

	TokenService     *token.Service
	EndpointService  *endpoint.Service
	ContainerService *container.Service
	RegistryService  *registry.Service
	// contains filtered or unexported fields
}

Store is the data cache for portainer

func NewBoltStore

func NewBoltStore(datadir string, host string) (*Store, error)

func (*Store) Close

func (b *Store) Close() error

func (*Store) RemoveAllData

func (b *Store) RemoveAllData() error
func (b *bboltStore) SaveToken(token string) error {
	return b.bdb.Update(func(tx *bolt.Tx) error {
		// 如果 bucket 不存在则,创建一个 bucket
		bucket, err := tx.CreateBucketIfNotExists(StringToBytesUnsafe(b.host))
		if err != nil {
			return perr.WithMessage(err, "create bucket")
		}

		// 将 key-value 写入到 bucket 中
		err = bucket.Put(KeyToken, []byte(token))
		if err != nil {
			return perr.WithMessage(err, "bucket put")
		}
		return nil
	})
}

// Endpoint gives access to the Endpoint data management layer

func (b *bboltStore) Endpoint() *endpoint.Service {
	return b.EndpointService
}
func (b *bboltStore) GetToken() (string, error) {
	val, err := b.get(Token)
	if err != nil {
		return "", err
	}
	return BytesToString(val), nil
}
func (b *bboltStore) get(key string) ([]byte, error) {
	var result []byte
	var err error
	err = b.bdb.View(func(tx *bolt.Tx) error {
		buc := tx.Bucket(StringToBytes(b.host))

		// 将 key-value 写入到 bucket 中
		result = buc.Get(StringToBytes(key))
		return nil
	})

	if err != nil {
		return []byte{}, err
	}

	return result, nil
}

删除全部当前 host 下的数据

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL