/// <inheritdoc/> public override bool TryHandleLeave( MongoDbProjectionVisitorContext context, ISelection selection, [NotNullWhen(true)] out ISelectionVisitorAction?action) { context.Path.Pop(); action = SelectionVisitor.Continue; return(true); }
/// <inheritdoc/> public override bool TryHandleEnter( MongoDbProjectionVisitorContext context, ISelection selection, [NotNullWhen(true)] out ISelectionVisitorAction?action) { IObjectField field = selection.Field; context.Path.Push(field.GetName()); action = SelectionVisitor.Continue; return(true); }
public static bool TryCreateQuery( this MongoDbProjectionVisitorContext context, [NotNullWhen(true)] out MongoDbProjectionDefinition?query) { query = null; if (context.Projections.Count == 0) { return(false); } query = new MongoDbCombinedProjectionDefinition(context.Projections.ToArray()); return(true); }
/// <inheritdoc/> public override bool TryHandleEnter( MongoDbProjectionVisitorContext context, ISelection selection, out ISelectionVisitorAction?action) { IObjectField field = selection.Field; context.Path.Push(field.GetName()); context.Projections.Push( new MongoDbIncludeProjectionOperation(context.GetPath())); context.Path.Pop(); action = SelectionVisitor.SkipAndLeave; return(true); }
public static string GetPath(this MongoDbProjectionVisitorContext ctx) => string.Join(".", ctx.Path.Reverse());