public void SingleStatementTwoVariables()
        {
            MemoryTripleStore statements = new MemoryTripleStore();

            statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p"), new UriRef("ex:o")));

            SimpleQueryBuilder builder = new SimpleQueryBuilder();

            builder.AddPattern(new Pattern(new Variable("s"), new UriRef("ex:p"), new Variable("o")));
            Query query = builder.GetQuery();

            QuerySqlMapper mapper = new QuerySqlMapper(query, statements);

            string expected =
                "SELECT rn_s.resourceHash rh_s, rn_s.nodeHash nh_s, rn_s.nodeType nt_s, u_s.uri val_s, NULL sub_s, rn_o.resourceHash rh_o, rn_o.nodeHash nh_o, rn_o.nodeType nt_o, COALESCE(u_o.uri, pl_o.value, l_o.value) val_o, COALESCE(tl_o.value, t_o.value) sub_o " +
                "FROM Statements s1 JOIN ResourceNodes rn_s ON rn_s.resourceHash=s1.subjectHash AND rn_s.graphId=s1.graphId " +
                "LEFT OUTER JOIN UriRefs u_s ON rn_s.nodeHash=u_s.hash AND rn_s.nodeType='u' " +
                "JOIN ResourceNodes rn_o ON rn_o.resourceHash=s1.objectHash AND rn_o.graphId=s1.graphId " +
                "LEFT OUTER JOIN UriRefs u_o ON rn_o.nodeHash=u_o.hash AND rn_o.nodeType='u' " +
                "LEFT OUTER JOIN PlainLiterals pl_o ON rn_o.nodeHash=pl_o.hash AND rn_o.nodeType='p' " +
                "LEFT OUTER JOIN Languages l_o ON pl_o.languageHash=l_o.hash " +
                "LEFT OUTER JOIN TypedLiterals tl_o ON rn_o.nodehash=tl_o.hash AND rn_o.nodeType='t' " +
                "LEFT OUTER JOIN DataTypes t_o ON tl_o.datatypeHash=t_o.hash " +
                "WHERE s1.predicateHash=" + statements.GetResourceDenotedBy(new UriRef("ex:p")).GetHashCode() +
                " AND s1.graphId=" + statements.GetHashCode();


            Assert.AreEqual(expected, mapper.Sql);
        }
Beispiel #2
0
        /// <summary>
        /// Creates a new instance of the GitLab API v4 client pointing to the specified hostUrl.
        /// </summary>
        /// <param name="hostUrl">Host address of GitLab instance. For example https://gitlab.example.com or https://gitlab.example.com/api/v4/ </param>
        /// <param name="authenticationToken">Personal access token. Obtained from GitLab profile settings.</param>
        public GitLabClient(string hostUrl, string authenticationToken = "")
        {
            Guard.NotEmpty(hostUrl, nameof(hostUrl));
            Guard.NotNull(authenticationToken, nameof(authenticationToken));
            HostUrl = hostUrl;

            var jsonSerializer = new RequestsJsonSerializer();

            _httpFacade = new GitLabHttpFacade(
                FixBaseUrl(hostUrl),
                jsonSerializer,
                authenticationToken);

            var simpleQueryBuilder               = new SimpleQueryBuilder();
            var mileStoneQueryBuilder            = new MileStoneQueryBuilder();
            var projectQueryBuilder              = new ProjectsQueryBuilder();
            var projectIssuesQueryBuilder        = new ProjectIssuesQueryBuilder();
            var issuesQueryBuilder               = new IssuesQueryBuilder();
            var mergeRequestsQueryBuilder        = new MergeRequestsQueryBuilder();
            var projectMergeRequestsQueryBuilder = new ProjectMergeRequestsQueryBuilder();
            var groupsQueryBuilder               = new GroupsQueryBuilder();
            var projectsGroupsQueryBuilder       = new ProjectsGroupQueryBuilder();

            SimpleQuery   = new SimpleQueryClient(_httpFacade, simpleQueryBuilder);
            MileStone     = new MileStoneClient(_httpFacade, mileStoneQueryBuilder);
            Issues        = new IssuesClient(_httpFacade, issuesQueryBuilder, projectIssuesQueryBuilder);
            MergeRequests = new MergeRequestsClient(_httpFacade, mergeRequestsQueryBuilder, projectMergeRequestsQueryBuilder);
            Projects      = new ProjectsClient(_httpFacade, projectQueryBuilder);
            Users         = new UsersClient(_httpFacade);
            Groups        = new GroupsClient(_httpFacade, groupsQueryBuilder, projectsGroupsQueryBuilder);
        }
        public void ConstraintBound()
        {
            MemoryTripleStore statements = new MemoryTripleStore();

            statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p"), new UriRef("ex:o")));

            SimpleQueryBuilder builder = new SimpleQueryBuilder();

            builder.AddPattern(new Pattern(new UriRef("ex:s"), new UriRef("ex:p"), new Variable("v")));
            builder.AddConstraint(new Constraint(new Bound(new Variable("v"))));
            Query query = builder.GetQuery();

            QuerySqlMapper mapper = new QuerySqlMapper(query, statements);

            string expected =
                "SELECT rn_v.resourceHash rh_v, rn_v.nodeHash nh_v, rn_v.nodeType nt_v, COALESCE(u_v.uri, pl_v.value, l_v.value) val_v, COALESCE(tl_v.value, t_v.value) sub_v " +
                "FROM Statements s1 JOIN ResourceNodes rn_v ON rn_v.resourceHash=s1.objectHash AND rn_v.graphId=s1.graphId " +
                "LEFT OUTER JOIN UriRefs u_v ON rn_v.nodeHash=u_v.hash AND rn_v.nodeType='u' " +
                "LEFT OUTER JOIN PlainLiterals pl_v ON rn_v.nodeHash=pl_v.hash AND rn_v.nodeType='p' " +
                "LEFT OUTER JOIN Languages l_v ON pl_v.languageHash=l_v.hash " +
                "LEFT OUTER JOIN TypedLiterals tl_v ON rn_v.nodehash=tl_v.hash AND rn_v.nodeType='t' " +
                "LEFT OUTER JOIN DataTypes t_v ON tl_v.datatypeHash=t_v.hash " +
                "WHERE s1.subjectHash=" + statements.GetResourceDenotedBy(new UriRef("ex:s")).GetHashCode() +
                " AND s1.predicateHash=" + statements.GetResourceDenotedBy(new UriRef("ex:p")).GetHashCode() +
                " AND s1.graphId=" + statements.GetHashCode() +
                " AND s1.objectHash IS NOT NULL";


            Assert.AreEqual(expected, mapper.Sql);
        }
        public void SingleStatementPlusUnmatchableOptionalStatementWithVariable()
        {
            MemoryTripleStore statements = new MemoryTripleStore();

            statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p"), new UriRef("ex:o")));

            SimpleQueryBuilder builder = new SimpleQueryBuilder();

            builder.AddPattern(new Pattern(new Variable("v"), new UriRef("ex:p"), new UriRef("ex:o")));
            builder.AddOptional(new Pattern(new Variable("v"), new UriRef("ex:p2"), new Variable("o")));
            Query query = builder.GetQuery();

            QuerySqlMapper mapper = new QuerySqlMapper(query, statements);

            string expected =
                "SELECT rn_v.resourceHash rh_v, rn_v.nodeHash nh_v, rn_v.nodeType nt_v, u_v.uri val_v, NULL sub_v, NULL rh_o, NULL nh_o, NULL nt_o, NULL val_o, NULL sub_o " +
                "FROM Statements s1 JOIN ResourceNodes rn_v ON rn_v.resourceHash=s1.subjectHash AND rn_v.graphId=s1.graphId " +
                "LEFT OUTER JOIN UriRefs u_v ON rn_v.nodeHash=u_v.hash AND rn_v.nodeType='u' " +
                "WHERE s1.predicateHash=" + statements.GetResourceDenotedBy(new UriRef("ex:p")).GetHashCode() +
                " AND s1.objectHash=" + statements.GetResourceDenotedBy(new UriRef("ex:o")).GetHashCode() +
                " AND s1.graphId=" + statements.GetHashCode();


            Assert.AreEqual(expected, mapper.Sql);
        }
        //ACC000_00_0V
        public static async Task <NksResponse> Access_000_00_0V()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Access().Element()
                                         .CreateSimpleQuery()
                                         .AddTargets().Interventions().Done().Done()
                                         .AddConcept(BasicEntries.InterventionsStructure).Done();

            return(await builder.Execute());
        }
        //ACC000_00_03
        public static async Task <NksResponse> Access_000_00_04()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Access().Element()
                                         .CreateSimpleQuery()
                                         .AddTargets().Shapes().Done().Done()
                                         //.AddConcept(BasicEntries.Phaenomenoms).Done()
                                         .SetOrder().Tree();

            return(await builder.Execute());
        }
        public static async Task <NksResponse> ACC_000_04()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Search().Proposal()
                                         .CreateSimpleQuery()
                                         .AddTargets()
                                         .Causes().AddStructure("AkutPflege_").Done()
                                         .Done()
                                         .SetSearchText("Oberfl")
                                         .SetDepth(6);

            return(await builder.Execute());
        }
        //ACC000_00_01
        public static async Task <NksResponse> Access_000_00_01()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Access().Element()
                                         .CreateSimpleQuery()
                                         .AddTargets().Interventions().Done().Done()
                                         .AddConcept(BasicEntries.InterventionsStructure).Done()
                                         .SetOrder().List();

            Console.Out.WriteLine(builder.GetPath());
            new NksJson().Display(builder.GetQuery());
            return(await builder.Execute());
        }
        public void LessThan_IfHasValueAndMemberIsNullable_ShouldFindLessMatches()
        {
            //Arrange
            var value = 3;

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.LessThan(f => f.MissingQuantity, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(1);
        }
        public void StartsWith_IfStringIsNotNullOrEmpty_ShouldFindStartingWithMatches()
        {
            //Arrange
            var value = "Name";

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.StartsWith(f => f.Name, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(2);
        }
        public void Equals_WhenMemberIsAChildEntity_ShouldFindEqualMatches()
        {
            //Arrange
            var value = "Childo";

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakesWithChildren());
            var queryable = sut.Equals(f => f.Child.Name, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(1);
        }
        public void Equals_IfValueIsNotNullAndMemberIsNullable_ShouldFindEqualMatches()
        {
            //Arrange
            long?value = 3;

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.Equals(f => f.MissingQuantity, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(1);
        }
        public void NotIn_IfHasValue_ShouldFindNotContainingMatches()
        {
            //Arrange
            var targetValues = new long[] { 1, 2 };

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.NotIn(f => f.AvailableQuantity, targetValues).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(2);
        }
        public void LessThan_IfMemberIsAChildEntity_ShouldFindLessMatches()
        {
            //Arrange
            var value = 12;

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakesWithChildren());
            var queryable = sut.LessThan(f => f.Child.Id, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(1);
        }
        public void LessThanOrEquals_IfHasValue_ShouldFindLessOrEqualMatches()
        {
            //Arrange
            var value = 1;

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.LessThanOrEquals(f => f.AvailableQuantity, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(1);
        }
        public void Like_IfMemberIsAChildEntity_ShouldFindContainingMatches()
        {
            //Arrange
            var value = "*ild*";

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakesWithChildren());
            var queryable = sut.Like(f => f.Child.Name, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(2);
        }
        public void Like_IfStringHasWildCardBothInTheBeginningAndEnd_ShouldFindContainingMatches()
        {
            //Arrange
            var value = "*ame*";

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.Like(f => f.Name, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(4);
        }
        public void Like_IfStringHasWildCardInTheEnd_ShouldFindStartingWithMatches()
        {
            //Arrange
            var value = "Name*";

            //Act
            var sut       = new SimpleQueryBuilder <Fake>(_fakeRepository.GetFakes());
            var queryable = sut.Like(f => f.Name, value).Queryable();
            var result    = queryable.ToList();

            //Verify
            result.Should().HaveCount(2);
        }
        public static async Task <NksResponse> ACC_000_01()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Search().AdHocIntervention()
                                         .CreateSimpleQuery()
                                         .AddTargets()
                                         .Interventions().AddStructure("AkutPflege_").Done()
                                         .InterventionsBundle().AddStructure("AkutPflege_").Done()
                                         .Done()
                                         .AddConcept("TA2.0").Done()
                                         .SetDepth(20);

            return(await builder.Execute());
        }
        public void NoPatterns()
        {
            MemoryTripleStore statements = new MemoryTripleStore();

            statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p"), new UriRef("ex:o")));

            SimpleQueryBuilder builder = new SimpleQueryBuilder();
            Query query = builder.GetQuery();

            QuerySqlMapper mapper = new QuerySqlMapper(query, statements);

            Assert.AreEqual(false, mapper.IsFeasible);
        }
        public static async Task <NksResponse> ACC_000_07()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Access().Element()
                                         .CreateSimpleQuery()
                                         .AddTargets()
                                         .BodyLocations().AddStructure("AkutPflege_").Done()
                                         .BodyLocationsStructure().AddStructure("AkutPflege_").Done()
                                         .Done()
                                         .AddConcept("BF75").Done()
                                         .SetOrder().List()
                                         .SetDepth(1);

            new NksJson().Display(builder.GetQuery());
            return(await builder.Execute());
        }
        public static async Task <NksResponse> ACC_000_03()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Search().Proposal()
                                         .CreateSimpleQuery()
                                         .AddTargets()
                                         .Interventions().AddStructure("AkutPflege_").Done()
                                         .InterventionsBundle().AddStructure("AkutPflege_").Done()
                                         .Done()
                                         .SetDepth(7)
                                         .SetSearchText("Verba");

            Console.Out.WriteLine(builder.GetPath());
            new NksJson().Display(builder.GetQuery());
            return(await builder.Execute());
        }
        public static async Task <NksResponse> ACC_000_02()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Search().AdHocIntervention()
                                         .CreateSimpleQuery()
                                         .AddTargets()
                                         .Interventions().AddStructure("AkutPflege_").Done()
                                         .InterventionsBundle().AddStructure("AkutPflege_").Done()
                                         .Done()
                                         .AddConcept("PC1115").Done()
                                         .AddConcept("TA2.0").Done()
                                         .AddConcept("UA0").Done()
                                         .AddConcept("BA293").Done()
                                         .AddConcept("PA50").Done()
                                         .SetDepth(10);

            Console.Out.WriteLine(builder.GetPath());
            new NksJson().Display(builder.GetQuery());
            return(await builder.Execute());
        }
        public static async Task <NksResponse> ACC_000_06()
        {
            SimpleQueryBuilder builder = Nks.NewConnection(Server).PrepareRequest().Search().Catalog()
                                         .CreateSimpleQuery()
                                         .AddTargets()
                                         .Interventions().AddStructure("AkutPflege_").Done()
                                         .InterventionsBundle().AddStructure("AkutPflege_").Done()
                                         .Done()
                                         .AddAttributes()
                                         .Aged()
                                         .Female()
                                         .Done()
                                         .AddConcept("TA11.0").Done()
                                         .SetSearchText("Oberfl")
                                         .SetDepth(20);

            new NksJson().Display(builder.GetQuery());
            return(await builder.Execute());
        }
        public async static void Workflow_001()
        {
            Nks nks = Nks.NewConnection(Server);

            SimpleQueryBuilder phenomenonsRequest = nks.PrepareRequest().Search().Catalog()
                                                    .CreateSimpleQuery()
                                                    .AddTargets().Phenomenons().Done().Done()
                                                    .SetSearchText("Zustand")
                                                    .DefineTemplate().PhenomenonsTemplate().Done();

            NksResponse shapes = await phenomenonsRequest.Execute();

            new NksJson().Display(phenomenonsRequest.GetQuery());
            NksEntry shape = shapes.Elements[0];

            new NksJson().Display(shape);

            SimpleQueryBuilder linkRequest = nks.PrepareRequest().Search().Link()
                                             .CreateSimpleQuery()
                                             .AddConcept(shape)
                                             .AddConcept("IA123").AddStructure("Blub").SetDomain("welt").Done()
                                             .AddTargets().Causes().Done().Done();

            NksResponse causes = await linkRequest.Execute();

            NksEntry cause = causes.Elements[1];

            SimpleQueryBuilder interventionRequest = nks.PrepareRequest().Search().Link()
                                                     .CreateSimpleQuery()
                                                     .AddConcept(cause).AddConcept(shape)
                                                     .AddTargets().Interventions().Done().Done();

            NksResponse interventions = await interventionRequest.Execute();

            //new NksJson().Display(interventions);

            SimpleQueryBuilder correlationRequest = nks.PrepareRequest().Search().Correlation()
                                                    .CreateSimpleQuery()
                                                    .AddConcept(cause)
                                                    .AddTargets().Causes().Done().Done();
            //causes
        }
        public void SingleStatementPlusMultipleOptionalStatementsInOneGroup()
        {
            MemoryTripleStore statements = new MemoryTripleStore();

            statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p"), new UriRef("ex:o")));
            statements.Add(new Statement(new UriRef("ex:s"), new UriRef("ex:p2"), new UriRef("ex:o2")));

            SimpleQueryBuilder builder = new SimpleQueryBuilder();

            builder.AddPattern(new Pattern(new Variable("v"), new UriRef("ex:p"), new UriRef("ex:o")));
            builder.AddOptional(new Pattern(new Variable("v"), new Variable("p"), new UriRef("ex:o2")));
            builder.AddOptional(new Pattern(new Variable("v"), new Variable("p"), new UriRef("ex:o")));
            Query query = builder.GetQuery();

            QuerySqlMapper mapper = new QuerySqlMapper(query, statements);

            string expected =
                "SELECT rn_v.resourceHash rh_v, rn_v.nodeHash nh_v, rn_v.nodeType nt_v, u_v.uri val_v, NULL sub_v, rn_p.resourceHash rh_p, rn_p.nodeHash nh_p, rn_p.nodeType nt_p, u_p.uri val_p, NULL sub_p " +
                "FROM Statements s1 " +
                "LEFT OUTER JOIN Statements s2" +
                " ON s2.subjectHash=s1.subjectHash" +
                " AND s2.objectHash=" + statements.GetResourceDenotedBy(new UriRef("ex:o2")).GetHashCode() +
                " AND s2.graphId=" + statements.GetHashCode() +
                " JOIN Statements s3" +
                " ON s3.subjectHash=s2.subjectHash" +
                " AND s3.predicateHash=s2.predicateHash" +
                " AND s3.objectHash=" + statements.GetResourceDenotedBy(new UriRef("ex:o")).GetHashCode() +
                " AND s3.graphId=" + statements.GetHashCode() +
                " JOIN ResourceNodes rn_v ON rn_v.resourceHash=s1.subjectHash AND rn_v.graphId=s1.graphId " +
                "LEFT OUTER JOIN UriRefs u_v ON rn_v.nodeHash=u_v.hash AND rn_v.nodeType='u' " +
                "JOIN ResourceNodes rn_p ON rn_p.resourceHash=s2.predicateHash AND rn_p.graphId=s2.graphId " +
                "LEFT OUTER JOIN UriRefs u_p ON rn_p.nodeHash=u_p.hash AND rn_p.nodeType='u' " +
                "WHERE s1.predicateHash=" + statements.GetResourceDenotedBy(new UriRef("ex:p")).GetHashCode() +
                " AND s1.objectHash=" + statements.GetResourceDenotedBy(new UriRef("ex:o")).GetHashCode() +
                " AND s1.graphId=" + statements.GetHashCode();


            Assert.AreEqual(expected, mapper.Sql);
        }
 internal SimpleQueryClient(GitLabHttpFacade httpFacade, SimpleQueryBuilder simpleQueryBuilder)
 {
     _httpFacade         = httpFacade;
     _simpleQueryBuilder = simpleQueryBuilder;
 }
        public static async Task <IEnumerable <TEntity> > QueryListAsync <TEntity>(this IDapper dapper, dynamic where, dynamic order = null) where TEntity : class
        {
            var builder = new SimpleQueryBuilder <TEntity>(where as object, order as object);

            return(await dapper.QueryListAsync <TEntity>(builder));
        }
        public static TEntity QueryOne <TEntity>(this IDapper dapper, dynamic where, dynamic order = null) where TEntity : class
        {
            var builder = new SimpleQueryBuilder <TEntity>(where as object, order as object);

            return(dapper.QueryOne <TEntity>(builder));
        }
        /// <summary>
        /// 查询件数
        /// </summary>
        /// <returns>数据件数</returns>
        public static async Task <int> QueryCountAsync <TEntity>(this IDapper dapper, dynamic where) where TEntity : class
        {
            var builder = new SimpleQueryBuilder <TEntity>(where as object, null);

            return(await dapper.QueryCountAsync(builder));
        }