Documentation ¶
Overview ¶
Package sqlgraph provides graph abstraction capabilities on top of sql-based databases for ent codegen.
Index ¶
- Constants
- func BatchCreate(ctx context.Context, drv dialect.Driver, spec *BatchCreateSpec) error
- func CountNodes(ctx context.Context, drv dialect.Driver, spec *QuerySpec) (int, error)
- func CreateNode(ctx context.Context, drv dialect.Driver, spec *CreateSpec) error
- func DeleteNodes(ctx context.Context, drv dialect.Driver, spec *DeleteSpec) (int, error)
- func HasNeighbors(q *sql.Selector, s *Step)
- func HasNeighborsWith(q *sql.Selector, s *Step, pred func(*sql.Selector))
- func IsConstraintError(err error) bool
- func IsForeignKeyConstraintError(err error) bool
- func IsUniqueConstraintError(err error) bool
- func Neighbors(dialect string, s *Step) (q *sql.Selector)
- func QueryEdges(ctx context.Context, drv dialect.Driver, spec *EdgeQuerySpec) error
- func QueryNodes(ctx context.Context, drv dialect.Driver, spec *QuerySpec) error
- func SetNeighbors(dialect string, s *Step) (q *sql.Selector)
- func UpdateNode(ctx context.Context, drv dialect.Driver, spec *UpdateSpec) error
- func UpdateNodes(ctx context.Context, drv dialect.Driver, spec *UpdateSpec) (int, error)
- func WrapFunc(s func(*sql.Selector)) *entql.CallExpr
- type BatchCreateSpec
- type ConstraintError
- type CreateSpec
- type DeleteSpec
- type EdgeMut
- type EdgeQuerySpec
- type EdgeSpec
- type EdgeSpecs
- type EdgeTarget
- type FieldMut
- type FieldSpec
- type Node
- type NodeSpec
- type NotFoundError
- type QuerySpec
- type Rel
- type Schema
- type Step
- type StepOption
- type UpdateSpec
Constants ¶
const FuncSelector entql.Func = "func_selector"
FuncSelector represents a selector function to be used as an entql foreign-function.
Variables ¶
This section is empty.
Functions ¶
func BatchCreate ¶
BatchCreate applies the BatchCreateSpec on the graph.
func CountNodes ¶
CountNodes counts the nodes in the given graph query.
func CreateNode ¶
CreateNode applies the CreateSpec on the graph. The operation creates a new record in the database, and connects it to other nodes specified in spec.Edges.
func DeleteNodes ¶
DeleteNodes applies the DeleteSpec on the graph.
func HasNeighbors ¶
HasNeighbors applies on the given Selector a neighbors check.
func HasNeighborsWith ¶
HasNeighborsWith applies on the given Selector a neighbors check. The given predicate applies its filtering on the selector.
func IsConstraintError ¶ added in v0.7.0
IsConstraintError returns true if the error resulted from a database constraint violation.
func IsForeignKeyConstraintError ¶ added in v0.7.0
IsForeignKeyConstraintError reports if the error resulted from a database foreign-key constraint violation. e.g. parent row does not exist.
func IsUniqueConstraintError ¶ added in v0.7.0
IsUniqueConstraintError reports if the error resulted from a DB uniqueness constraint violation. e.g. duplicate value in unique index.
func Neighbors ¶
Neighbors returns a Selector for evaluating the path-step and getting the neighbors of one vertex.
func QueryEdges ¶
QueryEdges queries the edges in the graph and scans the result with the given dest function.
func QueryNodes ¶
QueryNodes queries the nodes in the graph query and scans them to the given values.
func SetNeighbors ¶
SetNeighbors returns a Selector for evaluating the path-step and getting the neighbors of set of vertices.
func UpdateNode ¶
UpdateNode applies the UpdateSpec on one node in the graph.
func UpdateNodes ¶
UpdateNodes applies the UpdateSpec on a set of nodes in the graph.
Types ¶
type BatchCreateSpec ¶
type BatchCreateSpec struct { Nodes []*CreateSpec // The OnConflict option allows providing on-conflict // options to the INSERT statement. // // sqlgraph.CreateSpec{ // OnConflict: []sql.ConflictOption{ // sql.ResolveWithNewValues(), // }, // } // OnConflict []sql.ConflictOption }
BatchCreateSpec holds the information for creating multiple nodes in the graph.
type ConstraintError ¶
type ConstraintError struct {
// contains filtered or unexported fields
}
A ConstraintError represents an error from mutation that violates a specific constraint.
func (ConstraintError) Error ¶
func (e ConstraintError) Error() string
type CreateSpec ¶
type CreateSpec struct { Table string Schema string ID *FieldSpec Fields []*FieldSpec Edges []*EdgeSpec // The OnConflict option allows providing on-conflict // options to the INSERT statement. // // sqlgraph.CreateSpec{ // OnConflict: []sql.ConflictOption{ // sql.ResolveWithNewValues(), // }, // } // OnConflict []sql.ConflictOption }
CreateSpec holds the information for creating a node in the graph.
type DeleteSpec ¶
DeleteSpec holds the information for delete one or more nodes in the graph.
type EdgeQuerySpec ¶
type EdgeQuerySpec struct { Edge *EdgeSpec Predicate func(*sql.Selector) ScanValues func() [2]interface{} Assign func(out, in interface{}) error }
EdgeQuerySpec holds the information for querying edges in the graph.
type EdgeSpec ¶
type EdgeSpec struct { Rel Rel Inverse bool Table string Schema string Columns []string Bidi bool // bidirectional edge. Target *EdgeTarget // target nodes. }
EdgeSpec holds the information for updating a field column in the database.
type EdgeSpecs ¶
type EdgeSpecs []*EdgeSpec
EdgeSpecs used for perform common operations on list of edges.
func (EdgeSpecs) GroupTable ¶
GroupTable groups edges by their table name.
type EdgeTarget ¶
type EdgeTarget struct { Nodes []driver.Value IDSpec *FieldSpec // Additional fields can be set on the // edge join table. Valid for M2M edges. Fields []*FieldSpec }
EdgeTarget holds the information for the target nodes of an edge.
type FieldMut ¶
type FieldMut struct { Set []*FieldSpec // field = ? Add []*FieldSpec // field = field + ? Clear []*FieldSpec // field = NULL }
FieldMut defines field mutations.
type Node ¶
type Node struct { NodeSpec // Type holds the node type (schema name). Type string // Fields maps from field names to their spec. Fields map[string]*FieldSpec // Edges maps from edge names to their spec. Edges map[string]struct { To *Node Spec *EdgeSpec } }
A Node in the graph holds the SQL information for an ent/schema.
type NodeSpec ¶
type NodeSpec struct { Table string Schema string Columns []string ID *FieldSpec // primary key. CompositeID []*FieldSpec // composite id (edge schema). }
NodeSpec defines the information for querying and decoding nodes in the graph.
type NotFoundError ¶
type NotFoundError struct {
// contains filtered or unexported fields
}
NotFoundError returns when trying to update an entity, and it was not found in the database.
func (*NotFoundError) Error ¶
func (e *NotFoundError) Error() string
type QuerySpec ¶
type QuerySpec struct { Node *NodeSpec // Nodes info. From *sql.Selector // Optional query source (from path). Limit int Offset int Unique bool Order func(*sql.Selector) Predicate func(*sql.Selector) Modifiers []func(*sql.Selector) ScanValues func(columns []string) ([]interface{}, error) Assign func(columns []string, values []interface{}) error }
QuerySpec holds the information for querying nodes in the graph.
type Rel ¶
type Rel int
Rel is an edge relation type.
const ( O2O Rel // One to one / has one. O2M // One to many / has many. M2O // Many to one (inverse perspective for O2M). M2M // Many to many. )
Relation types.
type Schema ¶
type Schema struct {
Nodes []*Node
}
A Schema holds a representation of ent/schema at runtime. Each Node represents a single schema-type and its relations in the graph (storage).
It is used for translating common graph traversal operations to the underlying SQL storage. For example, an operation like `has_edge(E)`, will be translated to an SQL lookup based on the relation type and the FK configuration.
func (*Schema) AddE ¶
AddE adds an edge to the graph. It fails, if one of the node types is missing.
g.AddE("pets", spec, "user", "pet") g.AddE("friends", spec, "user", "user")
type Step ¶
type Step struct { // From is the source of the step. From struct { // V can be either one vertex or set of vertices. // It can be a pre-processed step (sql.Query) or a simple Go type (integer or string). V interface{} // Table holds the table name of V (from). Table string // Column to join with. Usually the "id" column. Column string } // Edge holds the edge information for getting the neighbors. Edge struct { // Rel of the edge. Rel Rel // Schema is an optional name of the database // where the table is defined. Schema string // Table name of where this edge columns reside. Table string // Columns of the edge. // In O2O and M2O, it holds the foreign-key column. Hence, len == 1. // In M2M, it holds the primary-key columns of the join table. Hence, len == 2. Columns []string // Inverse indicates if the edge is an inverse edge. Inverse bool } // To is the dest of the path (the neighbors). To struct { // Table holds the table name of the neighbors (to). Table string // Schema is an optional name of the database // where the table is defined. Schema string // Column to join with. Usually the "id" column. Column string } }
A Step provides a path-step information to the traversal functions.
func NewStep ¶
func NewStep(opts ...StepOption) *Step
NewStep gets list of options and returns a configured step.
NewStep( From("table", "pk", V), To("table", "pk"), Edge("name", O2M, "fk"), )
type StepOption ¶
type StepOption func(*Step)
StepOption allows configuring Steps using functional options.
func Edge ¶
func Edge(rel Rel, inverse bool, table string, columns ...string) StepOption
Edge sets the edge info for getting the neighbors.
func From ¶
func From(table, column string, v ...interface{}) StepOption
From sets the source of the step.
type UpdateSpec ¶
type UpdateSpec struct { Node *NodeSpec Edges EdgeMut Fields FieldMut Predicate func(*sql.Selector) ScanValues func(columns []string) ([]interface{}, error) Assign func(columns []string, values []interface{}) error }
UpdateSpec holds the information for updating one or more nodes in the graph.