Пример #1
0
        public void Camelcase_Mixed_Mode_Combined_Reversed()
        {
            var model = GraphModel
                        .FromBaseTypes <Vertex, Edge>()
                        .ConfigureProperties(pm => pm
                                             .UseCamelCaseNames())
                        .ConfigureElements(em => em
                                           .UseCamelCaseLabels());

            model
            .VerticesModel
            .Metadata
            .TryGetValue(typeof(TimeFrame))
            .Map(x => x.Label)
            .Should()
            .BeEqual("timeFrame");

            model
            .PropertiesModel
            .Metadata
            .TryGetValue(typeof(Person).GetProperty(nameof(Person.RegistrationDate)))
            .Map(x => x.Name)
            .Should()
            .BeSome("registrationDate");
        }
 public static object SetUpConfig()
 {
     return(g.ConfigureEnvironment(env => env
                                   .UseLogger(LoggerFactory
                                              .Create(builder => builder
                                                      .AddFilter(__ => true)
                                                      //    .AddConsole()
                                                      )
                                              .CreateLogger("Queries")))
            .ConfigureEnvironment(env => env.UseModel(GraphModel
                                                      .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                                                    .IncludeAssembliesOfBaseTypes())
                                                      //For CosmosDB, we exclude the 'PartitionKey' property from being included in updates.
                                                      .ConfigureProperties(model => model
                                                                           .ConfigureElement <Vertex>(conf => conf
                                                                                                      .IgnoreOnUpdate(x => x.PartitionKey))))
                                  //Disable query logging for a noise free console output.
                                  //Enable logging by setting the verbosity to anything but None.
                                  .ConfigureOptions(options => options
                                                    .SetValue(WebSocketGremlinqOptions.QueryLogLogLevel, LogLevel.None))
                                  .UseCosmosDb(builder => builder
                                               .At(new Uri("wss://emmacosmos.gremlin.cosmos.azure.com:443/"), "AirlineGremlin2", "Airline1")
                                               .AuthenticateBy("bEtnhLU5vuwh28rmSTvxWQNZiKBAznXM94kbrST4MgfwQpPnJaosvbIN1i5U6dc3enmJffR3CTBpqO48xacZYw==")
                                               .ConfigureWebSocket(_ => _
                                                                   .ConfigureGremlinClient(client => client
                                                                                           .ObserveResultStatusAttributes((requestMessage, statusAttributes) =>
     {
         //Uncomment to log request charges for CosmosDB.
         //if (statusAttributes.TryGetValue("x-ms-total-request-charge", out var requestCharge))
         //    env.Logger.LogInformation($"Query {requestMessage.RequestId} had a RU charge of {requestCharge}.");
     }))))));
 }
Пример #3
0
        public async Task Configuration_After_Model_Changes()
        {
            var model = GraphModel
                        .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                      .IncludeAssembliesOfBaseTypes())
                        .ConfigureProperties(pm => pm
                                             .ConfigureMemberMetadata(m => m
                                                                      .UseCamelCaseNames())
                                             .ConfigureElement <Person>(conf => conf
                                                                        .IgnoreAlways(p => p.Name)))
                        .ConfigureElements(em => em
                                           .UseCamelCaseLabels());

            await Verify((
                             model
                             .VerticesModel
                             .Metadata
                             .GetValueOrDefault(typeof(TimeFrame)),
                             model
                             .PropertiesModel
                             .MemberMetadata
                             .GetValueOrDefault(typeof(Person).GetProperty(nameof(Person.RegistrationDate)) !),
                             model
                             .PropertiesModel
                             .MemberMetadata
                             .GetValueOrDefault(typeof(Person).GetProperty(nameof(Person.Name)) !)));
        }
Пример #4
0
 public Program(IGremlinQuerySource gremlinQuerySource)
 {
     _gremlinQuerySource = gremlinQuerySource.ConfigureEnvironment(env => env
                                                                   .UseModel(GraphModel.FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                                                                                     .IncludeAssembliesOfBaseTypes())))
                           .UseCosmosDb(new Uri(""), "", "", "");
 }
Пример #5
0
        public Program()
        {
            _g = g
                 .ConfigureEnvironment(env => env //We call ConfigureEnvironment twice so that the logger is set on the environment from now on.
                                       .UseLogger(LoggerFactory
                                                  .Create(builder => builder
                                                          .AddFilter(__ => true)
                                                          .AddConsole())
                                                  .CreateLogger("Queries")))
                 .ConfigureEnvironment(env => env
                                       //Since the Vertex and Edge classes contained in this sample implement IVertex resp. IEdge,
                                       //setting a model is actually not required as long as these classes are discoverable (i.e. they reside
                                       //in a currently loaded assembly). We explicitly set a model here anyway.
                                       .UseModel(GraphModel
                                                 .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                                               .IncludeAssembliesOfBaseTypes())
                                                 //For CosmosDB, we exclude the 'PartitionKey' property from being included in updates.
                                                 .ConfigureProperties(model => model
                                                                      .ConfigureElement <Vertex>(conf => conf
                                                                                                 .IgnoreOnUpdate(x => x.PartitionKey))))
                                       //Disable query logging for a noise free console output.
                                       //Enable logging by setting the verbosity to anything but None.
                                       .ConfigureOptions(options => options
                                                         .SetValue(WebSocketGremlinqOptions.QueryLogLogLevel, LogLevel.None))

#if GremlinServer
                                       .UseGremlinServer(builder => builder
                                                         .AtLocalhost()));
Пример #6
0
        public async Task TryGetFilterLabels_does_not_include_abstract_type()
        {
            var model = GraphModel.FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                                .IncludeAssembliesFromAppDomain());

            await Verify(model.VerticesModel
                         .TryGetFilterLabels(typeof(Authority), FilterLabelsVerbosity.Maximum) ?? ImmutableArray <string> .Empty);
        }
Пример #7
0
 public void Relax_outside_hierarchy()
 {
     GraphModel.FromBaseTypes <Vertex, Edge>().Relax()
     .VerticesModel
     .TryGetConstructiveLabel(typeof(VertexOutsideHierarchy))
     .Should()
     .BeSome("VertexOutsideHierarchy");
 }
Пример #8
0
 public void Relax_in_hierarchy_inside_model()
 {
     GraphModel.FromBaseTypes <Vertex, Edge>().Relax()
     .VerticesModel
     .TryGetConstructiveLabel(typeof(Person))
     .Should()
     .BeSome("Person");
 }
Пример #9
0
 public void No_Relax_in_hierarchy_outside_model()
 {
     GraphModel.FromBaseTypes <Vertex, Edge>()
     .VerticesModel
     .TryGetConstructiveLabel(typeof(VertexInsideHierarchy))
     .Should()
     .BeNone();
 }
 public static GremlinqSetup UseGremlinServer <TVertex, TEdge>(this GremlinqSetup setup)
 {
     return(setup
            .UseGremlinServer()
            .UseModel(GraphModel
                      .FromBaseTypes <TVertex, TEdge>(lookup => lookup
                                                      .IncludeAssembliesOfBaseTypes())));
 }
Пример #11
0
 public void Lowercase()
 {
     GraphModel.FromBaseTypes <Vertex, Edge>()
     .WithLowercaseLabels()
     .VerticesModel
     .TryGetConstructiveLabel(typeof(Person))
     .Should()
     .BeSome("person");
 }
Пример #12
0
 public void Camelcase_Edges()
 {
     GraphModel.FromBaseTypes <Vertex, Edge>()
     .WithCamelcaseLabels()
     .EdgesModel
     .TryGetConstructiveLabel(typeof(LivesIn))
     .Should()
     .BeEqual("livesIn");
 }
Пример #13
0
 public static GremlinqSetup UseJanusGraph <TVertex, TEdge>(this GremlinqSetup setup, Action <ProviderSetup <IJanusGraphConfigurator> >?extraSetupAction = null)
 {
     return(setup
            .UseJanusGraph(extraSetupAction)
            .ConfigureEnvironment(env => env
                                  .UseModel(GraphModel
                                            .FromBaseTypes <TVertex, TEdge>(lookup => lookup
                                                                            .IncludeAssembliesOfBaseTypes()))));
 }
Пример #14
0
 public async Task Hierarchy_inside_model()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .VerticesModel
                  .Metadata
                  .GetValueOrDefault(typeof(Person)));
 }
Пример #15
0
 public async Task Outside_hierarchy()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .VerticesModel
                  .Metadata
                  .TryGetValue(typeof(VertexOutsideHierarchy), out var _));
 }
Пример #16
0
 public async Task Configuration_Unconfigured()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .PropertiesModel
                  .MemberMetadata
                  .GetValueOrDefault(typeof(Person).GetProperty(nameof(Person.Name)) !));
 }
Пример #17
0
 public void CamelcaseLabel_Verticies()
 {
     GraphModel.FromBaseTypes <Vertex, Edge>()
     .WithCamelcaseLabels()
     .VerticesModel
     .TryGetConstructiveLabel(typeof(TimeFrame))
     .Should()
     .BeEqual("timeFrame");
 }
Пример #18
0
 public void Outside_hierarchy()
 {
     GraphModel
     .FromBaseTypes <Vertex, Edge>()
     .VerticesModel
     .Metadata
     .TryGetValue(typeof(VertexOutsideHierarchy))
     .Should()
     .BeNone();
 }
Пример #19
0
        async static Task Main(string[] args)
        {
            var logger = LoggerFactory
                         .Create(builder => builder
                                 .AddFilter(__ => true)
                                 .AddConsole())
                         .CreateLogger("Queries");

            _g = g
                 .ConfigureEnvironment(env => env
                                       .UseLogger(logger)
                                       //Since the Vertex and Edge classes contained in this sample implement IVertex resp. IEdge,
                                       //setting a model is actually not required as long as these classes are discoverable (i.e. they reside
                                       //in a currently loaded assembly). We explicitly set a model here anyway.
                                       .UseModel(GraphModel
                                                 .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                                               .IncludeAssembliesOfBaseTypes())
                                                 //For CosmosDB, we exclude the 'PartitionKey' property from being included in updates.
                                                 .ConfigureProperties(model => model
                                                                      .ConfigureElement <Vertex>(conf => conf
                                                                                                 .IgnoreOnUpdate(x => x.PartitionKey))))
                                       .UseJanusGraph(builder => builder
                                                      .At("ws://192.168.181.5:31410")
                                                      //Disable query logging for a noise free console output.
                                                      //Enable logging by setting the verbosity to anything but None.
                                                      .ConfigureQueryLoggingOptions(o => o
                                                                                    .SetQueryLoggingVerbosity(QueryLoggingVerbosity.None))));

            var marko = await _g
                        .AddV(new Person { Name = "Marko", Age = 29 })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .AddV(new Person {
                Name = "Marko", Age = 29
            })
                        .FirstAsync();

            await GetEntities();
        }
Пример #20
0
 public static GremlinqSetup UseCosmosDb <TVertex, TEdge>(this GremlinqSetup setup, Expression <Func <TVertex, object> > partitionKeyExpression)
 {
     return(setup
            .UseCosmosDb()
            .UseModel(GraphModel
                      .FromBaseTypes <TVertex, TEdge>(lookup => lookup
                                                      .IncludeAssembliesOfBaseTypes())
                      .ConfigureProperties(model => model
                                           .ConfigureElement <TVertex>(conf => conf
                                                                       .IgnoreOnUpdate(partitionKeyExpression)))));
 }
Пример #21
0
 public async Task CamelcaseLabel_Vertices()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .ConfigureElements(em => em
                                     .UseCamelCaseLabels())
                  .VerticesModel
                  .Metadata
                  .TryGetValue(typeof(TimeFrame)));
 }
Пример #22
0
 public void Hierarchy_inside_model()
 {
     GraphModel
     .FromBaseTypes <Vertex, Edge>()
     .VerticesModel
     .Metadata
     .TryGetValue(typeof(Person))
     .Map(x => x.Label)
     .Should()
     .BeSome("Person");
 }
Пример #23
0
 public void Outside_hierarchy()
 {
     GraphModel
     .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                   .IncludeAssembliesOfBaseTypes())
     .VerticesModel
     .Metadata
     .TryGetValue(typeof(VertexOutsideHierarchy))
     .Should()
     .BeNone();
 }
Пример #24
0
 public async Task Repro()
 {
     await g
     .ConfigureEnvironment(env => env
                           .UseModel(GraphModel.FromBaseTypes <VertexBaseAbstract, Edge>())
                           .EchoGroovyGremlinQuery())
     .V <Thing>("id")
     .Update(new Thing())
     .Cast <string>()
     .Verify();
 }
Пример #25
0
 public async Task Camelcase_Edges()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .ConfigureElements(em => em
                                     .UseCamelCaseLabels())
                  .EdgesModel
                  .Metadata
                  .GetValueOrDefault(typeof(LivesIn)));
 }
Пример #26
0
 public async Task Lowercase()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .ConfigureElements(em => em
                                     .UseLowerCaseLabels())
                  .VerticesModel
                  .Metadata
                  .GetValueOrDefault(typeof(Person)));
 }
Пример #27
0
 public async Task Lowercase_Identifier_By_ParameterExpression()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .ConfigureProperties(pm => pm
                                       .ConfigureMemberMetadata(m => m
                                                                .UseLowerCaseNames()))
                  .PropertiesModel
                  .MemberMetadata
                  .GetValueOrDefault(typeof(Person).GetProperty(nameof(Person.RegistrationDate)) !));
 }
Пример #28
0
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddGremlinq(setup => setup
                          .ConfigureEnvironment(e => e
                                                .UseModel(GraphModel.FromBaseTypes <TestClassLib.Vertex, Edge>(x => x.IncludeAssembliesOfBaseTypes())
                                                          .ConfigureProperties(model =>
                                                                               model.ConfigureElement <Vertex>(config => config.IgnoreOnUpdate(x => x.group))))
                                                .UseCosmosDb(builder => builder
                                                             .At(YOUR_CONNECTION_HERE)
                                                             .AuthenticateBy(
                                                                 YOUR_KEY_HERE))));
 }
Пример #29
0
 public async Task Configuration_IgnoreAlways_Id()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .ConfigureProperties(pm => pm
                                       .ConfigureElement <Vertex>(conf => conf
                                                                  .IgnoreAlways(p => p.Id)))
                  .PropertiesModel
                  .MemberMetadata
                  .GetValueOrDefault(typeof(Person).GetProperty(nameof(Person.Id)) !));
 }
Пример #30
0
 public async Task Configuration_can_be_found_for_derived_class()
 {
     await Verify(GraphModel
                  .FromBaseTypes <Vertex, Edge>(lookup => lookup
                                                .IncludeAssembliesOfBaseTypes())
                  .ConfigureProperties(pm => pm
                                       .ConfigureElement <Authority>(conf => conf
                                                                     .IgnoreOnUpdate(p => p.Name)))
                  .PropertiesModel
                  .MemberMetadata
                  .GetValueOrDefault(typeof(Person).GetProperty(nameof(Person.Name)) !));
 }