Skip to content

Conversation

@oflatt
Copy link
Contributor

@oflatt oflatt commented Sep 16, 2024

Description of changes

This PR adds a new way to load entities based on their ids. This makes entity slicing easier to implement, since the trait implementor does not need to worry about entity dereferences. To make this PR work, type annotations had to be added to the entity manifest.

The API is flexible: users can choose to use the [AccessTrie] in entity requests to only load some fields of entities. It's also batched, so that as many entities as possible are loaded at the same time (in a breadth-first traversal of the entity manifest).

Loading of ancestors is separated from loading of entities so that particular ancestors can be named.

This PR doesn't make this API public yet, but it could be made public with some wrapper structs.

PR stack:
#1102
#1105
#1154
#1156
#1171
#1196
#1208 (This PR)

DRT testing PR: cedar-policy/cedar-spec#429

Issue #, if available

Checklist for requesting a review

The change in this PR is (choose one, and delete the other options):

  • A breaking change requiring a major version bump to cedar-policy (e.g., changes to the signature of an existing API).
  • A backwards-compatible change requiring a minor version bump to cedar-policy (e.g., addition of a new API).
  • A bug fix or other functionality change requiring a patch to cedar-policy.
  • A change "invisible" to users (e.g., documentation, changes to "internal" crates like cedar-policy-core, cedar-validator, etc.)
  • A change (breaking or otherwise) that only impacts unreleased or experimental code.

I confirm that this PR (choose one, and delete the other options):

  • Updates the "Unreleased" section of the CHANGELOG with a description of my change (required for major/minor version bumps).
  • Does not update the CHANGELOG because my change does not significantly impact released code.

I confirm that cedar-spec (choose one, and delete the other options):

  • Does not require updates because my change does not impact the Cedar formal model or DRT infrastructure.
  • Requires updates, and I have made / will make these updates myself. (Please include in your description a timeline or link to the relevant PR in cedar-spec, and how you have tested that your updates are correct.)
  • Requires updates, but I do not plan to make them in the near future. (Make sure that your changes are hidden behind a feature flag to mark them as experimental.)
  • I'm not sure how my change impacts cedar-spec. (Post your PR anyways, and we'll discuss in the comments.)

@oflatt oflatt changed the title [EntityLoader] trait for entity slicing Entity Slicing: EntityLoader trait Sep 16, 2024
}

/// Add a set of ancestors to this `Entity`.
/// TODO why is `add_ancestor` pub(crate) instead of pub, and should this be too?
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Question here on if this can be public

@oflatt oflatt changed the base branch from oflatt/entity-manifest-ancestors to oflatt/entity-manifest-type-annotated September 16, 2024 19:45
@shaobo-he-aws
Copy link
Contributor

Closed in favor of a single PR.

@shaobo-he-aws shaobo-he-aws deleted the oflatt/entity-slicing-loader branch October 4, 2025 03:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants