func ConstructMetadataDBName(dbName string) string
ConstructMetadataDBName truncates the db name to couchdb allowed length to construct the metadataDBName
func ConstructNamespaceDBName(chainName, namespace string) string
ConstructNamespaceDBName truncates db name to couchdb allowed length to construct the namespaceDBName
func CreateSystemDatabasesIfNotExist(couchInstance *CouchInstance) error
CreateSystemDatabasesIfNotExist - creates the system databases if they do not exist
func IsJSON(s string) bool
IsJSON tests a string to determine if a valid JSON
AttachmentInfo contains the definition for an attached file for couchdb
type AttachmentInfo struct { Name string ContentType string `json:"content_type"` Length uint64 AttachmentBytes []byte `json:"data"` }
Base64Attachment contains the definition for an attached file for couchdb
type Base64Attachment struct { ContentType string `json:"content_type"` AttachmentData string `json:"data"` }
BatchRetrieveDocMetadataResponse is used for processing REST batch responses from CouchDB
type BatchRetrieveDocMetadataResponse struct { Rows []struct { ID string `json:"id"` DocMetadata struct { ID string `json:"_id"` Rev string `json:"_rev"` Version string `json:"~version"` } `json:"doc"` } `json:"rows"` }
BatchUpdateResponse defines a structure for batch update response
type BatchUpdateResponse struct { ID string `json:"id"` Error string `json:"error"` Reason string `json:"reason"` Ok bool `json:"ok"` Rev string `json:"rev"` }
ConnectionInfo is a structure for capturing the database info and version
type ConnectionInfo struct { Couchdb string `json:"couchdb"` Version string `json:"version"` Vendor struct { Name string `json:"name"` } `json:"vendor"` }
CouchConnectionDef contains parameters
type CouchConnectionDef struct { URL string Username string Password string MaxRetries int MaxRetriesOnStartup int RequestTimeout time.Duration CreateGlobalChangesDB bool }
func CreateConnectionDefinition(couchDBAddress, username, password string, maxRetries, maxRetriesOnStartup int, requestTimeout time.Duration, createGlobalChangesDB bool) (*CouchConnectionDef, error)
CreateConnectionDefinition for a new client connection
CouchDBDef contains parameters
type CouchDBDef struct { URL string Username string Password string MaxRetries int MaxRetriesOnStartup int RequestTimeout time.Duration CreateGlobalChangesDB bool }
func GetCouchDBDefinition() *CouchDBDef
GetCouchDBDefinition exposes the useCouchDB variable
CouchDatabase represents a database within a CouchDB instance
type CouchDatabase struct { CouchInstance *CouchInstance //connection configuration DBName string IndexWarmCounter int }
func CreateCouchDatabase(couchInstance *CouchInstance, dbName string) (*CouchDatabase, error)
CreateCouchDatabase creates a CouchDB database object, as well as the underlying database if it does not exist
func (dbclient *CouchDatabase) ApplyDatabaseSecurity(databaseSecurity *DatabaseSecurity) error
ApplyDatabaseSecurity method provides function to update the security config for a database
func (dbclient *CouchDatabase) BatchRetrieveDocumentMetadata(keys []string) ([]*DocMetadata, error)
BatchRetrieveDocumentMetadata - batch method to retrieve document metadata for a set of keys, including ID, couchdb revision number, and ledger version
func (dbclient *CouchDatabase) BatchUpdateDocuments(documents []*CouchDoc) ([]*BatchUpdateResponse, error)
BatchUpdateDocuments - batch method to batch update documents
func (dbclient *CouchDatabase) CreateDatabaseIfNotExist() error
CreateDatabaseIfNotExist method provides function to create database
func (dbclient *CouchDatabase) CreateIndex(indexdefinition string) (*CreateIndexResponse, error)
CreateIndex method provides a function creating an index
func (dbclient *CouchDatabase) DeleteDoc(id, rev string) error
DeleteDoc method provides function to delete a document from the database by id
func (dbclient *CouchDatabase) DeleteIndex(designdoc, indexname string) error
DeleteIndex method provides a function deleting an index
func (dbclient *CouchDatabase) DropDatabase() (*DBOperationResponse, error)
DropDatabase provides method to drop an existing database
func (dbclient *CouchDatabase) EnsureFullCommit() (*DBOperationResponse, error)
EnsureFullCommit calls _ensure_full_commit for explicit fsync
func (dbclient *CouchDatabase) GetDatabaseInfo() (*DBInfo, *DBReturn, error)
GetDatabaseInfo method provides function to retrieve database information
func (dbclient *CouchDatabase) GetDatabaseSecurity() (*DatabaseSecurity, error)
GetDatabaseSecurity method provides function to retrieve the security config for a database
func (dbclient *CouchDatabase) ListIndex() ([]*IndexResult, error)
ListIndex method lists the defined indexes for a database
func (dbclient *CouchDatabase) QueryDocuments(query string) ([]*QueryResult, string, error)
QueryDocuments method provides function for processing a query
func (dbclient *CouchDatabase) ReadDoc(id string) (*CouchDoc, string, error)
ReadDoc method provides function to retrieve a document and its revision from the database by id
func (dbclient *CouchDatabase) ReadDocRange(startKey, endKey string, limit int32) ([]*QueryResult, string, error)
ReadDocRange method provides function to a range of documents based on the start and end keys startKey and endKey can also be empty strings. If startKey and endKey are empty, all documents are returned This function provides a limit option to specify the max number of entries and is supplied by config. Skip is reserved for possible future future use.
func (dbclient *CouchDatabase) SaveDoc(id string, rev string, couchDoc *CouchDoc) (string, error)
SaveDoc method provides a function to save a document, id and byte array
func (dbclient *CouchDatabase) WarmIndex(designdoc, indexname string) error
WarmIndex method provides a function for warming a single index
func (dbclient *CouchDatabase) WarmIndexAllIndexes() error
WarmIndexAllIndexes method provides a function for warming all indexes for a database
CouchDoc defines the structure for a JSON document value
type CouchDoc struct { JSONValue []byte Attachments []*AttachmentInfo }
CouchInstance represents a CouchDB instance
type CouchInstance struct {
// contains filtered or unexported fields
}
func CreateCouchInstance(couchDBConnectURL, id, pw string, maxRetries, maxRetriesOnStartup int, connectionTimeout time.Duration, createGlobalChangesDB bool, metricsProvider metrics.Provider) (*CouchInstance, error)
CreateCouchInstance creates a CouchDB instance
func (couchInstance *CouchInstance) HealthCheck(ctx context.Context) error
HealthCheck checks if the peer is able to communicate with CouchDB
func (couchInstance *CouchInstance) VerifyCouchConfig() (*ConnectionInfo, *DBReturn, error)
VerifyCouchConfig method provides function to verify the connection information
CreateIndexResponse contains an the index creation response from CouchDB
type CreateIndexResponse struct { Result string `json:"result"` ID string `json:"id"` Name string `json:"name"` }
DBInfo is body for database information.
type DBInfo struct { DbName string `json:"db_name"` Sizes struct { File int `json:"file"` External int `json:"external"` Active int `json:"active"` } `json:"sizes"` Other struct { DataSize int `json:"data_size"` } `json:"other"` DocDelCount int `json:"doc_del_count"` DocCount int `json:"doc_count"` DiskSize int `json:"disk_size"` DiskFormatVersion int `json:"disk_format_version"` DataSize int `json:"data_size"` CompactRunning bool `json:"compact_running"` InstanceStartTime string `json:"instance_start_time"` }
DBOperationResponse is body for successful database calls.
type DBOperationResponse struct { Ok bool // contains filtered or unexported fields }
DBReturn contains an error reported by CouchDB
type DBReturn struct { StatusCode int `json:"status_code"` Error string `json:"error"` Reason string `json:"reason"` }
DatabaseSecurity contains the definition for CouchDB database security
type DatabaseSecurity struct { Admins struct { Names []string `json:"names"` Roles []string `json:"roles"` } `json:"admins"` Members struct { Names []string `json:"names"` Roles []string `json:"roles"` } `json:"members"` }
DocID is a minimal structure for capturing the ID from a query result
type DocID struct { ID string `json:"_id"` }
DocMetadata is used for capturing CouchDB document header info, used to capture id, version, rev and attachments returned in the query from CouchDB
type DocMetadata struct { ID string `json:"_id"` Rev string `json:"_rev"` Version string `json:"~version"` AttachmentsInfo map[string]*AttachmentInfo `json:"_attachments"` }
FileDetails defines the structure needed to send an attachment to couchdb
type FileDetails struct { Follows bool `json:"follows"` ContentType string `json:"content_type"` Length int `json:"length"` }
IndexResult contains the definition for a couchdb index
type IndexResult struct { DesignDocument string `json:"designdoc"` Name string `json:"name"` Definition string `json:"definition"` }
QueryResponse is used for processing REST query responses from CouchDB
type QueryResponse struct { Warning string `json:"warning"` Docs []json.RawMessage `json:"docs"` Bookmark string `json:"bookmark"` }
QueryResult is used for returning query results from CouchDB
type QueryResult struct { ID string Value []byte Attachments []*AttachmentInfo }
RangeQueryResponse is used for processing REST range query responses from CouchDB
type RangeQueryResponse struct { TotalRows int32 `json:"total_rows"` Offset int32 `json:"offset"` Rows []struct { ID string `json:"id"` Key string `json:"key"` Value struct { Rev string `json:"rev"` } `json:"value"` Doc json.RawMessage `json:"doc"` } `json:"rows"` }