dodod

package module
v0.0.0-...-01e9892 Latest Latest
Warning

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

Go to latest
Published: Apr 2, 2020 License: MIT Imports: 23 Imported by: 0

README

dodod

GoDoc Build Status Go Report Card Coverage Status


Usage

➜ go get github.com/mkawserm/dodod

package main

func main()  {
 
}

Documentation

Overview

Package dodod implements an embeddable full text search engine based on bleve, badger and bdodb

Index

Constants

This section is empty.

Variables

View Source
var ErrDatabaseIsNotOpen = errors.New("dodod: database is not open")
View Source
var ErrDatabasePasswordChangeFailed = errors.New("dodod: database password change failed")

var ErrNilPointer = errors.New("dodod: nil pointer")

View Source
var ErrDatabaseTransactionFailed = errors.New("dodod: database transaction failed")
View Source
var ErrDocumentTypeAlreadyRegistered = errors.New("dodod: document type already registered")
View Source
var ErrDocumentTypeIsNotRegistered = errors.New("dodod: document type is not registered")
View Source
var ErrEmptyPassword = errors.New("dodod: empty password")
View Source
var ErrEmptyPath = errors.New("dodod: empty path")
View Source
var ErrFailedToCopy = errors.New("dodod: failed to copy file")
View Source
var ErrFieldTypeMismatch = errors.New("dodod: field type mismatch")

ErrFieldTypeMismatch will occur if the field already registered as different type

View Source
var ErrIdCanNotBeEmpty = errors.New("dodod: id can not be empty")
View Source
var ErrIndexStorePasswordChangeFailed = errors.New("dodod: index store password change failed")
View Source
var ErrIndexStoreTransactionFailed = errors.New("dodod: index store transaction failed")
View Source
var ErrInvalidConfigFile = errors.New("dodod: invalid config file")

var ErrFailedToOpenDatabase = errors.New("dodod: failed to open database") var ErrFailedToCloseDatabase = errors.New("dodod: failed to close database")

View Source
var ErrInvalidData = errors.New("dodod: invalid data")
View Source
var ErrInvalidDocument = errors.New("dodod: invalid document")
View Source
var ErrJSONParseFailed = errors.New("dodod: failed to parse json data")
View Source
var ErrNonBooleanValueForBooleanField = errors.New(`dodod: non-boolean value for boolean field`)
View Source
var ErrUnknownBaseType = errors.New(`dodod: unknown base type`)
View Source
var ErrWrongPassword = errors.New("dodod: wrong password")

Functions

func ExtractFields

func ExtractFields(document interface{}) map[string]string

func GetId

func GetId(document interface{}) string

func GetType

func GetType(document interface{}) string

func IsErrorType

func IsErrorType(value interface{}) bool

IsErrorType checks if the provided value is error or not

Types

type BleveIndexOpener

type BleveIndexOpener struct {
	EngineName string
}

func (*BleveIndexOpener) BleveIndex

func (b *BleveIndexOpener) BleveIndex(dbPath string,
	indexMapping *mapping.IndexMappingImpl,
	indexName string,
	config map[string]interface{}) (bleve.Index, error)

func (*BleveIndexOpener) SetEngineName

func (b *BleveIndexOpener) SetEngineName(name string)

type Database

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

func (*Database) ChangePassword

func (db *Database) ChangePassword(newPassword string) error

func (*Database) Close

func (db *Database) Close() error

func (*Database) Create

func (db *Database) Create(data []interface{}) error

func (*Database) CreateDocument

func (db *Database) CreateDocument(data []interface{}) error

func (*Database) CreateIndex

func (db *Database) CreateIndex(data []interface{}) error

func (*Database) DecodeDocument

func (db *Database) DecodeDocument(data []byte) (interface{}, error)

func (*Database) DecodeDocumentUsingInterface

func (db *Database) DecodeDocumentUsingInterface(data []byte, document interface{}) error

func (*Database) Delete

func (db *Database) Delete(data []interface{}) error

func (*Database) DeleteDocument

func (db *Database) DeleteDocument(data []interface{}) error

func (*Database) DeleteIndex

func (db *Database) DeleteIndex(data []interface{}) error

func (*Database) EncodeDocument

func (db *Database) EncodeDocument(document interface{}) ([]byte, error)

func (*Database) GetDocument

func (db *Database) GetDocument(data []interface{}) (uint64, error)

func (*Database) GetDocumentWithError

func (db *Database) GetDocumentWithError(data []string) (uint64, []interface{}, error)

func (*Database) GetInternalDatabase

func (db *Database) GetInternalDatabase() *badger.DB

func (*Database) GetInternalIndex

func (db *Database) GetInternalIndex() bleve.Index

func (*Database) GetInternalIndexMapping

func (db *Database) GetInternalIndexMapping() *mapping.IndexMappingImpl

func (*Database) GetRegisteredDocument

func (db *Database) GetRegisteredDocument() map[string]interface{}

func (*Database) GetRegisteredFields

func (db *Database) GetRegisteredFields() []string

func (*Database) IsDatabaseReady

func (db *Database) IsDatabaseReady() bool

func (*Database) IsDocumentExists

func (db *Database) IsDocumentExists(id string) bool

func (*Database) IsIndexExists

func (db *Database) IsIndexExists(id string) bool

func (*Database) Open

func (db *Database) Open() error

func (*Database) Read

func (db *Database) Read(data []string) (uint64, []interface{}, error)

func (*Database) RegisterDocument

func (db *Database) RegisterDocument(d interface{}) error

func (*Database) Search

func (db *Database) Search(input map[string]interface{}, outputType string) (interface{}, error)

Search using the input params into the index store

func (*Database) SetDbPassword

func (db *Database) SetDbPassword(dbPassword string)

func (*Database) SetDbPath

func (db *Database) SetDbPath(dbPath string)

func (*Database) SetEncoderCredentialsRW

func (db *Database) SetEncoderCredentialsRW(encoderCredentialsRW pasap.EncoderCredentialsRW)

func (*Database) SetIndexOpener

func (db *Database) SetIndexOpener(opener IndexOpener)

func (*Database) SetIndexStoreName

func (db *Database) SetIndexStoreName(indexStoreName string)

func (*Database) SetPasswordHasher

func (db *Database) SetPasswordHasher(passwordHasher pasap.PasswordHasher)

func (*Database) SetReadOnly

func (db *Database) SetReadOnly(b bool)

func (*Database) SetVerifierCredentialsRW

func (db *Database) SetVerifierCredentialsRW(verifierCredentialsRW pasap.VerifierCredentialsRW)

func (*Database) Setup

func (db *Database) Setup(passwordHasher pasap.PasswordHasher,
	encoderCredentialsRW pasap.EncoderCredentialsRW,
	verifierCredentialsRW pasap.VerifierCredentialsRW,
	indexOpener IndexOpener)

func (*Database) SetupDefaults

func (db *Database) SetupDefaults()

func (*Database) Update

func (db *Database) Update(data []interface{}) error

func (*Database) UpdateDocument

func (db *Database) UpdateDocument(data []interface{}) error

func (*Database) UpdateIndex

func (db *Database) UpdateIndex(data []interface{}) error

type Document

type Document interface {
	mapping.Classifier
	GetId() string
}

type DocumentRegistry

type DocumentRegistry interface {
	RegisterDocument(document interface{}) error
	GetRegisteredFields() []string
	GetRegisteredDocument() map[string]interface{}
}

type Dodod

type Dodod interface {
	Query
	Mutation

	Search

	DocumentRegistry
}

type IndexOpener

type IndexOpener interface {
	SetEngineName(name string)
	BleveIndex(dbPath string,
		indexMapping *mapping.IndexMappingImpl,
		indexName string,
		config map[string]interface{}) (bleve.Index, error)
}

type Logger

type Logger interface {
	Errorf(f string, v ...interface{})
	Warningf(f string, v ...interface{})
	Infof(f string, v ...interface{})
	Debugf(f string, v ...interface{})
}

Logger interface

var DefaultLogger Logger = &defaultLogger{Logger: log.New(os.Stderr, "dodod ", log.LstdFlags)}

DefaultLogger is the default logger for dodod Set different logger to modify the logging behavior

type Mutation

type Mutation interface {
	// Create data into the database and index store
	Create(data []interface{}) error
	// Update data inside the database and index store
	Update(data []interface{}) error
	// Delete data from the database and index store
	Delete(data []interface{}) error

	// CreateIndex into the index store
	CreateIndex(data []interface{}) error
	// UpdateIndex inside the index store
	UpdateIndex(data []interface{}) error
	// DeleteIndex from the index store
	DeleteIndex(data []interface{}) error

	// CreateDocument into the database
	CreateDocument(data []interface{}) error
	// UpdateDocument inside the database
	UpdateDocument(data []interface{}) error
	// DeleteDocument from the database
	DeleteDocument(data []interface{}) error
}

Mutation interface defines all mutation related methods

type Query

type Query interface {
	// Read data using the provided id
	Read(data []string) (uint64, []interface{}, error)

	// GetDocument will fill up the data provided by the interface
	GetDocument(data []interface{}) (uint64, error)

	// GetDocumentWithError will get documents from the database
	// using ids provided in the data string slice
	GetDocumentWithError(data []string) (uint64, []interface{}, error)
}

Query interface defines all query related methods

type Search interface {
	// Search using the input map and output result (based on outputType) and error
	Search(input map[string]interface{}, outputType string) (output interface{}, err error)
}

Search interface defines a basic method to search

Implementation must strictly follow input and output guide

Jump to

Keyboard shortcuts

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