Documentation
ΒΆ
Overview ΒΆ
Package apoc provides APOC (Awesome Procedures On Cypher) functions for NornicDB.
All functions are compiled into the binary and controlled via configuration, following Neo4j's APOC architecture.
Package apoc configuration provides APOC function configuration for NornicDB.
Configuration can be loaded from:
- Environment variables (recommended for Docker/K8s)
- YAML configuration file
- Programmatic defaults
Environment Variables:
NORNICDB_PLUGINS_DIR - Directory to auto-load .so plugins from NORNICDB_APOC_COLL_ENABLED - Enable collection functions (default: true) NORNICDB_APOC_TEXT_ENABLED - Enable text functions (default: true) NORNICDB_APOC_MATH_ENABLED - Enable math functions (default: true) NORNICDB_APOC_ALGO_ENABLED - Enable graph algorithms (default: true) NORNICDB_APOC_CREATE_ENABLED - Enable dynamic creation (default: true) NORNICDB_APOC_SECURITY_ALLOW_FILE_ACCESS - Legacy shorthand enabling both import and export file operations NORNICDB_APOC_SECURITY_ALLOW_IMPORT_FILE_ACCESS - Allow APOC import/load local file operations (default: false) NORNICDB_APOC_SECURITY_ALLOW_EXPORT_FILE_ACCESS - Allow APOC export local file operations (default: false) NORNICDB_APOC_SECURITY_FILE_ACCESS_ROOT - Rebase local APOC file URLs under this directory when set NORNICDB_APOC_SECURITY_MAX_COLLECTION_SIZE - Max collection size (default: 100000)
Example Docker Usage:
docker run -e NORNICDB_PLUGINS_DIR=/plugins \
-e NORNICDB_APOC_ALGO_ENABLED=false \
-v ./my-plugins:/plugins \
nornicdb/nornicdb
Index ΒΆ
- Constants
- func Call(name string, args []interface{}) (interface{}, error)
- func Categories() []string
- func GetStorage() storage.Storage
- func Initialize(storage storage.Storage, cfg *Config) error
- func IsAvailable(name string) bool
- func List() []string
- func ListByCategory(category string) []string
- func SetStorage(s storage.Storage)
- type Config
- type Function
- type SecurityConfig
Constants ΒΆ
const ExampleConfigYAML = `` /* 1269-byte string literal not displayed */
Example configuration file content
Variables ΒΆ
This section is empty.
Functions ΒΆ
func Call ΒΆ
Call executes an APOC function by name.
Example:
result, err := apoc.Call("apoc.coll.sum", []interface{}{[]interface{}{1, 2, 3}})
func GetStorage ΒΆ
GetStorage returns the current storage backend for use by APOC functions. This allows subpackages to access the database without tight coupling.
func Initialize ΒΆ
Initialize sets up APOC with storage and configuration. This should be called once at application startup.
func IsAvailable ΒΆ
IsAvailable checks if a function is registered and enabled.
func ListByCategory ΒΆ
ListByCategory returns all function names in a category.
func SetStorage ΒΆ
SetStorage updates the storage backend (for testing or reconfiguration).
Types ΒΆ
type Config ΒΆ
type Config struct {
// Categories controls entire function categories
// Keys: coll, text, math, convert, map, date, json, util, agg, node, path, algo, create
Categories map[string]bool `yaml:"categories"`
// Functions controls specific functions (overrides category settings)
// Supports wildcards: "apoc.export.*": false
Functions map[string]bool `yaml:"functions"`
// Security settings
Security SecurityConfig `yaml:"security"`
// PluginsDir is the directory to auto-load .so plugins from (optional)
// If set, all .so files in this directory are loaded on Initialize()
// Can be set via NORNICDB_PLUGINS_DIR environment variable
PluginsDir string `yaml:"plugins_dir"`
}
Config controls which APOC functions are enabled.
Example:
// Load from environment (Docker/K8s friendly)
cfg := apoc.LoadFromEnv()
// Or load from YAML file
cfg, err := apoc.LoadConfig("./apoc.yaml")
// Or use defaults
cfg := apoc.DefaultConfig()
func DefaultConfig ΒΆ
func DefaultConfig() *Config
DefaultConfig returns a configuration with all functions enabled.
func LoadConfig ΒΆ
LoadConfig loads configuration from a YAML file.
func LoadConfigOrDefault ΒΆ
LoadConfigOrDefault loads config from file, or returns default if file doesn't exist.
func LoadFromEnv ΒΆ
func LoadFromEnv() *Config
LoadFromEnv loads APOC configuration from environment variables.
This is the recommended approach for Docker/Kubernetes deployments.
Environment Variables:
NORNICDB_PLUGINS_DIR - Plugin directory path NORNICDB_APOC_COLL_ENABLED - Enable apoc.coll.* (default: true) NORNICDB_APOC_TEXT_ENABLED - Enable apoc.text.* (default: true) NORNICDB_APOC_MATH_ENABLED - Enable apoc.math.* (default: true) NORNICDB_APOC_CONVERT_ENABLED - Enable apoc.convert.* (default: true) NORNICDB_APOC_MAP_ENABLED - Enable apoc.map.* (default: true) NORNICDB_APOC_DATE_ENABLED - Enable apoc.date.* (default: true) NORNICDB_APOC_JSON_ENABLED - Enable apoc.json.* (default: true) NORNICDB_APOC_UTIL_ENABLED - Enable apoc.util.* (default: true) NORNICDB_APOC_AGG_ENABLED - Enable apoc.agg.* (default: true) NORNICDB_APOC_NODE_ENABLED - Enable apoc.node.* (default: true) NORNICDB_APOC_PATH_ENABLED - Enable apoc.path.* (default: true) NORNICDB_APOC_ALGO_ENABLED - Enable apoc.algo.* (default: true) NORNICDB_APOC_CREATE_ENABLED - Enable apoc.create.* (default: true) NORNICDB_APOC_SECURITY_ALLOW_DYNAMIC_CREATION - Allow dynamic creation (default: true) NORNICDB_APOC_SECURITY_ALLOW_FILE_ACCESS - Legacy shorthand enabling both import and export file access NORNICDB_APOC_SECURITY_ALLOW_IMPORT_FILE_ACCESS - Allow APOC import/load local file access (default: false) NORNICDB_APOC_SECURITY_ALLOW_EXPORT_FILE_ACCESS - Allow APOC export local file access (default: false) NORNICDB_APOC_SECURITY_FILE_ACCESS_ROOT - Restrict local APOC file URLs to this root when set NORNICDB_APOC_SECURITY_MAX_COLLECTION_SIZE - Max collection size (default: 100000)
Example:
os.Setenv("NORNICDB_PLUGINS_DIR", "/opt/nornicdb/plugins")
os.Setenv("NORNICDB_APOC_ALGO_ENABLED", "false")
cfg := apoc.LoadFromEnv()
func LoadFromEnvOrFile ΒΆ
LoadFromEnvOrFile loads config from environment variables first, then falls back to file. Environment variables take precedence over file settings.
func (*Config) IsCategoryEnabled ΒΆ
IsCategoryEnabled checks if a category is enabled.
type Function ΒΆ
type Function struct {
Name string
Category string
Handler interface{}
Description string
Examples []string
}
Function represents a registered APOC function.
type SecurityConfig ΒΆ
type SecurityConfig struct {
// AllowDynamicCreation permits apoc.create.* functions
AllowDynamicCreation bool `yaml:"allow_dynamic_creation"`
// AllowFileAccess is a legacy shorthand that enables both import and export
// local file operations when true.
AllowFileAccess bool `yaml:"allow_file_access"`
// AllowImportFileAccess permits APOC import/load file system operations.
AllowImportFileAccess bool `yaml:"allow_import_file_access"`
// AllowExportFileAccess permits APOC export file system operations.
AllowExportFileAccess bool `yaml:"allow_export_file_access"`
// FileAccessRoot is the local import root used for APOC file URLs.
// Empty means local file access, when enabled, is unrestricted.
// When set, local file-like inputs are normalized and rebased under that
// root, mirroring Neo4j's import-directory behavior.
FileAccessRoot string `yaml:"file_access_root"`
// MaxCollectionSize limits collection function input sizes
MaxCollectionSize int `yaml:"max_collection_size"`
}
SecurityConfig contains security-related settings.
Directories
ΒΆ
| Path | Synopsis |
|---|---|
|
Package agg provides APOC aggregation functions.
|
Package agg provides APOC aggregation functions. |
|
Package algo provides APOC graph algorithm functions.
|
Package algo provides APOC graph algorithm functions. |
|
Package atomic provides APOC atomic operations.
|
Package atomic provides APOC atomic operations. |
|
Package bitwise provides APOC bitwise operations.
|
Package bitwise provides APOC bitwise operations. |
|
Package coll provides APOC collection manipulation functions.
|
Package coll provides APOC collection manipulation functions. |
|
Package community provides APOC community detection functions.
|
Package community provides APOC community detection functions. |
|
Package convert provides APOC type conversion functions.
|
Package convert provides APOC type conversion functions. |
|
Package create provides APOC dynamic creation functions.
|
Package create provides APOC dynamic creation functions. |
|
Package cypher provides APOC Cypher execution utilities.
|
Package cypher provides APOC Cypher execution utilities. |
|
Package date provides APOC date/time functions.
|
Package date provides APOC date/time functions. |
|
Package diff provides APOC diff operations.
|
Package diff provides APOC diff operations. |
|
Package export provides APOC export functions.
|
Package export provides APOC export functions. |
|
Package graph provides APOC graph manipulation functions.
|
Package graph provides APOC graph manipulation functions. |
|
Package hashing provides APOC hashing functions.
|
Package hashing provides APOC hashing functions. |
|
Package import provides APOC import functions.
|
Package import provides APOC import functions. |
|
Package json provides APOC JSON functions.
|
Package json provides APOC JSON functions. |
|
Package label provides functions for working with node labels.
|
Package label provides functions for working with node labels. |
|
Package load provides APOC data loading functions.
|
Package load provides APOC data loading functions. |
|
Package lock provides APOC locking functions.
|
Package lock provides APOC locking functions. |
|
Package log provides APOC logging functions.
|
Package log provides APOC logging functions. |
|
Package map provides APOC map manipulation functions.
|
Package map provides APOC map manipulation functions. |
|
Package math provides APOC mathematical functions.
|
Package math provides APOC mathematical functions. |
|
Package merge provides APOC merge operations.
|
Package merge provides APOC merge operations. |
|
Package meta provides APOC metadata functions.
|
Package meta provides APOC metadata functions. |
|
Package neighbors provides APOC neighbor traversal functions.
|
Package neighbors provides APOC neighbor traversal functions. |
|
Package node provides APOC node operations.
|
Package node provides APOC node operations. |
|
Package nodes provides APOC batch node operations.
|
Package nodes provides APOC batch node operations. |
|
Package number provides APOC number formatting and parsing functions.
|
Package number provides APOC number formatting and parsing functions. |
|
Package path provides APOC path finding functions.
|
Package path provides APOC path finding functions. |
|
Package paths provides APOC advanced path operations.
|
Package paths provides APOC advanced path operations. |
|
Package periodic provides APOC periodic execution functions.
|
Package periodic provides APOC periodic execution functions. |
|
Package plugin provides a plugin system for loading APOC function packages.
|
Package plugin provides a plugin system for loading APOC function packages. |
|
Package refactor provides APOC graph refactoring functions.
|
Package refactor provides APOC graph refactoring functions. |
|
Package registry provides a plugin system for APOC functions.
|
Package registry provides a plugin system for APOC functions. |
|
Package rel provides APOC relationship operations.
|
Package rel provides APOC relationship operations. |
|
Package schema provides APOC schema management functions.
|
Package schema provides APOC schema management functions. |
|
Package scoring provides APOC scoring and ranking functions.
|
Package scoring provides APOC scoring and ranking functions. |
|
Package search provides APOC search functions.
|
Package search provides APOC search functions. |
|
Package spatial provides APOC spatial/geographic functions.
|
Package spatial provides APOC spatial/geographic functions. |
|
Package stats provides APOC statistics functions.
|
Package stats provides APOC statistics functions. |
|
Package storage provides the storage interface for APOC functions.
|
Package storage provides the storage interface for APOC functions. |
|
Package temporal provides APOC temporal/datetime functions.
|
Package temporal provides APOC temporal/datetime functions. |
|
Package text provides APOC text processing functions.
|
Package text provides APOC text processing functions. |
|
Package trigger provides APOC trigger functions.
|
Package trigger provides APOC trigger functions. |
|
Package util provides APOC utility functions.
|
Package util provides APOC utility functions. |
|
Package warmup provides APOC database warmup functions.
|
Package warmup provides APOC database warmup functions. |
|
Package xml provides APOC XML processing functions.
|
Package xml provides APOC XML processing functions. |