コード例 #1
0
        protected override string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {
            keys = null;

            string clause = visitor.WhereClause;

            viewName = visitor.ViewName;

            CouchbaseQueryTranslator translator = new CouchbaseQueryTranslator();

            if (this._parentQuery.ParentFolder != null)
            {
                var folderName = visitor.MakeValue(this._parentQuery.ParentFolder.FullName);
                clause += string.Format("{0}({1}=={2})",
                                        string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                                        "doc[\\\"FolderName\\\"]",
                                        folderName);

                viewName = string.Format("FolderName_EQ_{0}_", visitor.AsViewNameString(this._parentQuery.ParentFolder.FullName)) + viewName;
            }

            var children = ((IEnumerable <TextContent>)(translator.Translate(this._parentQuery.ChildrenQuery)).Execute()).ToList();

            if (children.Count() > 0)
            {
                keys = children.Select(it => it.ParentUUID).ToArray();
            }
            else
            {
                keys = new string[0];
            }

            return(clause);
        }
コード例 #2
0
        public string BuildView(CouchbaseVisitor visitor, string designName, out string viewName, out string[] keys)
        {
            StringBuilder viewBuilder = new StringBuilder();

            string viewBody = BuildViewBody(visitor, out viewName, out keys);

            viewBuilder.Append("{\"views\":{");
            viewBuilder.Append("\"");
            viewBuilder.Append(viewName);
            viewBuilder.Append("\":");
            viewBuilder.Append("{");
            viewBuilder.Append("\"map\":");
            viewBuilder.Append("\"function(doc,meta){");
            viewBuilder.Append(viewBody);
            viewBuilder.Append("}\"");
            viewBuilder.Append("}");
            viewBuilder.Append("}");
            viewBuilder.Append("}");
            //viewBuilder.Append("},");
            //viewBuilder.Append("\"options\": {\"updateMinChanges\": 1000}}");
            //   viewBuilder.AppendFormat(@"{{""views"": {{{0}:{{""map"":""function(doc,meta){{{1}}}""}}}},""options"": {{""updateMinChanges"": 1}}}}", viewName,viewBody);

            return(viewBuilder.ToString()
                   .Replace(" ", "")
                   .Replace("\r", "")
                   .Replace("\n", ""));
        }
コード例 #3
0
        protected override string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {
            CouchbaseQueryTranslator translator = new CouchbaseQueryTranslator();
            string clause = visitor.WhereClause;

            viewName = visitor.ViewName;

            if (this._categoriesQuery.CategoryFolder != null)
            {
                var folderName = visitor.MakeValue(this._categoriesQuery.CategoryFolder.FullName);
                clause += string.Format("{0}({1}=={2})",
                                        string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                                        "doc[\\\"FolderName\\\"]",
                                        folderName);

                viewName = string.Format("FolderName_EQ_{0}_", visitor.AsViewNameString(this._categoriesQuery.CategoryFolder.FullName)) + viewName;
            }
            keys = null;
            var subQuery = translator.Translate(this._categoriesQuery.InnerQuery);
            var contents = ((IEnumerable <TextContent>)subQuery.Execute()).ToList();

            if (contents.Count() > 0)
            {
                var uuids = contents.Select(it => it.UUID);
                keys = uuids.SelectMany(it => QueryCategories(this._categoriesQuery.Repository, it)).ToArray();
            }
            else
            {
                keys = new string[0];
            }

            return(clause);
        }
コード例 #4
0
        private object QueryByUUID(CouchbaseVisitor visitor)
        {
            object result    = null;
            var    getResult = this.ContentQuery.Repository.GetClient().ExecuteGet(visitor.EQUUIDs);

            switch (visitor.CallType)
            {
            case Kooboo.CMS.Content.Query.Expressions.CallType.Count:
                result = getResult.Count;
                break;

            case Kooboo.CMS.Content.Query.Expressions.CallType.First:
                result = getResult.Values.First().ToContent();
                break;

            case Kooboo.CMS.Content.Query.Expressions.CallType.Last:
                result = getResult.Values.Last().ToContent();
                break;

            case Kooboo.CMS.Content.Query.Expressions.CallType.LastOrDefault:
                result = getResult.Count == 0 ? null : getResult.Values.Last().ToContent();
                break;

            case Kooboo.CMS.Content.Query.Expressions.CallType.FirstOrDefault:
                result = getResult.Count == 0 ? null : getResult.Values.First().ToContent();
                break;

            case Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified:
            default:
                result = getResult.Values.Select(it => it.ToContent());
                break;
            }

            return(result);
        }
コード例 #5
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        public string BuildView(CouchbaseVisitor visitor, string designName, out string viewName, out string[] keys)
        {
            StringBuilder viewBuilder = new StringBuilder();

            string viewBody = BuildViewBody(visitor, out viewName, out keys);

            viewBuilder.Append("{\"views\":{");
            viewBuilder.Append("\"");
            viewBuilder.Append(viewName);
            viewBuilder.Append("\":");
            viewBuilder.Append("{");
            viewBuilder.Append("\"map\":");
            viewBuilder.Append("\"function(doc,meta){");
            viewBuilder.Append(viewBody);
            viewBuilder.Append("}\"");
            viewBuilder.Append("}");
            viewBuilder.Append("}");
            viewBuilder.Append("}");
            //viewBuilder.Append("},");
            //viewBuilder.Append("\"options\": {\"updateMinChanges\": 1000}}");
            //   viewBuilder.AppendFormat(@"{{""views"": {{{0}:{{""map"":""function(doc,meta){{{1}}}""}}}},""options"": {{""updateMinChanges"": 1}}}}", viewName,viewBody);

            return viewBuilder.ToString()
                .Replace(" ", "")
                .Replace("\r", "")
                .Replace("\n", "");
        }
コード例 #6
0
ファイル: CouchbaseChildrenQuery.cs プロジェクト: Godoy/CMS
        protected override string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {
            keys = null;


            string clause = visitor.WhereClause;
            viewName = visitor.ViewName;
            CouchbaseQueryTranslator translator = new CouchbaseQueryTranslator();
            if (this._childrenQuery.EmbeddedFolder != null)
            {
                var folderName = visitor.MakeValue(this._childrenQuery.EmbeddedFolder.FullName);
                clause += string.Format("{0}({1}=={2})",
                    string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                    "doc[\\\"FolderName\\\"]",
                    folderName);

                viewName = string.Format("FolderName_EQ_{0}_", visitor.AsViewNameString(this._childrenQuery.EmbeddedFolder.FullName)) + viewName;
            }

            var parents = ((IEnumerable<TextContent>)(translator.Translate(this._childrenQuery.ParentQuery)).Execute()).ToList();
            if (parents.Count() > 0)
            {
                keys = parents.SelectMany(it => QueryChildren(this.ContentQuery.Repository, it.UUID)).ToArray();
            }
            else
            {
                keys = new string[0];
            }

            return clause;
        }
コード例 #7
0
ファイル: CouchbaseCategoryQuery.cs プロジェクト: Godoy/CMS
        protected override string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {

            CouchbaseQueryTranslator translator = new CouchbaseQueryTranslator();
            string clause = visitor.WhereClause;
            viewName = visitor.ViewName;

            if (this._categoriesQuery.CategoryFolder != null)
            {
                var folderName = visitor.MakeValue(this._categoriesQuery.CategoryFolder.FullName);
                clause += string.Format("{0}({1}=={2})",
                    string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                    "doc[\\\"FolderName\\\"]",
                    folderName);

                viewName = string.Format("FolderName_EQ_{0}_", visitor.AsViewNameString(this._categoriesQuery.CategoryFolder.FullName)) + viewName;
            }
            keys = null;
            var subQuery = translator.Translate(this._categoriesQuery.InnerQuery);
            var contents = ((IEnumerable<TextContent>)subQuery.Execute()).ToList();
            if (contents.Count() > 0)
            {
                var uuids = contents.Select(it => it.UUID);
                keys = uuids.SelectMany(it => QueryCategories(this._categoriesQuery.Repository, it)).ToArray();
            }
            else
            {
                keys = new string[0];
            }

            return clause;
        }
コード例 #8
0
        private object QueryByUserKey(CouchbaseVisitor visitor)
        {
            var view = this.ContentQuery.Repository.GetClient().GetView(this.ContentQuery.Repository.GetDefaultViewDesign(), "Sort_By_UserKey").Reduce(false).Stale(StaleMode.False);

            view = view.Keys(visitor.EQUserKeys);

            return(ExecuteView(visitor, view));
        }
コード例 #9
0
ファイル: CouchbaseVisitorTest.cs プロジェクト: Godoy/CMS
        public void Test_Visit_Where_In()
        {
            var whereIn = new WhereInExpression(null, "UUID", new[] { "value1" });
            CouchbaseVisitor visitor = new CouchbaseVisitor();
            visitor.Visite(whereIn);

            Console.WriteLine(visitor.ViewName);
            Console.WriteLine(visitor.WhereClause);
            Console.WriteLine(visitor.EQUUIDs.First());
        }
コード例 #10
0
        private object QueryByView(CouchbaseVisitor visitor)
        {
            //create view
            var designName = string.Empty;//"__TempViews__";
            var viewName   = string.Empty;

            string[] keys;
            string   viewDocument = this.BuildView(visitor, designName, out viewName, out keys);

            designName = viewName;

            if (keys != null && keys.Length == 0)
            {
                return(DefaultValueExecute(visitor.CallType));
            }

            IView <IViewRow> couchbaseCursor = null;

            couchbaseCursor = this.ContentQuery.Repository.GetClient().GetView(designName, viewName);
            var cacheKey     = string.Format("{0}---{1}/{2}", this.ContentQuery.Repository.Name, designName, viewName);
            var viewIsExists = viewNamesCache.ContainsKey(cacheKey);

            if (!viewIsExists)
            {
                viewIsExists = couchbaseCursor.CheckExists();
                if (!viewIsExists)
                {
                    viewIsExists = DatabaseHelper.CreateDesignDocument(this.ContentQuery.Repository.GetBucketName(), designName, viewDocument);
                    if (viewIsExists)
                    {
                        viewNamesCache[cacheKey] = cacheKey;
                    }
                }
                else
                {
                    viewNamesCache[cacheKey] = cacheKey;
                }
            }
            couchbaseCursor = couchbaseCursor.Reduce(false).Stale(StaleMode.False);

            if (keys != null && keys.Length > 0)
            {
                couchbaseCursor.Keys(keys);
            }

            if (viewIsExists)
            {
                return(ExecuteView(visitor, couchbaseCursor));
            }
            else
            {
                throw new Exception("The view creation failed.");
            }
        }
コード例 #11
0
ファイル: CouchbaseVisitor.cs プロジェクト: dancky/CMS
        private CouchbaseVisitor VisitInner(IExpression expression)
        {
            CouchbaseVisitor visitor = new CouchbaseVisitor();

            visitor.Visite(expression);

            //combine the order expressions.
            this.OrderFields.AddRange(visitor.OrderFields);

            this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries);
            return(visitor);
        }
コード例 #12
0
        private object ExecuteView(CouchbaseVisitor visitor, IView <IViewRow> couchbaseCursor)
        {
            object result = null;

            if (couchbaseCursor == null)
            {
                return(DefaultValueExecute(visitor.CallType));
            }
            if (visitor.OrderClause != null)
            {
                couchbaseCursor.Descending(visitor.OrderClause.Descending);
            }
            if (visitor.Skip != 0)
            {
                couchbaseCursor = couchbaseCursor.Skip(visitor.Skip);
            }
            if (visitor.Take != 0)
            {
                couchbaseCursor = couchbaseCursor.Limit(visitor.Take);
            }
            switch (visitor.CallType)
            {
            case Kooboo.CMS.Content.Query.Expressions.CallType.Count:
                result = couchbaseCursor.Count();
                break;

            case Kooboo.CMS.Content.Query.Expressions.CallType.First:
                return(ViewRowToTextContent(couchbaseCursor.First()));

            case Kooboo.CMS.Content.Query.Expressions.CallType.Last:
                return(ViewRowToTextContent(couchbaseCursor.Last()));

            case Kooboo.CMS.Content.Query.Expressions.CallType.LastOrDefault:
                return(ViewRowToTextContent(couchbaseCursor.LastOrDefault()));

            case Kooboo.CMS.Content.Query.Expressions.CallType.FirstOrDefault:
                return(ViewRowToTextContent(couchbaseCursor.FirstOrDefault()));

            case Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified:
            default:

                var uuidList = couchbaseCursor.Select(it => GetUUID(it)).ToArray();
                return(this.ContentQuery.Repository.GetClient().ExecuteGet(uuidList).Select(it => it.Value.ToContent()));
            }
            return(result);
        }
コード例 #13
0
        protected override string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {
            string clause = visitor.WhereClause;

            viewName = visitor.ViewName;

            if (this._textContentQuery.Folder != null)
            {
                var folderName = visitor.MakeValue(this._textContentQuery.Folder.FullName);
                clause += string.Format("{0}({1}=={2})",
                                        string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                                        "doc[\\\"FolderName\\\"]",
                                        folderName);
                viewName = string.Format("FolderName_EQ_{0}_", visitor.AsViewNameString(this._textContentQuery.Folder.FullName)) + viewName;
            }
            else if (this._textContentQuery.Schema != null)
            {
                clause += string.Format("{0}({1}=={2})",
                                        string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                                        "doc[\\\"SchemaName\\\"]",
                                        visitor.MakeValue(this._textContentQuery.Schema.Name));
                viewName = string.Format("SchemaName_EQ_{0}_", visitor.AsViewNameString(this._textContentQuery.Schema.Name)) + viewName;
            }

            keys = null;
            IEnumerable <string> categoryContents = new string[0];

            if (visitor.CategoryQueries != null && visitor.CategoryQueries.Count() > 0)
            {
                CouchbaseQueryTranslator translator = new CouchbaseQueryTranslator();
                //TODO
                foreach (var item in visitor.CategoryQueries)
                {
                    var categories = ((IEnumerable <TextContent>)translator.Translate(item).Execute()).ToArray();
                    if (categories.Length > 0)
                    {
                        var categoryUUIDs = categories.SelectMany(it => QueryByCategory(this._textContentQuery.Repository, it.UUID)).ToArray();
                        categoryContents = categoryContents.Concat(categoryUUIDs);
                    }
                }

                keys = categoryContents.Distinct().ToArray();
            }

            return(clause);
        }
コード例 #14
0
        protected override string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {

            string clause = visitor.WhereClause;
            viewName = visitor.ViewName;

            if (this._textContentQuery.Folder != null)
            {
                var folderName = visitor.MakeValue(this._textContentQuery.Folder.FullName);
                clause += string.Format("{0}({1}=={2})",
                    string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                    "doc[\\\"FolderName\\\"]",
                    folderName);
                viewName = string.Format("FolderName_EQ_{0}_", visitor.AsViewNameString(this._textContentQuery.Folder.FullName)) + viewName;
            }
            else if (this._textContentQuery.Schema != null)
            {
                clause += string.Format("{0}({1}=={2})",
                    string.IsNullOrEmpty(clause) ? string.Empty : "&&",
                    "doc[\\\"SchemaName\\\"]",
                    visitor.MakeValue(this._textContentQuery.Schema.Name));
                viewName = string.Format("SchemaName_EQ_{0}_", visitor.AsViewNameString(this._textContentQuery.Schema.Name)) + viewName;
            }

            keys = null;
            IEnumerable<string> categoryContents = new string[0];
            if (visitor.CategoryQueries != null && visitor.CategoryQueries.Count() > 0)
            {
                CouchbaseQueryTranslator translator = new CouchbaseQueryTranslator();
                //TODO
                foreach (var item in visitor.CategoryQueries)
                {
                    var categories = ((IEnumerable<TextContent>)translator.Translate(item).Execute()).ToArray();
                    if (categories.Length > 0)
                    {
                        var categoryUUIDs = categories.SelectMany(it => QueryByCategory(this._textContentQuery.Repository, it.UUID)).ToArray();
                        categoryContents = categoryContents.Concat(categoryUUIDs);
                    }
                }

                keys = categoryContents.Distinct().ToArray();
            }

            return clause;
        }
コード例 #15
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        protected virtual string BuildViewBody(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {
            StringBuilder viewBody = new StringBuilder();
            var clause = BuildIfClause(visitor, out viewName, out keys);

            string keyExpression = "doc.UUID";

            if (visitor.OrderClause != null && (keys == null || keys.Length == 0))
            {
                keyExpression = "[doc." + visitor.OrderClause.FieldName + "," + keyExpression + "]";
                viewName = viewName + "_ORDERBY_" + visitor.OrderClause.FieldName;
            }

            viewBody.Append(string.IsNullOrEmpty(clause) ? string.Empty : "if(")
               .Append(clause)
               .Append(string.IsNullOrEmpty(clause) ? string.Empty : ")")
               .AppendFormat("emit({0},{{UUID:doc.UUID}});", keyExpression);

            return viewBody.ToString();
        }
コード例 #16
0
        protected virtual string BuildViewBody(CouchbaseVisitor visitor, out string viewName, out string[] keys)
        {
            StringBuilder viewBody = new StringBuilder();
            var           clause   = BuildIfClause(visitor, out viewName, out keys);

            string keyExpression = "doc.UUID";

            if (visitor.OrderClause != null && (keys == null || keys.Length == 0))
            {
                keyExpression = "[doc." + visitor.OrderClause.FieldName + "," + keyExpression + "]";
                viewName      = viewName + "_ORDERBY_" + visitor.OrderClause.FieldName;
            }

            viewBody.Append(string.IsNullOrEmpty(clause) ? string.Empty : "if(")
            .Append(clause)
            .Append(string.IsNullOrEmpty(clause) ? string.Empty : ")")
            .AppendFormat("emit({0},{{UUID:doc.UUID}});", keyExpression);

            return(viewBody.ToString());
        }
コード例 #17
0
        public virtual object Execute()
        {
            var visitor = new CouchbaseVisitor();

            visitor.Visite(ContentQuery.Expression);


            if (string.IsNullOrEmpty(visitor.ViewName) && visitor.EQUUIDs.Count() > 0)
            {
                return(QueryByUUID(visitor));
            }
            else if (string.IsNullOrEmpty(visitor.ViewName) && visitor.EQUserKeys.Count() > 0)
            {
                return(QueryByUserKey(visitor));
            }
            else
            {
                return(QueryByView(visitor));
            }
        }
コード例 #18
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        public virtual object Execute()
        {
            var visitor = new CouchbaseVisitor();
            visitor.Visite(ContentQuery.Expression);


            if (string.IsNullOrEmpty(visitor.ViewName) && visitor.EQUUIDs.Count() > 0)
            {
                return QueryByUUID(visitor);
            }
            else if (string.IsNullOrEmpty(visitor.ViewName) && visitor.EQUserKeys.Count() > 0)
            {
                return QueryByUserKey(visitor);
            }
            else
            {
                return QueryByView(visitor);
            }
        }
コード例 #19
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
 protected abstract string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys);
コード例 #20
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        private object ExecuteView(CouchbaseVisitor visitor, IView<IViewRow> couchbaseCursor)
        {

            object result = null;
            if (couchbaseCursor == null)
            {
                return DefaultValueExecute(visitor.CallType);
            }
            if (visitor.OrderClause != null)
            {
                couchbaseCursor.Descending(visitor.OrderClause.Descending);
            }
            if (visitor.Skip != 0)
            {
                couchbaseCursor = couchbaseCursor.Skip(visitor.Skip);
            }
            if (visitor.Take != 0)
            {
                couchbaseCursor = couchbaseCursor.Limit(visitor.Take);
            }
            switch (visitor.CallType)
            {
                case Kooboo.CMS.Content.Query.Expressions.CallType.Count:
                    result = couchbaseCursor.Count();
                    break;
                case Kooboo.CMS.Content.Query.Expressions.CallType.First:
                    return ViewRowToTextContent(couchbaseCursor.First());
                case Kooboo.CMS.Content.Query.Expressions.CallType.Last:
                    return ViewRowToTextContent(couchbaseCursor.Last());
                case Kooboo.CMS.Content.Query.Expressions.CallType.LastOrDefault:
                    return ViewRowToTextContent(couchbaseCursor.LastOrDefault());
                case Kooboo.CMS.Content.Query.Expressions.CallType.FirstOrDefault:
                    return ViewRowToTextContent(couchbaseCursor.FirstOrDefault());
                case Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified:
                default:

                    var uuidList = couchbaseCursor.Select(it => GetUUID(it)).ToArray();
                    return this.ContentQuery.Repository.GetClient().ExecuteGet(uuidList).Select(it => it.Value.ToContent());
            }
            return result;
        }
コード例 #21
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        private object QueryByView(CouchbaseVisitor visitor)
        {
            //create view
            var designName = string.Empty;//"__TempViews__";
            var viewName = string.Empty;

            string[] keys;
            string viewDocument = this.BuildView(visitor, designName, out viewName, out keys);
            designName = viewName;

            if (keys != null && keys.Length == 0)
            {
                return DefaultValueExecute(visitor.CallType);
            }

            IView<IViewRow> couchbaseCursor = null;
            couchbaseCursor = this.ContentQuery.Repository.GetClient().GetView(designName, viewName);
            var cacheKey = string.Format("{0}---{1}/{2}", this.ContentQuery.Repository.Name, designName, viewName);
            var viewIsExists = viewNamesCache.ContainsKey(cacheKey);

            if (!viewIsExists)
            {
                viewIsExists = couchbaseCursor.CheckExists();
                if (!viewIsExists)
                {
                    viewIsExists = DatabaseHelper.CreateDesignDocument(this.ContentQuery.Repository.GetBucketName(), designName, viewDocument);
                    if (viewIsExists)
                    {
                        viewNamesCache[cacheKey] = cacheKey;
                    }
                }
                else
                {
                    viewNamesCache[cacheKey] = cacheKey;
                }
            }
            couchbaseCursor = couchbaseCursor.Reduce(false).Stale(StaleMode.False);

            if (keys != null && keys.Length > 0)
            {
                couchbaseCursor.Keys(keys);
            }

            if (viewIsExists)
            {
                return ExecuteView(visitor, couchbaseCursor);
            }
            else
            {
                throw new Exception("The view creation failed.");
            }


        }
コード例 #22
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        private object QueryByUserKey(CouchbaseVisitor visitor)
        {
            var view = this.ContentQuery.Repository.GetClient().GetView(this.ContentQuery.Repository.GetDefaultViewDesign(), "Sort_By_UserKey").Reduce(false).Stale(StaleMode.False);
            view = view.Keys(visitor.EQUserKeys);

            return ExecuteView(visitor, view);
        }
コード例 #23
0
ファイル: CouchbaseQuery.cs プロジェクト: Godoy/CMS
        private object QueryByUUID(CouchbaseVisitor visitor)
        {
            object result = null;
            var getResult = this.ContentQuery.Repository.GetClient().ExecuteGet(visitor.EQUUIDs);

            switch (visitor.CallType)
            {
                case Kooboo.CMS.Content.Query.Expressions.CallType.Count:
                    result = getResult.Count;
                    break;
                case Kooboo.CMS.Content.Query.Expressions.CallType.First:
                    result = getResult.Values.First().ToContent();
                    break;
                case Kooboo.CMS.Content.Query.Expressions.CallType.Last:
                    result = getResult.Values.Last().ToContent();
                    break;
                case Kooboo.CMS.Content.Query.Expressions.CallType.LastOrDefault:
                    result = getResult.Count == 0 ? null : getResult.Values.Last().ToContent();
                    break;
                case Kooboo.CMS.Content.Query.Expressions.CallType.FirstOrDefault:
                    result = getResult.Count == 0 ? null : getResult.Values.First().ToContent();
                    break;
                case Kooboo.CMS.Content.Query.Expressions.CallType.Unspecified:
                default:
                    result = getResult.Values.Select(it => it.ToContent());
                    break;
            }

            return result;
        }
コード例 #24
0
 protected abstract string BuildIfClause(CouchbaseVisitor visitor, out string viewName, out string[] keys);
コード例 #25
0
ファイル: CouchbaseVisitor.cs プロジェクト: 2m0nd/CMS
        private CouchbaseVisitor VisitInner(IExpression expression)
        {
            CouchbaseVisitor visitor = new CouchbaseVisitor();
            visitor.Visite(expression);

            //combine the order expressions.
            this.OrderFields.AddRange(visitor.OrderFields);

            this.CategoryQueries = this.CategoryQueries.Concat(visitor.CategoryQueries);
            return visitor;
        }