Example #1
0
    private Sql <ISqlContext> GetTagsSql(string?culture, bool withGrouping = false)
    {
        Sql <ISqlContext> sql = Sql()
                                .Select <TagDto>();

        if (withGrouping)
        {
            sql = sql
                  .AndSelectCount("NodeCount");
        }

        sql = sql
              .From <TagDto>()
              .InnerJoin <TagRelationshipDto>().On <TagRelationshipDto, TagDto>((rel, tag) => tag.Id == rel.TagId)
              .InnerJoin <ContentDto>()
              .On <ContentDto, TagRelationshipDto>((content, rel) => content.NodeId == rel.NodeId)
              .InnerJoin <NodeDto>().On <NodeDto, ContentDto>((node, content) => node.NodeId == content.NodeId);

        if (culture != null && culture != "*")
        {
            sql = sql
                  .InnerJoin <LanguageDto>().On <TagDto, LanguageDto>((tag, lang) => tag.LanguageId == lang.Id);
        }

        return(sql);
    }