mongodbstorage

package
v0.0.0-...-5a6e01e Latest Latest
Warning

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

Go to latest
Published: Jul 19, 2023 License: GPL-3.0 Imports: 32 Imported by: 0

Documentation

Overview

Package mongodb provides storages of mongodb.

Index

Constants

View Source
const (
	ColNameInfo            = "info"
	ColNameManifest        = "manifest"
	ColNameOperation       = "operation"
	ColNameStagedOperation = "staged_operation"
	ColNameProposal        = "proposal"
	ColNameState           = "state"
	ColNameVoteproof       = "voteproof"
	ColNameBlockdataMap    = "blockdata_map"
)

Variables

View Source
var IndexPrefix = "mitum_"

Functions

func CleanTemporayDatabase

func CleanTemporayDatabase(st *Database) error

func LoadDataFromDoc

func LoadDataFromDoc(b []byte, encs *encoder.Encoders) (bson.Raw, interface{}, error)

func MergeError

func MergeError(err error) error

func NewLastManifestDoc

func NewLastManifestDoc(height base.Height, enc encoder.Encoder) (lastManifestDoc, error)

Types

type BaseDoc

type BaseDoc struct {
	// contains filtered or unexported fields
}

func NewBaseDoc

func NewBaseDoc(id, data interface{}, enc encoder.Encoder) (BaseDoc, error)

func (BaseDoc) ID

func (do BaseDoc) ID() interface{}

func (BaseDoc) M

func (do BaseDoc) M() (bson.M, error)

type BaseDocUnpacker

type BaseDocUnpacker struct {
	I bson.Raw      `bson:"_id,omitempty"`
	E hint.Hint     `bson:"_e"`
	D bson.RawValue `bson:"d"`
	H bool          `bson:"_hinted"`
}

type BlockDoc

type BlockDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewBlockDoc

func NewBlockDoc(blk block.Block, enc encoder.Encoder) (BlockDoc, error)

func (BlockDoc) MarshalBSON

func (bd BlockDoc) MarshalBSON() ([]byte, error)

type BlockdataMapDoc

type BlockdataMapDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewBlockdataMapDoc

func NewBlockdataMapDoc(bd block.BlockdataMap, enc encoder.Encoder) (BlockdataMapDoc, error)

func (BlockdataMapDoc) MarshalBSON

func (bd BlockdataMapDoc) MarshalBSON() ([]byte, error)

type Client

type Client struct {
	// contains filtered or unexported fields
}

func NewClient

func NewClient(uri string, connectTimeout, execTimeout time.Duration) (*Client, error)

func (*Client) Add

func (cl *Client) Add(col string, doc Doc) (interface{}, error)

func (*Client) AddRaw

func (cl *Client) AddRaw(col string, raw bson.Raw) (interface{}, error)

func (*Client) Bulk

func (cl *Client) Bulk(ctx context.Context, col string, models []mongo.WriteModel, order bool) error

func (*Client) Close

func (cl *Client) Close() error

func (*Client) Collection

func (cl *Client) Collection(col string) *mongo.Collection

func (*Client) Collections

func (cl *Client) Collections() ([]string, error)

func (*Client) CopyCollection

func (cl *Client) CopyCollection(source *Client, fromCol, toCol string) error

func (*Client) Count

func (cl *Client) Count(ctx context.Context, col string, filter interface{}, opts ...*options.CountOptions) (int64, error)

func (*Client) Database

func (cl *Client) Database(db string) *mongo.Database

func (*Client) Databases

func (cl *Client) Databases(filter interface{}) ([]string, error)

func (*Client) Delete

func (cl *Client) Delete(col string, filter bson.D, opts ...*options.DeleteOptions) (*mongo.DeleteResult, error)

func (*Client) DropDatabase

func (cl *Client) DropDatabase() error

func (*Client) Exists

func (cl *Client) Exists(col string, filter bson.D) (bool, error)

func (*Client) Find

func (cl *Client) Find(
	ctx context.Context,
	col string,
	query interface{},
	callback getRecordsCallback,
	opts ...*options.FindOptions,
) error

func (*Client) GetByFilter

func (cl *Client) GetByFilter(
	col string,
	filter bson.D,
	callback getRecordCallback,
	opts ...*options.FindOneOptions,
) error

func (*Client) GetByID

func (cl *Client) GetByID(
	col string,
	id interface{},
	callback getRecordCallback,
	opts ...*options.FindOneOptions,
) error

func (*Client) New

func (cl *Client) New(db string) (*Client, error)

func (*Client) Raw

func (cl *Client) Raw() *mongo.Client

func (*Client) Set

func (cl *Client) Set(col string, doc Doc) (interface{}, error)

func (*Client) WithSession

func (cl *Client) WithSession(
	callback func(mongo.SessionContext, func(string) *mongo.Collection) (interface{}, error),
) (interface{}, error)

type Database

type Database struct {
	sync.RWMutex
	*logging.Logging
	// contains filtered or unexported fields
}

func NewDatabase

func NewDatabase(client *Client, encs *encoder.Encoders, enc encoder.Encoder, ca cache.Cache) (*Database, error)

func NewDatabaseFromURI

func NewDatabaseFromURI(uri string, encs *encoder.Encoders, ca cache.Cache) (*Database, error)

func (*Database) BlockdataMap

func (st *Database) BlockdataMap(height base.Height) (block.BlockdataMap, bool, error)

func (*Database) Cache

func (st *Database) Cache() cache.Cache

func (*Database) Clean

func (st *Database) Clean() error

Clean will drop the existing collections. To keep safe the another collections by user, drop collections instead of drop database.

func (*Database) CleanByHeight

func (st *Database) CleanByHeight(height base.Height) error

func (*Database) Client

func (st *Database) Client() *Client

func (*Database) Close

func (st *Database) Close() error

func (*Database) Copy

func (st *Database) Copy(source storage.Database) error

func (*Database) CreateIndex

func (st *Database) CreateIndex(col string, models []mongo.IndexModel, prefix string) error

func (*Database) Encoder

func (st *Database) Encoder() encoder.Encoder

func (*Database) Encoders

func (st *Database) Encoders() *encoder.Encoders

func (*Database) HasOperationFact

func (st *Database) HasOperationFact(h valuehash.Hash) (bool, error)

func (*Database) HasStagedOperation

func (st *Database) HasStagedOperation(h valuehash.Hash) (bool, error)

func (*Database) Info

func (st *Database) Info(key string) ([]byte, bool, error)

func (*Database) Initialize

func (st *Database) Initialize() error

func (*Database) LastManifest

func (st *Database) LastManifest() (block.Manifest, bool, error)

func (*Database) LastVoteproof

func (st *Database) LastVoteproof(stage base.Stage) base.Voteproof

func (*Database) LocalBlockdataMapsByHeight

func (st *Database) LocalBlockdataMapsByHeight(height base.Height, callback func(block.BlockdataMap) (bool, error)) error

func (*Database) Manifest

func (st *Database) Manifest(h valuehash.Hash) (block.Manifest, bool, error)

func (*Database) ManifestByHeight

func (st *Database) ManifestByHeight(height base.Height) (block.Manifest, bool, error)

func (*Database) Manifests

func (st *Database) Manifests(load, reverse bool, limit int64, callback func(base.Height, valuehash.Hash, block.Manifest) (bool, error)) error

func (*Database) ManifestsByFilter

func (st *Database) ManifestsByFilter(filter interface{}, load, reverse bool, limit int64, callback func(base.Height, valuehash.Hash, block.Manifest) (bool, error)) error

func (*Database) New

func (st *Database) New() (*Database, error)

func (*Database) NewOperationSeals

func (st *Database) NewOperationSeals(seals []operation.Seal) error

func (*Database) NewOperations

func (st *Database) NewOperations(
	ops []operation.Operation,
) error

func (*Database) NewProposal

func (st *Database) NewProposal(proposal base.Proposal) error

func (*Database) NewSession

func (st *Database) NewSession(blk block.Block) (storage.DatabaseSession, error)

func (*Database) NewState

func (st *Database) NewState(sta state.State) error

func (*Database) NewSyncerSession

func (st *Database) NewSyncerSession() (storage.SyncerSession, error)

func (*Database) Proposal

func (st *Database) Proposal(h valuehash.Hash) (base.Proposal, bool, error)

func (*Database) ProposalByPoint

func (st *Database) ProposalByPoint(height base.Height, round base.Round, proposer base.Address) (base.Proposal, bool, error)

func (*Database) Proposals

func (st *Database) Proposals(callback func(base.Proposal) (bool, error), sort bool) error

func (*Database) Readonly

func (st *Database) Readonly() (*Database, error)

func (*Database) SaveLastBlock

func (st *Database) SaveLastBlock(height base.Height) error

func (*Database) SetBlockdataMaps

func (st *Database) SetBlockdataMaps(bds []block.BlockdataMap) error

func (*Database) SetInfo

func (st *Database) SetInfo(key string, b []byte) error

func (*Database) StagedOperations

func (st *Database) StagedOperations(callback func(operation.Operation) (bool, error), sort bool) error

func (*Database) StagedOperationsByFact

func (st *Database) StagedOperationsByFact(facts []valuehash.Hash) ([]operation.Operation, error)

func (*Database) State

func (st *Database) State(key string) (state.State, bool, error)

func (*Database) UnstagedOperations

func (st *Database) UnstagedOperations(facts []valuehash.Hash) error

func (*Database) Voteproof

func (st *Database) Voteproof(height base.Height, stage base.Stage) (base.Voteproof, error)

type DatabaseSession

type DatabaseSession struct {
	// contains filtered or unexported fields
}

func NewDatabaseSession

func NewDatabaseSession(st *Database, blk block.Block) (*DatabaseSession, error)

func (*DatabaseSession) Block

func (bst *DatabaseSession) Block() block.Block

func (*DatabaseSession) Cancel

func (bst *DatabaseSession) Cancel() error

func (*DatabaseSession) Close

func (bst *DatabaseSession) Close() error

func (*DatabaseSession) Commit

func (bst *DatabaseSession) Commit(ctx context.Context, bd block.BlockdataMap) error

func (*DatabaseSession) SetACCEPTVoteproof

func (bst *DatabaseSession) SetACCEPTVoteproof(voteproof base.Voteproof) error

func (*DatabaseSession) SetBlock

func (bst *DatabaseSession) SetBlock(ctx context.Context, blk block.Block) error

type Doc

type Doc interface {
	ID() interface{}
}

type HashIDDoc

type HashIDDoc struct {
	I bson.Raw        `bson:"_id"`
	E hint.Hint       `bson:"_e"`
	H valuehash.Bytes `bson:"hash"`
}

type InfoDoc

type InfoDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewInfoDoc

func NewInfoDoc(key string, v []byte, enc encoder.Encoder) (InfoDoc, error)

func (InfoDoc) MarshalBSON

func (do InfoDoc) MarshalBSON() ([]byte, error)

type ManifestDoc

type ManifestDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewManifestDoc

func NewManifestDoc(manifest block.Manifest, enc encoder.Encoder) (ManifestDoc, error)

func (ManifestDoc) MarshalBSON

func (md ManifestDoc) MarshalBSON() ([]byte, error)

type OperationDoc

type OperationDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewOperationDoc

func NewOperationDoc(fact valuehash.Hash, enc encoder.Encoder, height base.Height) (OperationDoc, error)

func (OperationDoc) MarshalBSON

func (od OperationDoc) MarshalBSON() ([]byte, error)

type ProposalDoc

type ProposalDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewProposalDoc

func NewProposalDoc(proposal base.Proposal, enc encoder.Encoder) (ProposalDoc, error)

func (ProposalDoc) MarshalBSON

func (pd ProposalDoc) MarshalBSON() ([]byte, error)

type StagedOperation

type StagedOperation struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewStagedOperation

func NewStagedOperation(op operation.Operation, enc encoder.Encoder) (StagedOperation, error)

func (StagedOperation) MarshalBSON

func (sd StagedOperation) MarshalBSON() ([]byte, error)

type StateDoc

type StateDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewStateDoc

func NewStateDoc(st state.State, enc encoder.Encoder) (StateDoc, error)

func (StateDoc) MarshalBSON

func (sd StateDoc) MarshalBSON() ([]byte, error)

type SyncerSession

type SyncerSession struct {
	sync.RWMutex
	*logging.Logging
	// contains filtered or unexported fields
}

func NewSyncerSession

func NewSyncerSession(main *Database) (*SyncerSession, error)

func (*SyncerSession) Close

func (st *SyncerSession) Close() error

func (*SyncerSession) Commit

func (st *SyncerSession) Commit() error

func (*SyncerSession) HasBlock

func (st *SyncerSession) HasBlock(height base.Height) (bool, error)

func (*SyncerSession) Manifest

func (st *SyncerSession) Manifest(height base.Height) (block.Manifest, bool, error)

func (*SyncerSession) SetBlocks

func (st *SyncerSession) SetBlocks(blocks []block.Block, maps []block.BlockdataMap) error

func (*SyncerSession) SetManifests

func (st *SyncerSession) SetManifests(manifests []block.Manifest) error

func (*SyncerSession) SetSkipLastBlock

func (st *SyncerSession) SetSkipLastBlock(b bool)

type VoteproofDoc

type VoteproofDoc struct {
	BaseDoc
	// contains filtered or unexported fields
}

func NewVoteproofDoc

func NewVoteproofDoc(voteproof base.Voteproof, enc encoder.Encoder) (VoteproofDoc, error)

func (VoteproofDoc) MarshalBSON

func (pd VoteproofDoc) MarshalBSON() ([]byte, error)

Jump to

Keyboard shortcuts

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