Skip to content

Commit

Permalink
Override -> Add.
Browse files Browse the repository at this point in the history
  • Loading branch information
danielcweber committed Mar 2, 2023
1 parent 8ccd1e7 commit 1e16532
Show file tree
Hide file tree
Showing 13 changed files with 147 additions and 161 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public static IGremlinQueryEnvironment StoreByteArraysAsBase64String(this IGreml
.ConfigureNativeTypes(static types => types
.Remove(typeof(byte[]))))
.ConfigureSerializer(static _ => _
.Override<byte[]>(static (bytes, env, recurse) => recurse.Serialize(Convert.ToBase64String(bytes), env)));
.Add<byte[]>(static (bytes, env, recurse) => recurse.Serialize(Convert.ToBase64String(bytes), env)));
}

public static IGremlinQueryEnvironment RegisterNativeType<TNative>(this IGremlinQueryEnvironment environment, Func<TNative, IGremlinQueryEnvironment, ITransformer, object> serializerDelegate, Func<ITransformer, ITransformer> deserializerTransformation)
Expand Down
11 changes: 2 additions & 9 deletions src/ExRam.Gremlinq.Core/Extensions/TransformerClassExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,9 @@ public FixedTypeConverterFactory(Func<TStaticSource, IGremlinQueryEnvironment, I
}

public static TryTransformToBuilder<TTarget> TryTransformTo<TTarget>(this ITransformer transformer)
where TTarget : class
{
return new TryTransformToBuilder<TTarget>(transformer);
}
where TTarget : class => new(transformer);

public static ITransformer Override<TSource, TTarget>(this ITransformer transformer, Func<TSource, IGremlinQueryEnvironment, ITransformer, TTarget?> func)
where TTarget : class
{
return transformer
.Add(new FixedTypeConverterFactory<TSource, TTarget>(func));
}
where TTarget : class => transformer.Add(new FixedTypeConverterFactory<TSource, TTarget>(func));
}
}
13 changes: 3 additions & 10 deletions src/ExRam.Gremlinq.Core/Extensions/TransformerStructExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -63,16 +63,9 @@ public FixedTypeConverterFactory(Func<TStaticSource, IGremlinQueryEnvironment, I
}

public static TryTransformToBuilder<TTarget> TryTransformTo<TTarget>(this ITransformer transformer)
where TTarget : struct
{
return new TryTransformToBuilder<TTarget>(transformer);
}
where TTarget : struct => new(transformer);

public static ITransformer Override<TSource, TTarget>(this ITransformer transformer, Func<TSource, IGremlinQueryEnvironment, ITransformer, TTarget?> func)
where TTarget : struct
{
return transformer
.Add(new FixedTypeConverterFactory<TSource, TTarget>(func));
}
public static ITransformer Add<TSource, TTarget>(this ITransformer transformer, Func<TSource, IGremlinQueryEnvironment, ITransformer, TTarget?> func)
where TTarget : struct => transformer.Add(new FixedTypeConverterFactory<TSource, TTarget>(func));
}
}
230 changes: 115 additions & 115 deletions src/ExRam.Gremlinq.Core/Serialization/Serializer.cs

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -89,37 +89,37 @@ public static IGremlinQuerySource UseCosmosDb(this IConfigurableGremlinQuerySour
.SetValue(GremlinqOption.EdgeProjectionSteps, Traversal.Empty)
.SetValue(GremlinqOption.VertexPropertyProjectionSteps, Traversal.Empty))
.ConfigureSerializer(serializer => serializer
.Override<byte[]>((bytes, env, recurse) => recurse.Serialize(Convert.ToBase64String(bytes), env))
.Override<CosmosDbKey>((key, env, recurse) => recurse.Serialize(
.Add<byte[]>((bytes, env, recurse) => recurse.Serialize(Convert.ToBase64String(bytes), env))
.Add<CosmosDbKey>((key, env, recurse) => recurse.Serialize(
key.PartitionKey != null
? new[] { key.PartitionKey, key.Id }
: (object)key.Id,
env))
.Override<FilterStep.ByTraversalStep>(static (step, env, recurse) => recurse.Serialize(
.Add<FilterStep.ByTraversalStep>(static (step, env, recurse) => recurse.Serialize(
new WhereTraversalStep(
step.Traversal.Count > 0 && step.Traversal[0] is AsStep
? new MapStep(step.Traversal)
: step.Traversal),
env))
.Override<HasKeyStep>((step, env, recurse) => step.Argument is P p && (!p.OperatorName.Equals("eq", StringComparison.OrdinalIgnoreCase))
.Add<HasKeyStep>((step, env, recurse) => step.Argument is P p && (!p.OperatorName.Equals("eq", StringComparison.OrdinalIgnoreCase))
? recurse.Serialize(
new WhereTraversalStep(Traversal.Empty.Push(
KeyStep.Instance,
new IsStep(p))),
env)
: default)
.Override<NoneStep>((step, env, recurse) => recurse.Serialize(NoneWorkaround, env))
.Override<SkipStep>((step, env, recurse) => recurse.Serialize(new RangeStep(step.Count, -1, step.Scope), env))
.Override<LimitStep>((step, env, recurse) => step.Count > int.MaxValue
.Add<NoneStep>((step, env, recurse) => recurse.Serialize(NoneWorkaround, env))
.Add<SkipStep>((step, env, recurse) => recurse.Serialize(new RangeStep(step.Count, -1, step.Scope), env))
.Add<LimitStep>((step, env, recurse) => 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.")
: default)
.Override<TailStep>((step, env, recurse) => step.Count > int.MaxValue
.Add<TailStep>((step, env, recurse) => 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.")
: default)
.Override<RangeStep>((step, env, recurse) => step.Lower > int.MaxValue || step.Upper > int.MaxValue
.Add<RangeStep>((step, env, recurse) => 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.")
: default)
.Override<Order>((order, env, recurse) => order.Equals(Order.Asc)
.Add<Order>((order, env, recurse) => order.Equals(Order.Asc)
? recurse.Serialize(WorkaroundOrder.Incr, env)
: order.Equals(Order.Desc)
? recurse.Serialize(WorkaroundOrder.Decr, env)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public static IGremlinQuerySource UseNeptune(this IConfigurableGremlinQuerySourc
.UseWebSocket(configurator => transformation(new NeptuneConfigurator(configurator)))
.ConfigureEnvironment(environment => environment
.ConfigureSerializer(serializer => serializer
.Override<PropertyStep.ByKeyStep>((step, env, recurse) => Cardinality.List.Equals(step.Cardinality)
.Add<PropertyStep.ByKeyStep>((step, env, recurse) => Cardinality.List.Equals(step.Cardinality)
? recurse.Serialize(new PropertyStep.ByKeyStep(step.Key, step.Value, step.MetaProperties, Cardinality.Set), env)
: default))
.StoreTimeSpansAsNumbers()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ public static IGremlinQueryEnvironment StoreTimeSpansAsNumbers(this IGremlinQuer
{
return environment
.ConfigureSerializer(static serializer => serializer
.Override<TimeSpan>(static (t, env, recurse) => recurse.Serialize(t.TotalMilliseconds, env)))
.Add<TimeSpan>(static (t, env, recurse) => recurse.Serialize(t.TotalMilliseconds, env)))
.ConfigureDeserializer(static deserializer => deserializer
.Add(new TimeSpanAsNumberConverterFactory()));
}
Expand Down
4 changes: 2 additions & 2 deletions test/ExRam.Gremlinq.Core.Tests/DeserializerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,15 @@ public async Task Override2()
public async Task Recurse()
{
await Verify(Transformer.Identity
.Override<string, int>((serialized, env, recurse) => recurse.TryTransformTo<int>().From(36, env))
.Add<string, int>((serialized, env, recurse) => recurse.TryTransformTo<int>().From(36, env))
.TryTransformTo<int>().From("serialized", GremlinQueryEnvironment.Empty));
}

[Fact]
public void Recurse_wrong_type()
{
Transformer.Identity
.Override<string, int>((serialized, env, recurse) => recurse.TryTransformTo<int>().From(36, env))
.Add<string, int>((serialized, env, recurse) => recurse.TryTransformTo<int>().From(36, env))
.TryTransform<int, string>(36, GremlinQueryEnvironment.Empty, out var _)
.Should()
.BeFalse();
Expand Down
8 changes: 4 additions & 4 deletions test/ExRam.Gremlinq.Core.Tests/ExecutionPipelinesTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ await g
.IncludeAssembliesOfBaseTypes()))
.EchoGroovyGremlinQuery()
.ConfigureSerializer(_ => _
.Override<FancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.Add<FancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.V<Person>(new FancyId { Id = "someId" })
.Cast<string>()
.Verify();
Expand All @@ -90,7 +90,7 @@ await g
.IncludeAssembliesOfBaseTypes()))
.EchoGroovyGremlinQuery()
.ConfigureSerializer(_ => _
.Override<FancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.Add<FancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.V<Person>(new EvenMoreFancyId { Id = "someId" })
.Cast<string>()
.Verify();
Expand All @@ -106,7 +106,7 @@ await g
.IncludeAssembliesOfBaseTypes()))
.EchoGroovyGremlinQuery()
.ConfigureSerializer(_ => _
.Override<IFancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.Add<IFancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.V<Person>(new FancyId { Id = "someId" })
.Cast<string>()
.Verify();
Expand All @@ -122,7 +122,7 @@ await g
.IncludeAssembliesOfBaseTypes()))
.EchoGroovyGremlinQuery()
.ConfigureSerializer(_ => _
.Override<IFancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.Add<IFancyId>((key, env, recurse) => recurse.Serialize(key.Id, env))))
.V<Person>(new FancyId { Id = "someId" })
.Cast<string>()
.Verify();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ public async Task Empty()
public async Task Base_type()
{
await Verify(Transformer.Identity
.Override<Step>((step, env, recurse) => new VStep(ImmutableArray.Create<object>("id")))
.Add<Step>((step, env, recurse) => new VStep(ImmutableArray.Create<object>("id")))
.Serialize(new HasLabelStep(ImmutableArray.Create("label")), GremlinQueryEnvironment.Empty));
}

[Fact]
public async Task Irrelevant()
{
await Verify(Transformer.Identity
.Override<HasKeyStep>((step, env, recurse) => new HasLabelStep(ImmutableArray.Create("should not be here")))
.Add<HasKeyStep>((step, env, recurse) => new HasLabelStep(ImmutableArray.Create("should not be here")))
.Serialize(new HasLabelStep(ImmutableArray.Create("label")), GremlinQueryEnvironment.Empty));
}

Expand All @@ -56,7 +56,7 @@ public async Task Irrelevant()
public async Task Recurse()
{
await Verify(Transformer.Identity
.Override<HasLabelStep>((step, env, recurse) => recurse.Serialize(new VStep(ImmutableArray.Create<object>("id")), env))
.Add<HasLabelStep>((step, env, recurse) => recurse.Serialize(new VStep(ImmutableArray.Create<object>("id")), env))
.Serialize(new HasLabelStep(ImmutableArray.Create("label")), GremlinQueryEnvironment.Empty));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public async Task Multi_step_serialization()
await _g
.ConfigureEnvironment(env => env
.ConfigureSerializer(ser => ser
.Override<EStep>((step, env, recurse) => recurse.Serialize(
.Add<EStep>((step, env, recurse) => recurse.Serialize(
new Step[]
{
new VStep(ImmutableArray<object>.Empty),
Expand All @@ -48,7 +48,7 @@ public async Task Multi_step_serialization_with_forgotten_serialize()
await _g
.ConfigureEnvironment(env => env
.ConfigureSerializer(ser => ser
.Override<EStep>((step, env, recurse) =>
.Add<EStep>((step, env, recurse) =>
new Step[]
{
new VStep(ImmutableArray<object>.Empty),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static IGremlinQueryEnvironment AddFakePartitionKey(this IGremlinQueryEnv
{
return env
.ConfigureSerializer(serializer => serializer
.Override<AddVStep>((step, env, recurse) => new[]
.Add<AddVStep>((step, env, recurse) => new[]
{
step,
recurse.Serialize(new PropertyStep.ByKeyStep("PartitionKey", "PartitionKey"), env)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1104,7 +1104,7 @@ public static ExRam.Gremlinq.Core.TransformerClassExtensions.TryTransformToBuild
}
public static class TransformerStructExtensions
{
public static ExRam.Gremlinq.Core.Transformation.ITransformer Override<TSource, TTarget>(this ExRam.Gremlinq.Core.Transformation.ITransformer transformer, System.Func<TSource, ExRam.Gremlinq.Core.IGremlinQueryEnvironment, ExRam.Gremlinq.Core.Transformation.ITransformer, TTarget?> func)
public static ExRam.Gremlinq.Core.Transformation.ITransformer Add<TSource, TTarget>(this ExRam.Gremlinq.Core.Transformation.ITransformer transformer, System.Func<TSource, ExRam.Gremlinq.Core.IGremlinQueryEnvironment, ExRam.Gremlinq.Core.Transformation.ITransformer, TTarget?> func)
where TTarget : struct { }
public static ExRam.Gremlinq.Core.TransformerStructExtensions.TryTransformToBuilder<TTarget> TryTransformTo<TTarget>(this ExRam.Gremlinq.Core.Transformation.ITransformer transformer)
where TTarget : struct { }
Expand Down Expand Up @@ -1626,7 +1626,7 @@ public static class SerializedGremlinQueryExtensions
public static class Serializer
{
public static readonly ExRam.Gremlinq.Core.Transformation.ITransformer Default;
public static ExRam.Gremlinq.Core.Transformation.ITransformer Override<TSource>(this ExRam.Gremlinq.Core.Transformation.ITransformer serializer, System.Func<TSource, ExRam.Gremlinq.Core.IGremlinQueryEnvironment, ExRam.Gremlinq.Core.Transformation.ITransformer, object?> converter) { }
public static ExRam.Gremlinq.Core.Transformation.ITransformer Add<TSource>(this ExRam.Gremlinq.Core.Transformation.ITransformer serializer, System.Func<TSource, ExRam.Gremlinq.Core.IGremlinQueryEnvironment, ExRam.Gremlinq.Core.Transformation.ITransformer, object?> converter) { }
public static ExRam.Gremlinq.Core.Transformation.ITransformer Select(this ExRam.Gremlinq.Core.Transformation.ITransformer serializer, System.Func<object, object> projection) { }
public static object Serialize<TFragment>(this ExRam.Gremlinq.Core.Transformation.ITransformer serializer, TFragment fragment, ExRam.Gremlinq.Core.IGremlinQueryEnvironment gremlinQueryEnvironment) { }
public static ExRam.Gremlinq.Core.Transformation.ITransformer ToGroovy(this ExRam.Gremlinq.Core.Transformation.ITransformer serializer) { }
Expand Down

0 comments on commit 1e16532

Please sign in to comment.