mirror of
https://github.com/ent/ent.git
synced 2026-05-22 09:31:45 +03:00
* entc/gen: struct fields and methods for NamedEdge api * entc/gen: generate WithNamedEdge methods for named-edges * entc/gen: implement eager-loading for named-edges * entc/gen: simplify eager-loading template * entc/gen: drop support for unqiue edges in named-based loading * all: codegen * doc/website: named-edges feature-flag * Update doc/md/eager-load.mdx * Update doc/md/eager-load.mdx
Recursive Traversal Using CTE
In this example, we create a file system with a tree structure, and want to query all "undeleted" files. A file is considered as "deleted", if it's marked as "deleted" (a bool field), or any of its parents is marked as "deleted".
Given the following tree structure:
a/
├─ b/
│ ├─ ba
│ ├─ bb
│ └─ bc (deleted)
├─ c/ (deleted)
│ ├─ ca
│ └─ cb
└─ d (deleted)
Query "undeleted" files should return the following structure:
a/
└─ b/
├─ ba
└─ bb
As you can see, in order to check if "cb" (or "ca") is "deleted", we need to "look behind" recursively until we find a "deleted" parent, or reach the root ("a").
Generate Assets
go generate ./...
Run Example
go test