Documentation
¶
Index ¶
- Variables
- func GetTx(ctx context.Context) (*sql.Tx, error)
- func ListRegisteredDrivers() map[string][]string
- func NewSearchClient(d *Data, collector ...metrics.Collector) *search.Client
- func RegisterCacheDriver(driver CacheDriver)
- func RegisterDatabaseDriver(driver DatabaseDriver)
- func RegisterMessageDriver(driver MessageDriver)
- func RegisterSearchDriver(driver SearchDriver)
- func RegisterStorageDriver(driver StorageDriver)
- type CacheDriver
- type ContextKey
- type Data
- func (d *Data) Close() []error
- func (d *Data) ConsumeFromKafka(ctx context.Context, topic, groupID string, handler func([]byte) error) error
- func (d *Data) ConsumeFromRabbitMQ(queue string, handler func([]byte) error) error
- func (d *Data) DB() *sql.DB
- func (d *Data) DBRead() (*sql.DB, error)
- func (d *Data) GetDBManager() *connection.DBManager
- func (d *Data) GetDatabaseNodes() (master *sql.DB, slaves []*sql.DB, err error)
- func (d *Data) GetElasticsearch() any
- func (d *Data) GetMasterDB() *sql.DB
- func (d *Data) GetMeilisearch() any
- func (d *Data) GetMetricsCollector() metrics.Collector
- func (d *Data) GetMongoCollection(dbName, collName string, readOnly bool) (any, error)
- func (d *Data) GetMongoDatabase(name string, readOnly bool) (any, error)
- func (d *Data) GetMongoManager() any
- func (d *Data) GetOpenSearch() any
- func (d *Data) GetRedis() any
- func (d *Data) GetSlaveDB() (*sql.DB, error)
- func (d *Data) GetStats() map[string]any
- func (d *Data) Health(ctx context.Context) map[string]any
- func (d *Data) IsMessagingAvailable() bool
- func (d *Data) IsMessagingEnabled() bool
- func (d *Data) IsQueueAvailable() bool
- func (d *Data) IsReadOnlyMode(ctx context.Context) bool
- func (d *Data) MongoHealthCheck(ctx context.Context) error
- func (d *Data) Ping(ctx context.Context) error
- func (d *Data) PublishToKafka(ctx context.Context, topic string, key, value []byte) error
- func (d *Data) PublishToRabbitMQ(exchange, routingKey string, body []byte) error
- func (d *Data) ShouldUseMemoryFallback() bool
- func (d *Data) WithMongoTransaction(ctx context.Context, fn func(any) error) error
- func (d *Data) WithTx(ctx context.Context, fn func(ctx context.Context) error) error
- func (d *Data) WithTxRead(ctx context.Context, fn func(ctx context.Context) error) error
- type DatabaseDriver
- type MessageDriver
- type Option
- type SearchCollectorAdapter
- type SearchDriver
- type SearchEngine
- type StorageDriver
Constants ¶
This section is empty.
Variables ¶
var ProviderSet = wire.NewSet(ProvideData)
ProviderSet is the wire provider set for the data package. It provides *Data with a cleanup function that closes all connections.
Usage:
wire.Build(
data.ProviderSet,
// ... other providers
)
Functions ¶
func ListRegisteredDrivers ¶ added in v0.2.0
ListRegisteredDrivers returns a snapshot of all registered drivers. Useful for debugging and diagnostics.
func NewSearchClient ¶ added in v0.2.1
NewSearchClient creates a search client from ncore data layer. It automatically detects and creates adapters for available search engines.
Returns nil if no search engines are available. Applications should check if the returned client is nil to support optional search functionality.
func RegisterCacheDriver ¶ added in v0.2.0
func RegisterCacheDriver(driver CacheDriver)
RegisterCacheDriver makes a cache driver available by the provided name. It follows the same pattern as RegisterDatabaseDriver.
func RegisterDatabaseDriver ¶ added in v0.2.0
func RegisterDatabaseDriver(driver DatabaseDriver)
RegisterDatabaseDriver makes a database driver available by the provided name. It is intended to be called from the init function in driver packages.
Example usage in a driver package:
func init() {
data.RegisterDatabaseDriver(&postgresDriver{})
}
If RegisterDatabaseDriver is called twice with the same name or if driver is nil, it panics.
func RegisterMessageDriver ¶ added in v0.2.0
func RegisterMessageDriver(driver MessageDriver)
RegisterMessageDriver makes a message queue driver available by the provided name.
func RegisterSearchDriver ¶ added in v0.2.0
func RegisterSearchDriver(driver SearchDriver)
RegisterSearchDriver makes a search engine driver available by the provided name.
func RegisterStorageDriver ¶ added in v0.2.0
func RegisterStorageDriver(driver StorageDriver)
RegisterStorageDriver makes a storage driver available by the provided name.
Types ¶
type CacheDriver ¶ added in v0.2.0
type CacheDriver interface {
// Name returns the driver identifier (e.g., "redis", "memcached")
Name() string
// Connect establishes a new cache connection.
Connect(ctx context.Context, cfg any) (any, error)
// Close terminates the cache connection.
Close(conn any) error
// Ping verifies the cache connection is alive.
Ping(ctx context.Context, conn any) error
}
CacheDriver defines the interface for cache/key-value store drivers.
func GetCacheDriver ¶ added in v0.2.0
func GetCacheDriver(name string) (CacheDriver, error)
GetCacheDriver retrieves a registered cache driver by name.
type Data ¶
type Data struct {
Conn *connection.Connections
// contains filtered or unexported fields
}
func ProvideData ¶ added in v0.2.0
ProvideData initializes and returns the data layer with cleanup function. The cleanup function should be called when the application shuts down to properly close all database connections and release resources.
func (*Data) ConsumeFromKafka ¶
func (d *Data) ConsumeFromKafka(ctx context.Context, topic, groupID string, handler func([]byte) error) error
ConsumeFromKafka consumes messages from Kafka with metrics
func (*Data) ConsumeFromRabbitMQ ¶
ConsumeFromRabbitMQ consumes messages from RabbitMQ with metrics
func (*Data) GetDBManager ¶
func (d *Data) GetDBManager() *connection.DBManager
func (*Data) GetDatabaseNodes ¶
GetDatabaseNodes returns information about all database nodes (master and slaves)
func (*Data) GetElasticsearch ¶
func (*Data) GetMasterDB ¶
func (*Data) GetMeilisearch ¶
func (*Data) GetMetricsCollector ¶
GetMetricsCollector returns the metrics collector
func (*Data) GetMongoCollection ¶
func (*Data) GetMongoDatabase ¶
func (*Data) GetMongoManager ¶
func (*Data) GetOpenSearch ¶
func (*Data) IsMessagingAvailable ¶
IsMessagingAvailable checks if any messaging (queue or memory) is available Deprecated: Use IsMessagingEnabled() and IsQueueAvailable() separately
func (*Data) IsMessagingEnabled ¶
IsMessagingEnabled checks if messaging services
func (*Data) IsQueueAvailable ¶
IsQueueAvailable checks if external message queues are available
func (*Data) IsReadOnlyMode ¶
IsReadOnlyMode checks if the system is in read-only mode (only slaves available)
func (*Data) PublishToKafka ¶
PublishToKafka publishes message to Kafka with metrics
func (*Data) PublishToRabbitMQ ¶
PublishToRabbitMQ publishes message to RabbitMQ with metrics
func (*Data) ShouldUseMemoryFallback ¶
ShouldUseMemoryFallback checks if should fallback to memory when queue unavailable
func (*Data) WithMongoTransaction ¶
type DatabaseDriver ¶ added in v0.2.0
type DatabaseDriver interface {
// Name returns the driver identifier (e.g., "postgres", "mysql", "sqlite")
Name() string
// Connect establishes a new database connection using the provided configuration.
// The returned connection should be ready for use or return an error.
Connect(ctx context.Context, cfg any) (any, error)
// Close terminates the database connection and releases resources.
Close(conn any) error
// Ping verifies the connection is alive and functional.
Ping(ctx context.Context, conn any) error
}
DatabaseDriver defines the interface for relational database drivers. Implementations should handle connection lifecycle and health checks.
func GetDatabaseDriver ¶ added in v0.2.0
func GetDatabaseDriver(name string) (DatabaseDriver, error)
GetDatabaseDriver retrieves a registered database driver by name. It returns an error with helpful instructions if the driver is not found.
type MessageDriver ¶ added in v0.2.0
type MessageDriver interface {
// Name returns the driver identifier (e.g., "kafka", "rabbitmq")
Name() string
// Connect establishes a new message broker connection.
Connect(ctx context.Context, cfg any) (any, error)
// Close terminates the message broker connection.
Close(conn any) error
}
MessageDriver defines the interface for message queue/broker drivers.
func GetMessageDriver ¶ added in v0.2.0
func GetMessageDriver(name string) (MessageDriver, error)
GetMessageDriver retrieves a registered message queue driver by name.
type Option ¶
type Option func(*Data)
func WithExtensionCollector ¶
func WithExtensionCollector(collector metrics.ExtensionCollector) Option
func WithIndexPrefix ¶
func WithMetricsCollector ¶
func WithSearchConfig ¶
type SearchCollectorAdapter ¶ added in v0.2.1
type SearchCollectorAdapter struct {
// contains filtered or unexported fields
}
SearchCollectorAdapter adapts data/metrics.Collector to data/search.Collector
func (*SearchCollectorAdapter) SearchIndex ¶ added in v0.2.1
func (a *SearchCollectorAdapter) SearchIndex(engine, operation string)
SearchIndex records search index operation metrics
func (*SearchCollectorAdapter) SearchQuery ¶ added in v0.2.1
func (a *SearchCollectorAdapter) SearchQuery(engine string, err error)
SearchQuery records search query metrics
type SearchDriver ¶ added in v0.2.0
type SearchDriver interface {
// Name returns the driver identifier (e.g., "elasticsearch", "meilisearch")
Name() string
// Connect establishes a new search engine connection.
Connect(ctx context.Context, cfg any) (any, error)
// Close terminates the search engine connection.
Close(conn any) error
}
SearchDriver defines the interface for search engine drivers.
func GetSearchDriver ¶ added in v0.2.0
func GetSearchDriver(name string) (SearchDriver, error)
GetSearchDriver retrieves a registered search engine driver by name.
type SearchEngine ¶ added in v0.2.0
type SearchEngine interface {
// Health checks if the search engine is available and responds
Health(ctx context.Context) error
// IndexDocument indexes a single document
IndexDocument(ctx context.Context, index, docID string, document any) error
// DeleteDocument deletes a document by ID
DeleteDocument(ctx context.Context, index, docID string) error
// IndexExists checks if an index exists
IndexExists(ctx context.Context, index string) (bool, error)
// CreateIndex creates a new index with optional settings
CreateIndex(ctx context.Context, index, settings string) error
}
SearchEngine defines the interface that all search engine client implementations must satisfy. This allows the search.Client to work with any search backend through type assertions.
type StorageDriver ¶ added in v0.2.0
type StorageDriver interface {
// Name returns the driver identifier (e.g., "s3", "minio", "local")
Name() string
// Connect establishes a new storage connection.
Connect(ctx context.Context, cfg any) (any, error)
// Close terminates the storage connection.
Close(conn any) error
}
StorageDriver defines the interface for object storage drivers.
func GetStorageDriver ¶ added in v0.2.0
func GetStorageDriver(name string) (StorageDriver, error)
GetStorageDriver retrieves a registered storage driver by name.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cache
module
|
|
|
elasticsearch
module
|
|
|
entgo
module
|
|
|
kafka
module
|
|
|
meilisearch
module
|
|
|
mongodb
module
|
|
|
mysql
module
|
|
|
neo4j
module
|
|
|
opensearch
module
|
|
|
postgres
module
|
|
|
rabbitmq
module
|
|
|
redis
module
|
|
|
sqlite
module
|