コード例 #1
0
        private Sql GetBaseQuery(BaseQueryType queryType, bool includeFilePaths)
        {
            var sql = new Sql();

            sql.Select(queryType == BaseQueryType.Count ? "COUNT(*)" : (queryType == BaseQueryType.Ids ? "cmsContentVersion.contentId" : "*"))
            .From <ContentVersionDto>(SqlSyntax)
            .InnerJoin <ContentDto>(SqlSyntax)
            .On <ContentVersionDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
            .InnerJoin <NodeDto>(SqlSyntax)
            .On <ContentDto, NodeDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
            .InnerJoin <ContentTypeDto>(SqlSyntax)
            .On <ContentTypeDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.ContentTypeId);

            if (includeFilePaths)
            {
                sql.InnerJoin <MediaDto>(SqlSyntax)
                .On <MediaDto, ContentVersionDto>(SqlSyntax, left => left.VersionId, right => right.VersionId);
            }

            //TODO: IF we want to enable querying on content type information this will need to be joined
            //.InnerJoin<ContentTypeDto>(SqlSyntax)
            //.On<ContentDto, ContentTypeDto>(SqlSyntax, left => left.ContentTypeId, right => right.NodeId, SqlSyntax);
            sql.Where <NodeDto>(x => x.NodeObjectType == NodeObjectTypeId, SqlSyntax);
            return(sql);
        }
コード例 #2
0
 protected override Sql GetBaseQuery(BaseQueryType queryType)
 {
     var sql = new Sql();
     sql.Select(queryType == BaseQueryType.Count ? "COUNT(*)" : (queryType == BaseQueryType.Ids ? "cmsContentVersion.contentId" : "*"))
         .From<ContentVersionDto>(SqlSyntax)
         .InnerJoin<ContentDto>(SqlSyntax)
         .On<ContentVersionDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
         .InnerJoin<NodeDto>(SqlSyntax)
         .On<ContentDto, NodeDto>(SqlSyntax, left => left.NodeId, right => right.NodeId, SqlSyntax)
         //TODO: IF we want to enable querying on content type information this will need to be joined
         //.InnerJoin<ContentTypeDto>(SqlSyntax)
         //.On<ContentDto, ContentTypeDto>(SqlSyntax, left => left.ContentTypeId, right => right.NodeId, SqlSyntax);
         .Where<NodeDto>(x => x.NodeObjectType == NodeObjectTypeId, SqlSyntax);
     return sql;
 }
コード例 #3
0
        protected override Sql GetBaseQuery(BaseQueryType queryType)
        {
            var sql = new Sql();

            sql.Select(queryType == BaseQueryType.Count ? "COUNT(*)" : (queryType == BaseQueryType.Ids ? "cmsMember.nodeId" : "*"))
            .From <MemberDto>(SqlSyntax)
            .InnerJoin <ContentVersionDto>(SqlSyntax)
            .On <ContentVersionDto, MemberDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
            .InnerJoin <ContentDto>(SqlSyntax)
            .On <ContentVersionDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
            //We're joining the type so we can do a query against the member type - not sure if this adds much overhead or not?
            // the execution plan says it doesn't so we'll go with that and in that case, it might be worth joining the content
            // types by default on the document and media repo's so we can query by content type there too.
            .InnerJoin <ContentTypeDto>(SqlSyntax)
            .On <ContentTypeDto, ContentDto>(SqlSyntax, left => left.NodeId, right => right.ContentTypeId)
            .InnerJoin <NodeDto>(SqlSyntax)
            .On <ContentDto, NodeDto>(SqlSyntax, left => left.NodeId, right => right.NodeId)
            .Where <NodeDto>(x => x.NodeObjectType == NodeObjectTypeId, SqlSyntax);
            return(sql);
        }
コード例 #4
0
 /// <summary>
 /// For Paging, repositories must support returning different query for the query type specified
 /// </summary>
 /// <param name="queryType"></param>
 /// <returns></returns>
 protected abstract Sql GetBaseQuery(BaseQueryType queryType);
コード例 #5
0
 protected override Sql GetBaseQuery(BaseQueryType queryType)
 {
     return(GetBaseQuery(queryType, false));
 }