Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

C++ paged getWithRelationship[s] #971

Closed
Tracked by #966
foundrytom opened this issue Jun 12, 2023 · 0 comments · Fixed by #986
Closed
Tracked by #966

C++ paged getWithRelationship[s] #971

foundrytom opened this issue Jun 12, 2023 · 0 comments · Fixed by #986
Assignees
Labels

Comments

@foundrytom
Copy link
Collaborator

foundrytom commented Jun 12, 2023

What

Add paged version of getWithRelationship[s] using the design featured in #966.

The sketch in OpenAssetIO/OpenAssetIO-MediaCreation#21 illustrates a case where the list of relations may be large (the Proxy relation). An entity versions replacement would also result in paged-scale results.

Why

Both methods are needed to allow for optimisations of input validation.

ACs

  • Public interface exposes concrete pager interface for the specific methods that require it as per Paged getWithRelationship[s] API Design #966:
    • EntityReferencesPager (where the result was vector<EntityReference>).
  • ManagerInterfaces and Pager methods documented including failure modes and performance profile.
  • Method names TBC (get)
  • Python bindings.
  • Abstraction layer between manager implementation/host to allow auditing/etc.. future changes to be managed.
  • Default implementations as-per un-paged versions.

Notes

Use a specific concrete implementation to avoid documentation/visibility issues, as we currently have no other paged methods slated.

Out of scope

Detached Host/Manager copy covering the strategy around paged API methods is covered in #974.

@foundrytom foundrytom added the C++ label Jun 12, 2023
feltech added a commit to feltech/OpenAssetIO that referenced this issue Jun 13, 2023
Part of OpenAssetIO#971.

For consistency with `resolve`, `preflight` and `register`, make
`entityReferences` the first argument.

Since the `resultTraitSet` is now a required (non-defaulted) argument
in `ManagerInterface`, move it alongside the other arguments.

Signed-off-by: David Feltell <david.feltell@foundry.com>
feltech added a commit to feltech/OpenAssetIO that referenced this issue Jun 13, 2023
Part of OpenAssetIO#971.

For consistency with `resolve`, `preflight` and `register`, make
`entityReferences` the first argument.

Since the `resultTraitSet` is now a required (non-defaulted) argument
in `ManagerInterface`, move it alongside the other arguments.

Signed-off-by: David Feltell <david.feltell@foundry.com>
feltech added a commit to feltech/OpenAssetIO that referenced this issue Jun 19, 2023
Part of OpenAssetIO#971.

For consistency with `resolve`, `preflight` and `register`, make
`entityReferences` the first argument.

Since the `resultTraitSet` is now a required (non-defaulted) argument
in `ManagerInterface`, move it alongside the other arguments.

Signed-off-by: David Feltell <david.feltell@foundry.com>
feltech added a commit to feltech/OpenAssetIO that referenced this issue Jun 19, 2023
Part of OpenAssetIO#971.

For consistency with `resolve`, `preflight` and `register`, make
`entityReferences` the first argument.

Since the `resultTraitSet` is now a required (non-defaulted) argument
in `ManagerInterface`, move it alongside the other arguments.

Signed-off-by: David Feltell <david.feltell@foundry.com>
feltech added a commit to feltech/OpenAssetIO that referenced this issue Jun 19, 2023
Part of OpenAssetIO#971.

For consistency with `resolve`, `preflight` and `register`, make
`entityReferences` the first argument.

Since the `resultTraitSet` is now a required (non-defaulted) argument
in `ManagerInterface`, move it alongside the other arguments.

Signed-off-by: David Feltell <david.feltell@foundry.com>
feltech added a commit to feltech/OpenAssetIO that referenced this issue Jun 19, 2023
Part of OpenAssetIO#971.

For consistency with `resolve`, `preflight` and `register`, make
`entityReferences` the first argument.

Since the `resultTraitSet` is now a required (non-defaulted) argument
in `ManagerInterface`, move it alongside the other arguments.

Signed-off-by: David Feltell <david.feltell@foundry.com>
elliotcmorris added a commit to elliotcmorris/OpenAssetIO that referenced this issue Jun 20, 2023
Issue OpenAssetIO#971

Adds paged version of GetWithRelated methods.
This enables workflows that support unbounded amounts of data, most
specifically the versions workflow.

Any relationship may, depending on the specific relationship trait,
produce an unknown, potentially massive, amount of resultant entities.
This PR adds a pager interface that the manager can implement, as well
as signatures to retrieve that pager object, to support paged access
of these sort of unknown or enormous data sources.

Signed-off-by: Elliot Morris <elliot.morris@foundry.com>
elliotcmorris added a commit to elliotcmorris/OpenAssetIO that referenced this issue Jun 23, 2023
Issue OpenAssetIO#971

Adds paged version of GetWithRelated methods.
This enables workflows that support unbounded amounts of data, most
specifically the versions workflow.

Any relationship may, depending on the specific relationship trait,
produce an unknown, potentially massive, amount of resultant entities.
This PR adds a pager interface that the manager can implement, as well
as signatures to retrieve that pager object, to support paged access
of these sort of unknown or enormous data sources.

Signed-off-by: Elliot Morris <elliot.morris@foundry.com>
elliotcmorris added a commit to elliotcmorris/OpenAssetIO that referenced this issue Jul 3, 2023
Issue OpenAssetIO#971

Adds paged version of GetWithRelated methods.
This enables workflows that support unbounded amounts of data, most
specifically the versions workflow.

Any relationship may, depending on the specific relationship trait,
produce an unknown, potentially massive, amount of resultant entities.
This PR adds a pager interface that the manager can implement, as well
as signatures to retrieve that pager object, to support paged access
of these sort of unknown or enormous data sources.

Signed-off-by: Elliot Morris <elliot.morris@foundry.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

2 participants