database

package
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2023 License: MIT Imports: 14 Imported by: 6

Documentation

Overview

Package database

General interface for distributed cache and data structure store (e.g. Redis)

Index

Constants

View Source
const (
	NOT_IMPLEMENTED  = "not implemented"
	NOT_SUPPORTED    = "not supported"
	TABLE_NOT_EXISTS = "table does not exist"
)
View Source
const (
	Eq       QueryOperator = "="
	Neq                    = "!"
	Like                   = "~"
	Gt                     = ">"
	Gte                    = ">="
	Lt                     = "<"
	Lte                    = "<="
	In                     = "*"
	NotIn                  = "-"
	Between                = "#"
	Contains               = "@"
)
View Source
const (
	INDEX_NOT_EXISTS = "index does not exist"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type FilterFunction

type FilterFunction func(raw map[string]any, filter QueryFilter) bool

FilterFunction signature of a filter function

type IDataCache

type IDataCache interface {

	// Closer includes method Close()
	io.Closer

	// Ping tests connectivity for retries number of time with time interval (in seconds) between retries
	Ping(retries uint, intervalInSeconds uint) error

	// Get the value of a key
	Get(factory EntityFactory, key string) (result Entity, err error)

	// GetKeys Get the value of all the given keys
	GetKeys(factory EntityFactory, keys ...string) (results []Entity, err error)

	// Set value of key with optional expiration
	Set(key string, entity Entity, expiration ...time.Duration) (err error)

	// Add Set the value of a key only if the key does not exist
	Add(key string, entity Entity, expiration time.Duration) (result bool, err error)

	// Del Delete keys
	Del(keys ...string) (err error)

	// Rename a key
	Rename(key string, newKey string) (err error)

	// Exists Check if key exists
	Exists(key string) (result bool, err error)

	// Scan keys from the provided cursor
	Scan(from uint64, match string, count int64) (keys []string, cursor uint64, err error)

	// HGet gets the value of a hash field
	HGet(factory EntityFactory, key, field string) (result Entity, err error)

	// HKeys gets all the fields in a hash
	HKeys(key string) (fields []string, err error)

	// HGetAll gets all the fields and values in a hash
	HGetAll(factory EntityFactory, key string) (result map[string]Entity, err error)

	// HSet sets the value of a hash field
	HSet(key, field string, entity Entity) (err error)

	// HDel delete one or more hash fields
	HDel(key string, fields ...string) (err error)

	// HAdd sets the value of a key only if the key does not exist
	HAdd(key, field string, entity Entity) (result bool, err error)

	// HExists Check if key exists
	HExists(key, field string) (result bool, err error)

	// RPush Append one or multiple values to a list
	RPush(key string, value ...Entity) (err error)

	// LPush Prepend one or multiple values to a list
	LPush(key string, value ...Entity) (err error)

	// RPop Remove and get the last element in a list
	RPop(factory EntityFactory, key string) (entity Entity, err error)

	// LPop Remove and get the first element in a list
	LPop(factory EntityFactory, key string) (entity Entity, err error)

	// BRPop Remove and get the last element in a list or block until one is available
	BRPop(factory EntityFactory, timeout time.Duration, keys ...string) (key string, entity Entity, err error)

	// BLPop Remove and get the first element in a list or block until one is available
	BLPop(factory EntityFactory, timeout time.Duration, keys ...string) (key string, entity Entity, err error)

	// LRange Get a range of elements from list
	LRange(factory EntityFactory, key string, start, stop int64) (result []Entity, err error)

	// LLen Get the length of a list
	LLen(key string) (result int64)
}

IDataCache DataCache interface

func NewInMemoryDataCache

func NewInMemoryDataCache() (dc IDataCache, err error)

NewInMemoryDataCache is a factory method for DB store

type IDatabase

type IDatabase interface {

	// Closer includes method Close()
	io.Closer

	// Ping Test database connectivity for retries number of time with time interval (in seconds) between retries
	Ping(retries uint, intervalInSeconds uint) error

	// Get a single entity by ID
	Get(factory EntityFactory, entityID string, keys ...string) (result Entity, err error)

	// List Get multiple entities by IDs
	List(factory EntityFactory, entityIDs []string, keys ...string) (list []Entity, err error)

	// Exists Check if entity exists by ID
	Exists(factory EntityFactory, entityID string, keys ...string) (result bool, err error)

	// Insert new entity
	Insert(entity Entity) (added Entity, err error)

	// Update existing entity
	Update(entity Entity) (updated Entity, err error)

	// Upsert Update entity or create it if it does not exist
	Upsert(entity Entity) (updated Entity, err error)

	// Delete entity by id and shard (key)
	Delete(factory EntityFactory, entityID string, keys ...string) (err error)

	// BulkInsert Insert multiple entities
	BulkInsert(entities []Entity) (affected int64, err error)

	// BulkUpdate Update multiple entities
	BulkUpdate(entities []Entity) (affected int64, err error)

	// BulkUpsert Update or insert multiple entities
	BulkUpsert(entities []Entity) (affected int64, err error)

	// BulkDelete Delete multiple entities by IDs
	BulkDelete(factory EntityFactory, entityIDs []string, keys ...string) (affected int64, err error)

	// SetField Update single field of the document in a single transaction (eliminates the need to fetch - change - update)
	SetField(factory EntityFactory, entityID string, field string, value any, keys ...string) (err error)

	// SetFields Update some fields of the document in a single transaction (eliminates the need to fetch - change - update)
	SetFields(factory EntityFactory, entityID string, fields map[string]any, keys ...string) (err error)

	// Query Utility struct method to build a query
	Query(factory EntityFactory) IQuery

	// ExecuteDDL Execute DDL - create table and indexes
	ExecuteDDL(ddl map[string][]string) (err error)

	// ExecuteSQL Execute SQL - execute SQL command
	ExecuteSQL(sql string, args ...any) (affected int64, err error)

	// DropTable Drop table and indexes
	DropTable(table string) (err error)

	// PurgeTable Fast delete table content (truncate)
	PurgeTable(table string) (err error)
}

IDatabase Database interface

func NewInMemoryDatabase

func NewInMemoryDatabase() (dbs IDatabase, err error)

NewInMemoryDatabase Factory method for database

type IDatastore

type IDatastore interface {

	// Closer includes method Close()
	io.Closer

	// Ping tests database connectivity for retries number of time with time interval (in seconds) between retries
	Ping(retries uint, intervalInSeconds uint) error

	// Get a single entity by ID
	Get(factory EntityFactory, entityID string, keys ...string) (result Entity, err error)

	// List gets multiple entities by IDs
	List(factory EntityFactory, entityIDs []string, keys ...string) (list []Entity, err error)

	// Exists checks if entity exists by ID
	Exists(factory EntityFactory, entityID string, keys ...string) (result bool, err error)

	// Insert a new entity
	Insert(entity Entity) (added Entity, err error)

	// Update an existing entity
	Update(entity Entity) (updated Entity, err error)

	// Upsert update entity or create it if it does not exist
	Upsert(entity Entity) (updated Entity, err error)

	// Delete entity by id and shard (key)
	Delete(factory EntityFactory, entityID string, keys ...string) (err error)

	// BulkInsert inserts multiple entities
	BulkInsert(entities []Entity) (affected int64, err error)

	// BulkUpdate updates multiple entities
	BulkUpdate(entities []Entity) (affected int64, err error)

	// BulkUpsert update or insert multiple entities
	BulkUpsert(entities []Entity) (affected int64, err error)

	// BulkDelete delete multiple entities by IDs
	BulkDelete(factory EntityFactory, entityIDs []string, keys ...string) (affected int64, err error)

	// SetField update a single field of the document in a single transaction (eliminates the need to fetch - change - update)
	SetField(factory EntityFactory, entityID string, field string, value any, keys ...string) (err error)

	// SetFields update some fields of the document in a single transaction (eliminates the need to fetch - change - update)
	SetFields(factory EntityFactory, entityID string, fields map[string]any, keys ...string) (err error)

	// Query is a factory method for query builder Utility
	Query(factory EntityFactory) IQuery

	// IndexExists tests if index exists
	IndexExists(indexName string) (exists bool)

	// CreateIndex creates an index (without mapping)
	CreateIndex(indexName string) (name string, err error)

	// CreateEntityIndex creates an index of entity and add entity field mapping
	CreateEntityIndex(factory EntityFactory, key string) (name string, err error)

	// DropIndex drops an index
	DropIndex(indexName string) (ack bool, err error)
}

IDatastore interface for NoSQL Big Data wrapper implementations

func NewInMemoryDatastore

func NewInMemoryDatastore() (dbs IDatastore, err error)

NewInMemoryDatastore Factory method for Datastore

type IQuery

type IQuery interface {

	// Apply adds a callback to apply on each result entity in the query
	Apply(cb func(in Entity) Entity) IQuery

	// Filter Add single field filter
	Filter(filter QueryFilter) IQuery

	// MatchAll Add list of filters, all of them should be satisfied (AND)
	MatchAll(filters ...QueryFilter) IQuery

	// MatchAny Add list of filters, any of them should be satisfied (OR)
	MatchAny(filters ...QueryFilter) IQuery

	// Sort Add sort order by field,  expects sort parameter in the following form: field_name (Ascending) or field_name- (Descending)
	Sort(sort string) IQuery

	// Page Set page number (for pagination)
	Page(page int) IQuery

	// Limit Set page size limit (for pagination)
	Limit(page int) IQuery

	// List Execute a query to get list of entities by IDs (the criteria is ignored)
	List(entityIDs []string, keys ...string) (out []Entity, err error)

	// Find Execute the query based on the criteria, order and pagination
	Find(keys ...string) (out []Entity, total int64, err error)

	// Count Execute the query based on the criteria, order and pagination and return only the count of matching rows
	Count(keys ...string) (total int64, err error)

	// FindSingle Execute query based on the where criteria to get a single (the first) result
	FindSingle(keys ...string) (entity Entity, err error)

	// GetMap Execute query based on the criteria, order and pagination and return the results as a map of id->Entity
	GetMap(keys ...string) (out map[string]Entity, err error)

	// GetIDs executes a query based on the where criteria, order and pagination and return the results as a list of Ids
	GetIDs(keys ...string) (out []string, err error)

	// Delete the entities satisfying the criteria
	Delete(keys ...string) (total int64, err error)

	// SetField Update single field of all the documents meeting the criteria in a single transaction
	SetField(field string, value any, keys ...string) (total int64, err error)

	// SetFields Update multiple fields of all the documents meeting the criteria in a single transaction
	SetFields(fields map[string]any, keys ...string) (total int64, err error)

	// ToString Get the string representation of the query
	ToString() string
}

IQuery Database Query interface

type ITable

type ITable interface {

	// Get single entity by ID
	Get(entityID string) (entity Entity, err error)

	// Exists checks if entity exists by ID
	Exists(entityID string) (result bool, err error)

	// Insert entity
	Insert(entity Entity) (added Entity, err error)

	// Update entity
	Update(entity Entity) (added Entity, err error)

	// Upsert update entity or insert if not found
	Upsert(entity Entity) (added Entity, err error)

	// Delete entity
	Delete(entityID string) (err error)

	// Table get access to the underlying data structure
	Table() (result map[string]Entity)
}

ITable is a database table interface

func NewInMemTable

func NewInMemTable() ITable

NewInMemTable factory method

type InMemoryDataCache

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

InMemoryDataCache represent in memory data cache

func (*InMemoryDataCache) Add added in v1.2.1

func (dc *InMemoryDataCache) Add(key string, entity Entity, expiration time.Duration) (result bool, err error)

Add Set the value of a key only if the key does not exist

func (*InMemoryDataCache) BLPop

func (dc *InMemoryDataCache) BLPop(factory EntityFactory, timeout time.Duration, keys ...string) (key string, entity Entity, err error)

BLPop Remove and get the first element in a list or block until one is available

func (*InMemoryDataCache) BRPop

func (dc *InMemoryDataCache) BRPop(factory EntityFactory, timeout time.Duration, keys ...string) (key string, value Entity, err error)

BRPop Remove and get the last element in a list or block until one is available

func (*InMemoryDataCache) Close

func (dc *InMemoryDataCache) Close() error

Close cache and free resources

func (*InMemoryDataCache) Del

func (dc *InMemoryDataCache) Del(keys ...string) (err error)

Del Delete keys

func (*InMemoryDataCache) Exists

func (dc *InMemoryDataCache) Exists(key string) (result bool, err error)

Exists checks if key exists

func (*InMemoryDataCache) Get

func (dc *InMemoryDataCache) Get(factory EntityFactory, key string) (result Entity, err error)

Get the value of a key

func (*InMemoryDataCache) GetKeys added in v1.2.1

func (dc *InMemoryDataCache) GetKeys(factory EntityFactory, keys ...string) (results []Entity, err error)

GetKeys Get the value of all the given keys

func (*InMemoryDataCache) HAdd added in v1.2.1

func (dc *InMemoryDataCache) HAdd(key, field string, entity Entity) (result bool, err error)

HAdd sets the value of a key only if the key does not exist

func (*InMemoryDataCache) HDel

func (dc *InMemoryDataCache) HDel(key string, fields ...string) (err error)

HDel delete one or more hash fields

func (*InMemoryDataCache) HExists

func (dc *InMemoryDataCache) HExists(key, field string) (result bool, err error)

HExists Check if key exists

func (*InMemoryDataCache) HGet

func (dc *InMemoryDataCache) HGet(factory EntityFactory, key, field string) (result Entity, err error)

HGet gets the value of a hash field

func (*InMemoryDataCache) HGetAll

func (dc *InMemoryDataCache) HGetAll(factory EntityFactory, key string) (result map[string]Entity, err error)

HGetAll gets all the fields and values in a hash

func (*InMemoryDataCache) HKeys

func (dc *InMemoryDataCache) HKeys(key string) (fields []string, err error)

HKeys get all the fields in a hash

func (*InMemoryDataCache) HSet

func (dc *InMemoryDataCache) HSet(key, field string, entity Entity) (err error)

HSet sets the value of a hash field

func (*InMemoryDataCache) LLen

func (dc *InMemoryDataCache) LLen(key string) (result int64)

LLen Get the length of a list

func (*InMemoryDataCache) LPop

func (dc *InMemoryDataCache) LPop(factory EntityFactory, key string) (entity Entity, err error)

LPop Remove and get the first element in a list

func (*InMemoryDataCache) LPush

func (dc *InMemoryDataCache) LPush(key string, value ...Entity) (err error)

LPush Prepend (add to the left) one or multiple values to a list

func (*InMemoryDataCache) LRange

func (dc *InMemoryDataCache) LRange(factory EntityFactory, key string, start, stop int64) (result []Entity, err error)

LRange Get a range of elements from list

func (*InMemoryDataCache) Ping

func (dc *InMemoryDataCache) Ping(retries uint, interval uint) error

Ping tests connectivity for retries number of time with time interval (in seconds) between retries

func (*InMemoryDataCache) RPop

func (dc *InMemoryDataCache) RPop(factory EntityFactory, key string) (entity Entity, err error)

RPop Remove and get the last element in a list

func (*InMemoryDataCache) RPush

func (dc *InMemoryDataCache) RPush(key string, value ...Entity) (err error)

RPush append (add to the right) one or multiple values to a list

func (*InMemoryDataCache) Rename

func (dc *InMemoryDataCache) Rename(key string, newKey string) (err error)

Rename a key

func (*InMemoryDataCache) Scan

func (dc *InMemoryDataCache) Scan(from uint64, match string, count int64) (keys []string, cursor uint64, err error)

Scan keys from the provided cursor

func (*InMemoryDataCache) Set

func (dc *InMemoryDataCache) Set(key string, entity Entity, expiration ...time.Duration) (err error)

Set value of key with optional expiration

type InMemoryDatabase

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

InMemoryDatabase represents in memory database with tables

func (*InMemoryDatabase) BulkDelete

func (dbs *InMemoryDatabase) BulkDelete(factory EntityFactory, entityIDs []string, keys ...string) (affected int64, err error)

BulkDelete delete multiple entities by id list

func (*InMemoryDatabase) BulkInsert

func (dbs *InMemoryDatabase) BulkInsert(entities []Entity) (affected int64, err error)

BulkInsert adds multiple entities to data store (all must be of the same type)

func (*InMemoryDatabase) BulkUpdate

func (dbs *InMemoryDatabase) BulkUpdate(entities []Entity) (affected int64, err error)

BulkUpdate updates multiple entities in the data store (all must be of the same type)

func (*InMemoryDatabase) BulkUpsert

func (dbs *InMemoryDatabase) BulkUpsert(entities []Entity) (affected int64, err error)

BulkUpsert update or insert multiple entities in the data store (all must be of the same type)

func (*InMemoryDatabase) Close

func (dbs *InMemoryDatabase) Close() error

Close DB and free resources

func (*InMemoryDatabase) Delete

func (dbs *InMemoryDatabase) Delete(factory EntityFactory, entityID string, keys ...string) (err error)

Delete entity by id

func (*InMemoryDatabase) DropTable

func (dbs *InMemoryDatabase) DropTable(table string) (err error)

DropTable drop a table and its related indexes

func (*InMemoryDatabase) ExecuteDDL

func (dbs *InMemoryDatabase) ExecuteDDL(ddl map[string][]string) (err error)

ExecuteDDL create table and indexes The ddl parameter is a map of strings (table names) to array of strings (list of fields to index)

func (*InMemoryDatabase) ExecuteSQL

func (dbs *InMemoryDatabase) ExecuteSQL(sql string, args ...any) (affected int64, err error)

ExecuteSQL execute raw SQL command

func (*InMemoryDatabase) Exists

func (dbs *InMemoryDatabase) Exists(factory EntityFactory, entityID string, keys ...string) (result bool, err error)

Exists checks if entity exists by ID

func (*InMemoryDatabase) Get

func (dbs *InMemoryDatabase) Get(factory EntityFactory, entityID string, keys ...string) (result Entity, err error)

Get single entity by ID

func (*InMemoryDatabase) Insert

func (dbs *InMemoryDatabase) Insert(entity Entity) (added Entity, err error)

Insert Add new entity

func (*InMemoryDatabase) List

func (dbs *InMemoryDatabase) List(factory EntityFactory, entityIDs []string, keys ...string) (list []Entity, err error)

List get a list of entities by IDs

func (*InMemoryDatabase) Ping

func (dbs *InMemoryDatabase) Ping(retries uint, interval uint) error

Ping Test database connectivity @param retries - how many retries are required (max 10) @param interval - time interval (in seconds) between retries (max 60)

func (*InMemoryDatabase) PurgeTable

func (dbs *InMemoryDatabase) PurgeTable(table string) (err error)

PurgeTable fast delete table content (truncate)

func (*InMemoryDatabase) Query

func (dbs *InMemoryDatabase) Query(factory EntityFactory) IQuery

Query is a builder method to construct query

func (*InMemoryDatabase) SetField

func (dbs *InMemoryDatabase) SetField(factory EntityFactory, entityID string, field string, value any, keys ...string) (err error)

SetField updates single field of the document in a single transaction (eliminates the need to fetch - change - update)

func (*InMemoryDatabase) SetFields

func (dbs *InMemoryDatabase) SetFields(factory EntityFactory, entityID string, fields map[string]any, keys ...string) (err error)

SetFields Updates some numeric fields of the document in a single transaction (eliminates the need to fetch - change - update)

func (*InMemoryDatabase) Update

func (dbs *InMemoryDatabase) Update(entity Entity) (updated Entity, err error)

Update existing entity in the data store

func (*InMemoryDatabase) Upsert

func (dbs *InMemoryDatabase) Upsert(entity Entity) (updated Entity, err error)

Upsert updates existing entity in the data store or add it if it does not exist

type InMemoryDatastore

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

InMemoryDatastore Represent a db with tables

func (*InMemoryDatastore) BulkDelete

func (dbs *InMemoryDatastore) BulkDelete(factory EntityFactory, entityIDs []string, keys ...string) (affected int64, err error)

BulkDelete delete multiple entities by IDs

func (*InMemoryDatastore) BulkInsert

func (dbs *InMemoryDatastore) BulkInsert(entities []Entity) (affected int64, err error)

BulkInsert inserts multiple entities

func (*InMemoryDatastore) BulkUpdate

func (dbs *InMemoryDatastore) BulkUpdate(entities []Entity) (affected int64, err error)

BulkUpdate updates multiple entities

func (*InMemoryDatastore) BulkUpsert

func (dbs *InMemoryDatastore) BulkUpsert(entities []Entity) (affected int64, err error)

BulkUpsert update or insert multiple entities

func (*InMemoryDatastore) Close

func (dbs *InMemoryDatastore) Close() error

Close Datastore and free resources

func (*InMemoryDatastore) CreateEntityIndex

func (dbs *InMemoryDatastore) CreateEntityIndex(factory EntityFactory, key string) (name string, err error)

CreateEntityIndex creates an index of entity and add entity field mapping

func (*InMemoryDatastore) CreateIndex

func (dbs *InMemoryDatastore) CreateIndex(indexName string) (name string, err error)

CreateIndex creates an index (without mapping)

func (*InMemoryDatastore) Delete

func (dbs *InMemoryDatastore) Delete(factory EntityFactory, entityID string, keys ...string) (err error)

Delete entity by id and shard (key)

func (*InMemoryDatastore) DropIndex

func (dbs *InMemoryDatastore) DropIndex(indexName string) (ack bool, err error)

DropIndex drops an index

func (*InMemoryDatastore) Exists

func (dbs *InMemoryDatastore) Exists(factory EntityFactory, entityID string, keys ...string) (result bool, err error)

Exists checks if entity exists by ID

func (*InMemoryDatastore) Get

func (dbs *InMemoryDatastore) Get(factory EntityFactory, entityID string, keys ...string) (result Entity, err error)

Get a single entity by ID

func (*InMemoryDatastore) IndexExists

func (dbs *InMemoryDatastore) IndexExists(indexName string) (exists bool)

IndexExists tests if index exists

func (*InMemoryDatastore) Insert

func (dbs *InMemoryDatastore) Insert(entity Entity) (added Entity, err error)

Insert a new entity

func (*InMemoryDatastore) List

func (dbs *InMemoryDatastore) List(factory EntityFactory, entityIDs []string, keys ...string) (list []Entity, err error)

List gets multiple entities by IDs

func (*InMemoryDatastore) Ping

func (dbs *InMemoryDatastore) Ping(retries uint, interval uint) error

Ping tests database connectivity for retries number of time with time interval (in seconds) between retries

func (*InMemoryDatastore) Query

func (dbs *InMemoryDatastore) Query(factory EntityFactory) IQuery

Query is a factory method for query builder Utility

func (*InMemoryDatastore) SetField

func (dbs *InMemoryDatastore) SetField(factory EntityFactory, entityID string, field string, value any, keys ...string) (err error)

SetField update a single field of the document in a single transaction (eliminates the need to fetch - change - update)

func (*InMemoryDatastore) SetFields

func (dbs *InMemoryDatastore) SetFields(factory EntityFactory, entityID string, fields map[string]any, keys ...string) (err error)

SetFields update some fields of the document in a single transaction (eliminates the need to fetch - change - update)

func (*InMemoryDatastore) Update

func (dbs *InMemoryDatastore) Update(entity Entity) (updated Entity, err error)

Update an existing entity

func (*InMemoryDatastore) Upsert

func (dbs *InMemoryDatastore) Upsert(entity Entity) (updated Entity, err error)

Upsert update entity or create it if it does not exist

type InMemoryTable

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

InMemoryTable represents a table in the DB

func (*InMemoryTable) Delete

func (tbl *InMemoryTable) Delete(entityID string) (err error)

Delete entity

func (*InMemoryTable) Exists

func (tbl *InMemoryTable) Exists(entityID string) (result bool, err error)

Exists checks if entity exists by ID

func (*InMemoryTable) Get

func (tbl *InMemoryTable) Get(entityID string) (entity Entity, err error)

Get single entity by ID

func (*InMemoryTable) Insert

func (tbl *InMemoryTable) Insert(entity Entity) (added Entity, err error)

Insert entity

func (*InMemoryTable) Table

func (tbl *InMemoryTable) Table() (result map[string]Entity)

Table get access to the underlying data structure

func (*InMemoryTable) Update

func (tbl *InMemoryTable) Update(entity Entity) (added Entity, err error)

Update entity

func (*InMemoryTable) Upsert

func (tbl *InMemoryTable) Upsert(entity Entity) (added Entity, err error)

Upsert update entity or insert if not found

type QueryFilter

type QueryFilter interface {

	// Eq - Equal
	Eq(value any) QueryFilter

	// Neq - Not equal
	Neq(value any) QueryFilter

	// Like - similar
	Like(value string) QueryFilter

	// Gt - Greater than
	Gt(value any) QueryFilter

	// Gte - Greater or equal
	Gte(value any) QueryFilter

	// Lt - Less than
	Lt(value any) QueryFilter

	// Lte - Less or equal
	Lte(value any) QueryFilter

	// In - mach one of the values
	In(values ...any) QueryFilter

	// NotIn - Not In
	NotIn(values ...any) QueryFilter

	// Between - equal or greater than the lower boundary and equal or less than the upper boundary
	Between(value1, value2 any) QueryFilter

	// If - Include this filter only if condition is true
	If(value bool) QueryFilter

	// IsActive Include this filter only if condition is true
	IsActive() bool

	// GetField Get the field name
	GetField() string

	// GetOperator Get the criteria operator
	GetOperator() QueryOperator

	// GetValues Get the criteria values
	GetValues() []any

	// GetStringValue Get string representation of the value
	GetStringValue(index int) string
}

QueryFilter Query filter interface

func Filter

func Filter(field string) QueryFilter

Filter by field

type QueryOperator

type QueryOperator string

Jump to

Keyboard shortcuts

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