Documentation ¶
Overview ¶
Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0
Copyright IBM Corp. All Rights Reserved. SPDX-License-Identifier: Apache-2.0
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func PrepareBootstrapConfigTx ¶
func PrepareBootstrapConfigTx(conf *config.Configurations) (*types.ConfigTxEnvelope, error)
Types ¶
type DB ¶
type DB interface { // LedgerHeight returns current height of the ledger LedgerHeight() (uint64, error) // Height returns ledger height Height() (uint64, error) // IsLeader returns whether this server is the leader IsLeader() *ierrors.NotLeaderError // DoesUserExist checks whenever user with given userID exists DoesUserExist(userID string) (bool, error) // GetCertificate returns the certificate associated with useID, if it exists. GetCertificate(userID string) (*x509.Certificate, error) // GetUser retrieves user' record GetUser(querierUserID, targetUserID string) (*types.GetUserResponseEnvelope, error) // GetConfig returns database configuration. // Limited access to admins only. Regular users can use the `GetNodeConfig` or `GetClusterStatus` APIs to discover // and fetch the details of nodes that are needed for external cluster access. GetConfig(querierUserID string) (*types.GetConfigResponseEnvelope, error) // GetConfigBlock returns a config block. // Only admin users can get a config block. // If blockNumber==0, the last config block is returned. GetConfigBlock(querierUserID string, blockNumber uint64) (*types.GetConfigBlockResponseEnvelope, error) // GetClusterStatus returns the cluster status: // - the nodes, as defined in the ClusterConfig, without certificates if `noCert`=true; // - the ID of the leader, if it exists; // - the IDs of all active nodes, including the leader. GetClusterStatus(noCerts bool) (*types.GetClusterStatusResponseEnvelope, error) // GetNodeConfig returns single node subsection of database configuration GetNodeConfig(nodeID string) (*types.GetNodeConfigResponseEnvelope, error) // GetDBStatus returns status for database, checks whenever database was created GetDBStatus(dbName string) (*types.GetDBStatusResponseEnvelope, error) // GetDBIndex returns the defined index for a given database. Index present in the // response envelope is a JSON string. GetDBIndex(dbName, querierUserID string) (*types.GetDBIndexResponseEnvelope, error) // GetData retrieves values for given key GetData(dbName, querierUserID, key string) (*types.GetDataResponseEnvelope, error) // GetDataRange retrieves a range of values GetDataRange(dbName, querierUserID, startKey, endKey string, limit uint64) (*types.GetDataRangeResponseEnvelope, error) // DataQuery executes a given JSON query and return key-value pairs which are matching // the criteria provided in the query. The query is a json marshled bytes which needs // to contain a top level combinational operator followed by a list of attributes and // a list of conditions per attributes. For example, the following is one of the query: // // { // "selector": { // "$and": { -- top level combinational operator // "attr1": { -- a field in the json document // "$gte": "a", -- value criteria for the field // "$lt": "b" -- value criteria for the field // }, // "attr2": { -- a field in the json document // "$eq": true -- value criteria for the field // }, // "attr3": { -- a field in the json document // "$lt": "a2" -- a field in the json document // } // } // } // } DataQuery(ctx context.Context, dbName, querierUserID string, query []byte) (*types.DataQueryResponseEnvelope, error) // GetBlockHeader returns ledger block header GetBlockHeader(userID string, blockNum uint64) (*types.GetBlockResponseEnvelope, error) // GetAugmentedBlockHeader returns ledger block header GetAugmentedBlockHeader(userID string, blockNum uint64) (*types.GetAugmentedBlockHeaderResponseEnvelope, error) // GetTxProof returns intermediate hashes to recalculate merkle tree root from tx hash GetTxProof(userID string, blockNum uint64, txIdx uint64) (*types.GetTxProofResponseEnvelope, error) // GetTx returns the content of the TX GetTx(userID string, blockNum uint64, txIdx uint64) (*types.GetTxResponseEnvelope, error) // GetDataProof returns hashes path from value to root in merkle-patricia trie GetDataProof(userID string, blockNum uint64, dbname string, key string, deleted bool) (*types.GetDataProofResponseEnvelope, error) // GetLedgerPath returns list of blocks that forms the shortest path in the skip list chain of the ledger. // Parameter 'start' is the block number of the earlier block, 'end' is the block number of the last block. That is // 'start'<='end'. The returned path is the shortest path from the 'end' block to the 'start' block. GetLedgerPath(userID string, start, end uint64) (*types.GetLedgerPathResponseEnvelope, error) // GetValues returns all values associated with a given key GetValues(userID, dbName, key string) (*types.GetHistoricalDataResponseEnvelope, error) // GetDeletedValues returns all deleted values associated with a given key GetDeletedValues(userID, dbname, key string) (*types.GetHistoricalDataResponseEnvelope, error) // GetValueAt returns the value of a given key at a particular version GetValueAt(userID, dbName, key string, version *types.Version) (*types.GetHistoricalDataResponseEnvelope, error) // GetMostRecentValueAtOrBelow returns the most recent value of a given key at or below the given version GetMostRecentValueAtOrBelow(userID, dbName, key string, version *types.Version) (*types.GetHistoricalDataResponseEnvelope, error) // GetPreviousValues returns previous values of a given key and a version. The number of records returned would be limited // by the limit parameters. GetPreviousValues(userID, dbname, key string, version *types.Version) (*types.GetHistoricalDataResponseEnvelope, error) // GetNextValues returns next values of a given key and a version. The number of records returned would be limited // by the limit parameters. GetNextValues(userID, dbname, key string, version *types.Version) (*types.GetHistoricalDataResponseEnvelope, error) // GetValuesReadByUser returns all values read by a given targetUserID GetValuesReadByUser(querierUserID, targetUserID string) (*types.GetDataProvenanceResponseEnvelope, error) // GetValuesWrittenByUser returns all values written by a targetUserID GetValuesWrittenByUser(querierUserID, targetUserID string) (*types.GetDataProvenanceResponseEnvelope, error) // GetValuesDeletedByUser returns all values deleted by a targetUserID GetValuesDeletedByUser(querierUserID, targetUserID string) (*types.GetDataProvenanceResponseEnvelope, error) // GetReaders returns all userIDs who have accessed a given key as well as the access frequency GetReaders(userID, dbName, key string) (*types.GetDataReadersResponseEnvelope, error) // GetWriters returns all userIDs who have updated a given key as well as the access frequency GetWriters(userID, dbName, key string) (*types.GetDataWritersResponseEnvelope, error) // GetTxIDsSubmittedByUser returns all ids of all transactions submitted by a targetUserID GetTxIDsSubmittedByUser(querierUserID, targetUserID string) (*types.GetTxIDsSubmittedByResponseEnvelope, error) // GetTxReceipt returns transaction receipt - block header of ledger block that contains the transaction // and transaction index inside the block GetTxReceipt(userId string, txID string) (*types.TxReceiptResponseEnvelope, error) // SubmitTransaction submits transaction to the database with a timeout. If the timeout is // set to 0, the submission would be treated as async while a non-zero timeout would be // treated as a sync submission. When a timeout occurs with the sync submission, a // timeout error will be returned SubmitTransaction(tx interface{}, timeout time.Duration) (*types.TxReceiptResponseEnvelope, error) // IsDBExists returns true if database with given name is exists otherwise false IsDBExists(name string) bool // Close frees and closes resources allocated by database instance Close() error }
DB encapsulates functionality required to operate with database state
func NewDB ¶
func NewDB(conf *config.Configurations, logger *logger.SugarLogger) (DB, error)
NewDB creates a new database bcdb which handles both the queries and transactions.
type TxProcessor ¶
type TxProcessor interface { Close() error ClusterStatus() (leader string, active []string) IsLeader() *ierrors.NotLeaderError SubmitTransaction(tx interface{}, timeout time.Duration) (*types.TxReceiptResponse, error) }
Source Files ¶
Click to show internal directories.
Click to hide internal directories.