Documentation
¶
Index ¶
- Constants
- Variables
- func PathLoadStrategyEdgeConstraint(startVariable, startLabel, endLabel, endTargetField string, ...) (dsl.Cypher, error)
- func PathLoadStrategyMany(variable, label string, depth int, additionalConstraints dsl.ConditionOperator) (dsl.Cypher, error)
- func PathLoadStrategyOne(variable, label, fieldOn, paramName string, isGraphId bool, depth int, ...) (dsl.Cypher, error)
- func SchemaLoadStrategyMany(gogm *Gogm, variable, label string, depth int, ...) (dsl.Cypher, error)
- func SchemaLoadStrategyOne(gogm *Gogm, variable, label, fieldOn, paramName string, isGraphId bool, ...) (dsl.Cypher, error)
- func SetGlobalGogm(gogm *Gogm)
- type BaseNode
- type BaseUUIDNode
- type Config
- type Edge
- type GenerateNewIDFunc
- type Gogm
- type ISession
- type ITransaction
- type IndexStrategy
- type InvalidDecoratorConfigError
- type InvalidStructConfigError
- type LoadStrategy
- type Logger
- type Pagination
- type PrimaryKeyStrategy
- type RelationConfig
- type RelationType
- type Sessiondeprecated
- func (s *Session) Begin() error
- func (s *Session) Close() error
- func (s *Session) Commit() error
- func (s *Session) Delete(deleteObj interface{}) error
- func (s *Session) DeleteUUID(uuid string) error
- func (s *Session) Load(respObj interface{}, id string) error
- func (s *Session) LoadAll(respObj interface{}) error
- func (s *Session) LoadAllDepth(respObj interface{}, depth int) error
- func (s *Session) LoadAllDepthFilter(respObj interface{}, depth int, filter dsl.ConditionOperator, ...) error
- func (s *Session) LoadAllDepthFilterPagination(respObj interface{}, depth int, filter dsl.ConditionOperator, ...) error
- func (s *Session) LoadAllEdgeConstraint(respObj interface{}, endNodeType, endNodeField string, ...) error
- func (s *Session) LoadDepth(respObj interface{}, id string, depth int) error
- func (s *Session) LoadDepthFilter(respObj interface{}, id string, depth int, filter dsl.ConditionOperator, ...) error
- func (s *Session) LoadDepthFilterPagination(respObj interface{}, id string, depth int, filter dsl.ConditionOperator, ...) error
- func (s *Session) PurgeDatabase() error
- func (s *Session) Query(query string, properties map[string]interface{}, respObj interface{}) error
- func (s *Session) QueryRaw(query string, properties map[string]interface{}) ([][]interface{}, error)
- func (s *Session) Rollback() error
- func (s *Session) RollbackWithError(originalError error) error
- func (s *Session) Save(saveObj interface{}) error
- func (s *Session) SaveDepth(saveObj interface{}, depth int) error
- type SessionConfig
- type SessionV2
- type SessionV2Impl
- func (s *SessionV2Impl) Begin(ctx context.Context) error
- func (s *SessionV2Impl) Close() error
- func (s *SessionV2Impl) Commit(ctx context.Context) error
- func (s *SessionV2Impl) Delete(ctx context.Context, deleteObj interface{}) error
- func (s *SessionV2Impl) DeleteUUID(ctx context.Context, uuid string) error
- func (s *SessionV2Impl) Load(ctx context.Context, respObj, id interface{}) error
- func (s *SessionV2Impl) LoadAll(ctx context.Context, respObj interface{}) error
- func (s *SessionV2Impl) LoadAllDepth(ctx context.Context, respObj interface{}, depth int) error
- func (s *SessionV2Impl) LoadAllDepthFilter(ctx context.Context, respObj interface{}, depth int, ...) error
- func (s *SessionV2Impl) LoadAllDepthFilterPagination(ctx context.Context, respObj interface{}, depth int, ...) error
- func (s *SessionV2Impl) LoadDepth(ctx context.Context, respObj, id interface{}, depth int) error
- func (s *SessionV2Impl) LoadDepthFilter(ctx context.Context, respObj, id interface{}, depth int, ...) error
- func (s *SessionV2Impl) LoadDepthFilterPagination(ctx context.Context, respObj, id interface{}, depth int, ...) error
- func (s *SessionV2Impl) ManagedTransaction(ctx context.Context, work TransactionWork) error
- func (s *SessionV2Impl) Query(ctx context.Context, query string, properties map[string]interface{}, ...) error
- func (s *SessionV2Impl) QueryRaw(ctx context.Context, query string, properties map[string]interface{}) ([][]interface{}, neo4j.ResultSummary, error)
- func (s *SessionV2Impl) Rollback(ctx context.Context) error
- func (s *SessionV2Impl) RollbackWithError(ctx context.Context, originalError error) error
- func (s *SessionV2Impl) Save(ctx context.Context, saveObj interface{}) error
- func (s *SessionV2Impl) SaveDepth(ctx context.Context, saveObj interface{}, depth int) error
- type TransactionV2
- type TransactionWork
Constants ¶
const AccessModeRead = neo4j.AccessModeRead
const AccessModeWrite = neo4j.AccessModeWrite
Variables ¶
var ( // ErrNotFound is returned when gogm is unable to find data ErrNotFound = errors.New("gogm: data not found") // ErrInternal is returned for general internal gogm errors ErrInternal = errors.New("gogm: internal error") // ErrValidation is returned when there is a validation error ErrValidation = errors.New("gogm: struct validation error") // ErrInvalidParams is returned when params to a function are invalid ErrInvalidParams = errors.New("gogm: invalid params") // ErrConfiguration is returned for configuration errors ErrConfiguration = errors.New("gogm: configuration was malformed") // ErrTransaction is returned for errors related to gogm transactions ErrTransaction = errors.New("gogm: transaction error") // ErrConnection is returned for connection related errors ErrConnection = errors.New("gogm: connection error") )
var ( UUIDPrimaryKeyStrategy = &PrimaryKeyStrategy{ StrategyName: "UUID", DBName: "uuid", FieldName: "UUID", Type: reflect.TypeOf(""), GenIDFunc: func() (id interface{}) { return uuid.New().String() }, noop: false, } DefaultPrimaryKeyStrategy = &PrimaryKeyStrategy{ StrategyName: "default", DBName: "id", FieldName: "Id", Type: reflect.TypeOf(int64Ptr(0)), GenIDFunc: func() (id interface{}) { return "" }, noop: true, } )
Functions ¶
func PathLoadStrategyEdgeConstraint ¶
func PathLoadStrategyEdgeConstraint(startVariable, startLabel, endLabel, endTargetField string, minJumps, maxJumps, depth int, additionalConstraints dsl.ConditionOperator) (dsl.Cypher, error)
PathLoadStrategyEdgeConstraint is similar to load many, but requires that it is related to another node via some edge
func PathLoadStrategyMany ¶
func PathLoadStrategyMany(variable, label string, depth int, additionalConstraints dsl.ConditionOperator) (dsl.Cypher, error)
PathLoadStrategyMany loads many using path strategy
func PathLoadStrategyOne ¶
func PathLoadStrategyOne(variable, label, fieldOn, paramName string, isGraphId bool, depth int, additionalConstraints dsl.ConditionOperator) (dsl.Cypher, error)
PathLoadStrategyOne loads one object using path strategy
func SchemaLoadStrategyMany ¶
func SchemaLoadStrategyMany(gogm *Gogm, variable, label string, depth int, additionalConstraints dsl.ConditionOperator) (dsl.Cypher, error)
SchemaLoadStrategyMany loads many using schema strategy
Types ¶
type BaseNode ¶
type BaseNode struct {
// Id is the GraphId that neo4j uses internally
Id *int64 `json:"-" gogm:"pk=default"`
// LoadMap represents the state of how a node was loaded for neo4j.
// This is used to determine if relationships are removed on save
// field -- relations
LoadMap map[string]*RelationConfig `json:"-" gogm:"-"`
}
BaseNode contains fields that ALL GoGM nodes are required to have
type BaseUUIDNode ¶
type Config ¶
type Config struct {
// Host is the neo4j host
Host string `yaml:"host" json:"host" mapstructure:"host"`
// Port is the neo4j port
Port int `yaml:"port" json:"port" mapstructure:"port"`
// deprecated in favor of Protocol
// IsCluster specifies whether GoGM is connecting to a casual cluster or not, will determine whether to use bolt or neo4j protocols
IsCluster bool `yaml:"is_cluster" json:"is_cluster" mapstructure:"is_cluster"`
// Protocol specifies which protocol gogm will connect to neo4j with
// The options are neo4j, neo4j+s, neo4j+ssc, bolt, bolt+s and bolt+ssc
Protocol string `json:"protocol" yaml:"protocol" mapstructure:"protocol"`
// Username is the GoGM username
Username string `yaml:"username" json:"username" mapstructure:"username"`
// Password is the GoGM password
Password string `yaml:"password" json:"password" mapstructure:"password"`
// PoolSize is the size of the connection pool for GoGM
PoolSize int `yaml:"pool_size" json:"pool_size" mapstructure:"pool_size"`
// DefaultTransactionTimeout defines the default time a transaction will wait before timing out
DefaultTransactionTimeout time.Duration `json:"default_transaction_timeout" yaml:"default_transaction_timeout" mapstructure:"default_transaction_timeout"`
// Realm defines the realm passed into neo4j
Realm string `yaml:"realm" json:"realm" mapstructure:"realm"`
// deprecated: in favor of TLSConfig
//these security configurations will be ignored if the protocol does not contain +s
UseSystemCertPool bool `yaml:"use_system_cert_pool" mapstructure:"use_system_cert_pool"`
// deprecated: in favor of TLSConfig
// CAFileLocation defines the location of the CA file for authenticating with tls
CAFileLocation string `yaml:"ca_file_location" mapstructure:"ca_file_location"`
// TLSConfig defines the configuration for connecting to a neo4j cluster over tls
TLSConfig *tls.Config `yaml:"tls_config" mapstructure:"tls_config"`
// Index Strategy defines the index strategy for GoGM
// Options for index strategy are:
// IGNORE_INDEX - which does no index/constraint operations
// VALIDATE_INDEX - which validates whether the indexes/constraints exist
// ASSERT_INDEX - which deletes existing indexes/constraints for the given nodes then creates them
IndexStrategy IndexStrategy `yaml:"index_strategy" json:"index_strategy" mapstructure:"index_strategy"`
// TargetDbs tells gogm which databases to expect and is also what index operations use to know which dbs to execute against
TargetDbs []string `yaml:"target_dbs" json:"target_dbs" mapstructure:"target_dbs"`
// Logger specifies log interfaces that gogm will use to log
Logger Logger `yaml:"-" json:"-" mapstructure:"-"`
// LogLevel defines the log level that the logger will use
// if logger is not nil log level will be ignored
LogLevel string `json:"log_level" yaml:"log_level" mapstructure:"log_level"`
// EnableDriverLogs tells the gogm whether to log logs coming out of the neo4j go driver
EnableDriverLogs bool `json:"enable_driver_logs" yaml:"enable_driver_logs" mapstructure:"enable_driver_logs"`
// EnableLogParams tells gogm whether to log params going into queries when on debug/trace log level
// WARNING THIS IS A SECURITY RISK -- ONLY ENABLE THIS FOR DEBUG
EnableLogParams bool `json:"enable_log_properties" yaml:"enable_log_properties" mapstructure:"enable_log_properties"`
// OpentracingEnabled tells gogm whether to use open tracing
OpentracingEnabled bool `json:"opentracing_enabled" yaml:"opentracing_enabled" mapstructure:"opentracing_enabled"`
// LoadStrategy tells gogm how to generate load queries
// The options are:
// PATH_LOAD_STRATEGY - this generates queries based on path `match p=...`. The queries are less verbose than schema but generally slower
// SCHEMA_LOAD_STRATEGY - this generates queries based on the gogm schema. The queries are a lot more verbose but will generally execute faster
LoadStrategy LoadStrategy `json:"load_strategy" yaml:"load_strategy" mapstructure:"load_strategy"`
}
Config defines parameters for creating a GoGM object
func (*Config) ConnectionString ¶
ConnectionString builds the neo4j connection string
type Edge ¶
type Edge interface {
// GetStartNode gets start node of edge
GetStartNode() interface{}
// GetStartNodeType gets reflect type of start node
GetStartNodeType() reflect.Type
// SetStartNode sets start node of edge
SetStartNode(v interface{}) error
// GetEndNode gets end node of edge
GetEndNode() interface{}
// GetEndNodeType gets reflect type of end node
GetEndNodeType() reflect.Type
// SetEndNode sets end node of edge
SetEndNode(v interface{}) error
}
Edge specifies required functions for special edge nodes
type GenerateNewIDFunc ¶
type GenerateNewIDFunc func() interface{}
type Gogm ¶
type Gogm struct {
// contains filtered or unexported fields
}
Gogm defines an instance of the GoGM OGM with a configuration and mapped types
func New ¶
func New(config *Config, pkStrategy *PrimaryKeyStrategy, mapTypes ...interface{}) (*Gogm, error)
New returns an instance of gogm mapTypes requires pointers of the types to map and will error out if pointers are not provided
func NewContext ¶
func NewContext(ctx context.Context, config *Config, pkStrategy *PrimaryKeyStrategy, mapTypes ...interface{}) (*Gogm, error)
NewContext returns an instance of gogm but also takes in a context since NewContext creates a driver instance and reaches out to the database
func (*Gogm) Copy ¶
Copy creates a copy instance of gogm todo verify if its copying the members or just referencing their pointers if it is each member will need copy functionality
func (*Gogm) NewSession ¶
func (g *Gogm) NewSession(conf SessionConfig) (ISession, error)
deprecated: use NewSessionV2 instead. NewSession returns an instance of the deprecated ISession
func (*Gogm) NewSessionV2 ¶
func (g *Gogm) NewSessionV2(conf SessionConfig) (SessionV2, error)
NewSessionV2 returns an instance of SessionV2 with the provided session config
type ISession ¶
type ISession interface {
//transaction functions
ITransaction
//load single object
Load(respObj interface{}, id string) error
//load object with depth
LoadDepth(respObj interface{}, id string, depth int) error
//load with depth and filter
LoadDepthFilter(respObj interface{}, id string, depth int, filter dsl.ConditionOperator, params map[string]interface{}) error
//load with depth, filter and pagination
LoadDepthFilterPagination(respObj interface{}, id string, depth int, filter dsl.ConditionOperator, params map[string]interface{}, pagination *Pagination) error
//load slice of something
LoadAll(respObj interface{}) error
//load all of depth
LoadAllDepth(respObj interface{}, depth int) error
//load all of type with depth and filter
LoadAllDepthFilter(respObj interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}) error
//load all with depth, filter and pagination
LoadAllDepthFilterPagination(respObj interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}, pagination *Pagination) error
// load all edge query
// Deprecated: No equivalent function in SessionV2
LoadAllEdgeConstraint(respObj interface{}, endNodeType, endNodeField string, edgeConstraint interface{}, minJumps, maxJumps, depth int, filter dsl.ConditionOperator) error
//save object
Save(saveObj interface{}) error
//save object with depth
SaveDepth(saveObj interface{}, depth int) error
//delete
Delete(deleteObj interface{}) error
//delete uuid
DeleteUUID(uuid string) error
//specific query, responds to slice and single objects
Query(query string, properties map[string]interface{}, respObj interface{}) error
//similar to query, but returns raw rows/cols
QueryRaw(query string, properties map[string]interface{}) ([][]interface{}, error)
//delete everything, this will literally delete everything
PurgeDatabase() error
// closes session
Close() error
}
ISession: V1 session object for ogm interactions Deprecated: use SessionV2 instead
type ITransaction ¶
type ITransaction interface {
// Begin begins transaction
Begin() error
// Rollback rolls back transaction
Rollback() error
// RollbackWithError wraps original error into rollback error if there is one
RollbackWithError(err error) error
// Commit commits transaction
Commit() error
}
ITransaction specifies functions for Neo4j ACID transactions Deprecated: Use TransactionV2 instead
type IndexStrategy ¶
type IndexStrategy int
IndexStrategy defines the different index approaches
const ( // ASSERT_INDEX ensures that all indices are set and sets them if they are not there ASSERT_INDEX IndexStrategy = 0 // VALIDATE_INDEX ensures that all indices are set VALIDATE_INDEX IndexStrategy = 1 // IGNORE_INDEX skips the index step of setup IGNORE_INDEX IndexStrategy = 2 )
type InvalidDecoratorConfigError ¶
InvalidDecoratorConfigError defines an error for a malformed struct tag
func NewInvalidDecoratorConfigError ¶
func NewInvalidDecoratorConfigError(issue, field string) *InvalidDecoratorConfigError
NewInvalidDecoratorConfigError creates an InvalidDecoratorConfigError structure
func (*InvalidDecoratorConfigError) Error ¶
func (i *InvalidDecoratorConfigError) Error() string
Error() implements builtin Error() interface
type InvalidStructConfigError ¶
type InvalidStructConfigError struct {
// contains filtered or unexported fields
}
InvalidStructConfigError defines an error for a malformed gogm structure
func NewInvalidStructConfigError ¶
func NewInvalidStructConfigError(issue string) *InvalidStructConfigError
NewInvalidStructConfigError creates an InvalidStructConfigError structure
func (*InvalidStructConfigError) Error ¶
func (i *InvalidStructConfigError) Error() string
Error() implements builtin Error() interface
type LoadStrategy ¶
type LoadStrategy int
Specifies query based load strategy
const ( // PathLoadStrategy uses cypher path PATH_LOAD_STRATEGY LoadStrategy = iota // SchemaLoadStrategy generates queries specifically from generated schema SCHEMA_LOAD_STRATEGY )
type Logger ¶
type Logger interface {
Debug(s string)
Debugf(s string, vals ...interface{})
Info(s string)
Infof(s string, vals ...interface{})
Warn(s string)
Warnf(s string, vals ...interface{})
Error(s string)
Errorf(s string, vals ...interface{})
Fatal(s string)
Fatalf(s string, vals ...interface{})
}
func GetDefaultLogger ¶
func GetDefaultLogger() Logger
type Pagination ¶
type Pagination struct {
// PageNumber specifies which page number to load
PageNumber int
// LimitPerPage limits how many records per page
LimitPerPage int
// OrderByVarName specifies variable to order by
OrderByVarName string
// OrderByField specifies field to order by on
OrderByField string
// OrderByDesc specifies whether orderby is desc or asc
OrderByDesc bool
}
Pagination is used to control the pagination behavior of `LoadAllDepthFilterPagination“
type PrimaryKeyStrategy ¶
type PrimaryKeyStrategy struct {
// StrategyName is the name of strategy to map field
StrategyName string
// DBName for field in the database
DBName string
FieldName string
// Type of uuid
Type reflect.Type
// GenIDFunc function to generate new id
GenIDFunc GenerateNewIDFunc
// contains filtered or unexported fields
}
type RelationConfig ¶
type RelationConfig struct {
// stores graph ids
Ids []int64 `json:"-" gomg:"-"`
// specifies relationship type
RelationType RelationType `json:"-" gomg:"-"`
}
RelationConfig specifies how relationships are loaded
type RelationType ¶
type RelationType int
Specifies Type of testRelationship
const ( // Side of relationship can only point to 0 or 1 other nodes Single RelationType = 0 // Side of relationship can point to 0+ other nodes Multi RelationType = 1 )
type Session
deprecated
type Session struct {
DefaultDepth int
// contains filtered or unexported fields
}
Deprecated: Session will be removed in a later release in favor of SessionV2
func NewSession ¶
uses global gogm Deprecated: Gogm.NewSession instead
func NewSessionWithConfig
deprecated
func NewSessionWithConfig(conf SessionConfig) (*Session, error)
Deprecated: Gogm.NewSessionWithConfig instead
func (*Session) DeleteUUID ¶
func (*Session) LoadAllDepth ¶
func (*Session) LoadAllDepthFilter ¶
func (*Session) LoadAllDepthFilterPagination ¶
func (s *Session) LoadAllDepthFilterPagination(respObj interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}, pagination *Pagination) error
func (*Session) LoadAllEdgeConstraint ¶
func (*Session) LoadDepthFilter ¶
func (*Session) LoadDepthFilterPagination ¶
func (s *Session) LoadDepthFilterPagination(respObj interface{}, id string, depth int, filter dsl.ConditionOperator, params map[string]interface{}, pagination *Pagination) error
func (*Session) PurgeDatabase ¶
func (*Session) RollbackWithError ¶
type SessionConfig ¶
type SessionConfig neo4j.SessionConfig
type SessionV2 ¶
type SessionV2 interface {
//transaction functions
TransactionV2
// Begin begins transaction
Begin(ctx context.Context) error
// ManagedTransaction runs tx work managed for retry
ManagedTransaction(ctx context.Context, work TransactionWork) error
// closes session
Close() error
}
session version 2 is experimental to start trying breaking changes
type SessionV2Impl ¶
type SessionV2Impl struct {
DefaultDepth int
// contains filtered or unexported fields
}
func (*SessionV2Impl) Close ¶
func (s *SessionV2Impl) Close() error
func (*SessionV2Impl) Delete ¶
func (s *SessionV2Impl) Delete(ctx context.Context, deleteObj interface{}) error
func (*SessionV2Impl) DeleteUUID ¶
func (s *SessionV2Impl) DeleteUUID(ctx context.Context, uuid string) error
func (*SessionV2Impl) Load ¶
func (s *SessionV2Impl) Load(ctx context.Context, respObj, id interface{}) error
func (*SessionV2Impl) LoadAll ¶
func (s *SessionV2Impl) LoadAll(ctx context.Context, respObj interface{}) error
func (*SessionV2Impl) LoadAllDepth ¶
func (s *SessionV2Impl) LoadAllDepth(ctx context.Context, respObj interface{}, depth int) error
func (*SessionV2Impl) LoadAllDepthFilter ¶
func (s *SessionV2Impl) LoadAllDepthFilter(ctx context.Context, respObj interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}) error
func (*SessionV2Impl) LoadAllDepthFilterPagination ¶
func (s *SessionV2Impl) LoadAllDepthFilterPagination(ctx context.Context, respObj interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}, pagination *Pagination) error
func (*SessionV2Impl) LoadDepth ¶
func (s *SessionV2Impl) LoadDepth(ctx context.Context, respObj, id interface{}, depth int) error
func (*SessionV2Impl) LoadDepthFilter ¶
func (s *SessionV2Impl) LoadDepthFilter(ctx context.Context, respObj, id interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}) error
func (*SessionV2Impl) LoadDepthFilterPagination ¶
func (s *SessionV2Impl) LoadDepthFilterPagination(ctx context.Context, respObj, id interface{}, depth int, filter dsl.ConditionOperator, params map[string]interface{}, pagination *Pagination) error
func (*SessionV2Impl) ManagedTransaction ¶
func (s *SessionV2Impl) ManagedTransaction(ctx context.Context, work TransactionWork) error
func (*SessionV2Impl) QueryRaw ¶
func (s *SessionV2Impl) QueryRaw(ctx context.Context, query string, properties map[string]interface{}) ([][]interface{}, neo4j.ResultSummary, error)
func (*SessionV2Impl) RollbackWithError ¶
func (s *SessionV2Impl) RollbackWithError(ctx context.Context, originalError error) error
type TransactionV2 ¶
type TransactionV2 interface {
// Rollback rolls back transaction
Rollback(ctx context.Context) error
// RollbackWithError wraps original error into rollback error if there is one
RollbackWithError(ctx context.Context, err error) error
// Commit commits transaction
Commit(ctx context.Context) error
// contains filtered or unexported methods
}
TransactionV2 specifies functions for Neo4j ACID transactions
type TransactionWork ¶
type TransactionWork func(tx TransactionV2) error
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
gogmcli
command
|
|
|
gogmcli/gen
gen provides code to generate link and unlink functions for gogm structs
|
gen provides code to generate link and unlink functions for gogm structs |
|
movies
command
|
|
|
Code generated by GoGM 2.1.1.
|
Code generated by GoGM 2.1.1. |