61 lines
1.5 KiB
Go
61 lines
1.5 KiB
Go
|
package neo4j
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
"time"
|
||
|
|
||
|
n4Cfg "github.com/neo4j/neo4j-go-driver/v5/neo4j/config"
|
||
|
"github.com/neo4j/neo4j-go-driver/v5/neo4j/log"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
defaultMaxConnectionLifetime = 5 * time.Minute
|
||
|
defaultMaxConnectionPoolSize = 25
|
||
|
defaultConnectionTimeout = 5 * time.Second
|
||
|
)
|
||
|
|
||
|
// Option configures Neo4jInit behaviour.
|
||
|
type Option func(*Client)
|
||
|
|
||
|
type Client struct {
|
||
|
neo4jConf *n4Cfg.Config
|
||
|
serviceConf Config
|
||
|
}
|
||
|
|
||
|
// WithLogLevel sets the log level for the Neo4j driver.
|
||
|
func WithLogLevel(level string) Option {
|
||
|
return func(neo4ji *Client) {
|
||
|
var logger log.Logger
|
||
|
|
||
|
switch strings.ToLower(level) {
|
||
|
case "panic", "fatal", "error":
|
||
|
logger = log.ToConsole(log.ERROR)
|
||
|
case "warn", "warning":
|
||
|
logger = log.ToConsole(log.WARNING)
|
||
|
case "info", "debug", "trace":
|
||
|
logger = log.ToConsole(log.INFO)
|
||
|
default:
|
||
|
logger = log.ToConsole(log.ERROR)
|
||
|
}
|
||
|
|
||
|
neo4ji.neo4jConf.Log = logger
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// WithPerformance configures the Neo4j driver for performance by setting connection pool size and lifetime.
|
||
|
func WithPerformance() Option {
|
||
|
return func(neo4ji *Client) {
|
||
|
if neo4ji.serviceConf.MaxConnectionPoolSize > 0 {
|
||
|
neo4ji.neo4jConf.MaxConnectionPoolSize = neo4ji.serviceConf.MaxConnectionPoolSize
|
||
|
} else {
|
||
|
neo4ji.neo4jConf.MaxConnectionPoolSize = defaultMaxConnectionPoolSize
|
||
|
}
|
||
|
|
||
|
if neo4ji.serviceConf.MaxConnectionLifetime > 0 {
|
||
|
neo4ji.neo4jConf.MaxConnectionLifetime = neo4ji.serviceConf.MaxConnectionLifetime
|
||
|
} else {
|
||
|
neo4ji.neo4jConf.MaxConnectionLifetime = defaultMaxConnectionLifetime
|
||
|
}
|
||
|
}
|
||
|
}
|