public static IGremlinQuerySerializerBuilder UseCosmosDbWorkarounds(this IGremlinQuerySerializerBuilder builder) { return(builder .OverrideAtomSerializationHandler <SkipStep>((step, assembler, overridden, recurse) => recurse(new RangeStep(step.Count, -1))) .OverrideAtomSerializationHandler <NoneStep>((step, assembler, overridden, recurse) => recurse(NoneWorkaround)) .OverrideAtomSerializationHandler <LimitStep>((step, assembler, overridden, recurse) => { // Workaround for https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/33998623-cosmosdb-s-implementation-of-the-tinkerpop-dsl-has if (step.Count > int.MaxValue) { throw new ArgumentOutOfRangeException(nameof(step), "CosmosDb doesn't currently support values for 'Limit' outside the range of a 32-bit-integer."); } overridden(step); }) .OverrideAtomSerializationHandler <TailStep>((step, assembler, overridden, recurse) => { // Workaround for https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/33998623-cosmosdb-s-implementation-of-the-tinkerpop-dsl-has if (step.Count > int.MaxValue) { throw new ArgumentOutOfRangeException(nameof(step), "CosmosDb doesn't currently support values for 'Tail' outside the range of a 32-bit-integer."); } overridden(step); }) .OverrideAtomSerializationHandler <RangeStep>((step, assembler, overridden, recurse) => { // Workaround for https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/33998623-cosmosdb-s-implementation-of-the-tinkerpop-dsl-has if (step.Lower > int.MaxValue || step.Upper > int.MaxValue) { throw new ArgumentOutOfRangeException(nameof(step), "CosmosDb doesn't currently support values for 'Range' outside the range of a 32-bit-integer."); } overridden(step); }) .OverrideAtomSerializationHandler <long>((l, assembler, overridden, recurse) => { // Workaround for https://feedback.azure.com/forums/263030-azure-cosmos-db/suggestions/33998623-cosmosdb-s-implementation-of-the-tinkerpop-dsl-has recurse((int)l); })); }
public static IGremlinQuerySerializerBuilder UseDefaultGremlinStepSerializationHandlers(this IGremlinQuerySerializerBuilder builder) { return(builder .OverrideAtomSerializationHandler <HasNotStep>((step, assembler, overridden, recurse) => assembler.Method("hasNot", step.Key, recurse)) .OverrideAtomSerializationHandler <ChooseOptionTraversalStep>((step, assembler, overridden, recurse) => assembler.Method("choose", step.Traversal, recurse)) .OverrideAtomSerializationHandler <OptionTraversalStep>((step, assembler, overridden, recurse) => assembler.Method("option", step.Guard, step.OptionTraversal, recurse)) .OverrideAtomSerializationHandler <WithoutStrategiesStep>((step, assembler, overridden, recurse) => { assembler.OpenMethod("withoutStrategies"); foreach (var className in step.ClassNames) { assembler.StartParameter(); assembler.Identifier(className); assembler.EndParameter(); } assembler.CloseMethod(); }) .OverrideAtomSerializationHandler <HasStep>((step, assembler, overridden, recurse) => { if (step.Value is P p1 && p1.EqualsConstant(false)) { recurse(NoneStep.Instance); }
public static IGremlinQuerySerializerBuilder UseGroovy(this IGremlinQuerySerializerBuilder builder) { return(builder .ConfigureAssemblerFactory(_ => SerializedGremlinQueryAssemblerFactory.Groovy)); }