Class SingleConnectedVertexLoader<TRetrievedItem>

The 1:1 connection loader.

This class aggregates multiple 1:1 connection retrievals into a single Gremlin query which allows optimizing database queries.

It is possible to aggregate multiple 1:1 connection retrievals if the following conditions are met:

  • relationship directions matches (in Gremlin there's no easy way to query both ingoing and outgoing edges at same time while applying different label filters to different directions);
  • destination vertices have same labels (since access rules are applies per destination vertex label).

At the same, multiple originating vertices UUIDs and edge labels could be queried at the same time.

Below is a list of examples of how queries could be merged:

Relationships Could be aggregated
Content --hasApprover-> User, Content --hasOwner-> User Yes
Content --belongsTo-> Organisation, User --reportsTo-> Organisation Yes, edges directions and destinations matches
Content --relatesTo-> User, Content --relatesTo-> Content No; destination labels differs.
Content --relatesTo-> Content, Content <-relatesTo-- Content No; edges directions differs.

Mermaid

Retrieving 1:1 connections

%%{init:{"theme":"dark"}}%% sequenceDiagram participant Resolvers participant SingleConnectedVertexLoader participant Graph database Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 1 SingleConnectedVertexLoader->>Resolvers: Promise Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 2 SingleConnectedVertexLoader->>Resolvers: Promise Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 3 SingleConnectedVertexLoader->>Resolvers: Promise activate SingleConnectedVertexLoader Note left of SingleConnectedVertexLoader: Aggregates requests until next event loop tick SingleConnectedVertexLoader->>Graph database: Retrieve connected vertices 1, 2, 3 Graph database->>SingleConnectedVertexLoader: Response Note left of SingleConnectedVertexLoader: Resolves Promises deactivate SingleConnectedVertexLoader SingleConnectedVertexLoader->>Resolvers: Connected vertex 1 SingleConnectedVertexLoader->>Resolvers: Connected vertex 2 SingleConnectedVertexLoader->>Resolvers: Connected vertex 3
%%{init:{"theme":"default"}}%% sequenceDiagram participant Resolvers participant SingleConnectedVertexLoader participant Graph database Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 1 SingleConnectedVertexLoader->>Resolvers: Promise Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 2 SingleConnectedVertexLoader->>Resolvers: Promise Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 3 SingleConnectedVertexLoader->>Resolvers: Promise activate SingleConnectedVertexLoader Note left of SingleConnectedVertexLoader: Aggregates requests until next event loop tick SingleConnectedVertexLoader->>Graph database: Retrieve connected vertices 1, 2, 3 Graph database->>SingleConnectedVertexLoader: Response Note left of SingleConnectedVertexLoader: Resolves Promises deactivate SingleConnectedVertexLoader SingleConnectedVertexLoader->>Resolvers: Connected vertex 1 SingleConnectedVertexLoader->>Resolvers: Connected vertex 2 SingleConnectedVertexLoader->>Resolvers: Connected vertex 3
sequenceDiagram
    participant Resolvers
    participant SingleConnectedVertexLoader
    participant Graph database
    Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 1
    SingleConnectedVertexLoader->>Resolvers: Promise
    Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 2
    SingleConnectedVertexLoader->>Resolvers: Promise
    Resolvers->>SingleConnectedVertexLoader: Retrieve connected vertex 3
    SingleConnectedVertexLoader->>Resolvers: Promise
    activate SingleConnectedVertexLoader
    Note left of SingleConnectedVertexLoader: Aggregates requests until next event loop tick
    SingleConnectedVertexLoader->>Graph database: Retrieve connected vertices 1, 2, 3
    Graph database->>SingleConnectedVertexLoader: Response
    Note left of SingleConnectedVertexLoader: Resolves Promises
    deactivate SingleConnectedVertexLoader
    SingleConnectedVertexLoader->>Resolvers: Connected vertex 1
    SingleConnectedVertexLoader->>Resolvers: Connected vertex 2
    SingleConnectedVertexLoader->>Resolvers: Connected vertex 3

Type Parameters

Hierarchy

Constructors

Properties

graphConnector: GraphConnector
schemaManager: SchemaManager

Methods

Generated using TypeDoc