MCPcopy Index your code
hub / github.com/ent/ent / node

Method node

dialect/sql/sqlgraph/graph.go:1402–1436  ·  view source on GitHub ↗
(ctx context.Context, drv dialect.Driver)

Source from the content-addressed store, hash-verified

1400}
1401
1402func (c *creator) node(ctx context.Context, drv dialect.Driver) error {
1403 var (
1404 edges = EdgeSpecs(c.Edges).GroupRel()
1405 insert = c.builder.Insert(c.Table).Schema(c.Schema).Default()
1406 )
1407 if err := c.setTableColumns(insert, edges); err != nil {
1408 return err
1409 }
1410 tx, err := c.mayTx(ctx, drv, edges)
1411 if err != nil {
1412 return err
1413 }
1414 if err := func() error {
1415 // In case the spec does not contain an ID field, we assume
1416 // we interact with an edge-schema with composite primary key.
1417 if c.ID == nil {
1418 c.ensureConflict(insert)
1419 query, args, err := insert.QueryErr()
1420 if err != nil {
1421 return err
1422 }
1423 return c.tx.Exec(ctx, query, args, nil)
1424 }
1425 if err := c.insert(ctx, insert); err != nil {
1426 return err
1427 }
1428 if err := c.graph.addM2MEdges(ctx, []driver.Value{c.ID.Value}, edges[M2M]); err != nil {
1429 return err
1430 }
1431 return c.graph.addFKEdges(ctx, []driver.Value{c.ID.Value}, append(edges[O2M], edges[O2O]...))
1432 }(); err != nil {
1433 return rollback(tx, err)
1434 }
1435 return tx.Commit()
1436}
1437
1438// mayTx opens a new transaction if the create operation spans across multiple statements.
1439func (c *creator) mayTx(ctx context.Context, drv dialect.Driver, edges map[Rel][]*EdgeSpec) (dialect.Tx, error) {

Callers 1

CreateNodeFunction · 0.95

Calls 15

setTableColumnsMethod · 0.95
mayTxMethod · 0.95
ensureConflictMethod · 0.95
insertMethod · 0.95
EdgeSpecsTypeAlias · 0.85
GroupRelMethod · 0.80
InsertMethod · 0.80
QueryErrMethod · 0.80
addM2MEdgesMethod · 0.80
addFKEdgesMethod · 0.80
rollbackFunction · 0.70
ExecMethod · 0.65

Tested by

no test coverage detected