DeleteNodes applies the DeleteSpec on the graph.
(ctx context.Context, drv dialect.Driver, spec *DeleteSpec)
| 884 | |
| 885 | // DeleteNodes applies the DeleteSpec on the graph. |
| 886 | func DeleteNodes(ctx context.Context, drv dialect.Driver, spec *DeleteSpec) (int, error) { |
| 887 | var ( |
| 888 | res sql.Result |
| 889 | builder = sql.Dialect(drv.Dialect()) |
| 890 | ) |
| 891 | selector := builder.Select(). |
| 892 | From(builder.Table(spec.Node.Table).Schema(spec.Node.Schema)). |
| 893 | WithContext(ctx) |
| 894 | if pred := spec.Predicate; pred != nil { |
| 895 | pred(selector) |
| 896 | } |
| 897 | query, args := builder.Delete(spec.Node.Table).Schema(spec.Node.Schema).FromSelect(selector).Query() |
| 898 | if err := drv.Exec(ctx, query, args, &res); err != nil { |
| 899 | return 0, err |
| 900 | } |
| 901 | affected, err := res.RowsAffected() |
| 902 | if err != nil { |
| 903 | return 0, err |
| 904 | } |
| 905 | return int(affected), nil |
| 906 | } |
| 907 | |
| 908 | // QuerySpec holds the information for querying |
| 909 | // nodes in the graph. |
searching dependent graphs…