예제 #1
0
 public object ToJSON()
 {
     return(FromImpl?.ToJSON());
 }
예제 #2
0
        private string EncodeAsJSON()
        {
            var parameters = new Dictionary <string, object>();

            if (WhereImpl != null)
            {
                parameters["WHERE"] = WhereImpl.ConvertToJSON();
            }

            if (Distinct)
            {
                parameters["DISTINCT"] = true;
            }

            if (LimitValue != null)
            {
                var e = Misc.TryCast <IExpression, QueryExpression>(LimitValue);
                parameters["LIMIT"] = e.ConvertToJSON();
            }

            if (SkipValue != null)
            {
                var e = Misc.TryCast <IExpression, QueryExpression>(SkipValue);
                parameters["OFFSET"] = e.ConvertToJSON();
            }

            if (OrderByImpl != null)
            {
                parameters["ORDER_BY"] = OrderByImpl.ToJSON();
            }

            var selectParam = SelectImpl?.ToJSON();

            if (selectParam != null)
            {
                parameters["WHAT"] = selectParam;
            }

            if (JoinImpl != null)
            {
                var fromJson = FromImpl?.ToJSON();
                if (fromJson == null)
                {
                    throw new InvalidOperationException(CouchbaseLiteErrorMessage.NoAliasInJoin);
                }

                var joinJson = JoinImpl.ToJSON() as IList <object>;
                Debug.Assert(joinJson != null);
                joinJson.Insert(0, fromJson);
                parameters["FROM"] = joinJson;
            }
            else
            {
                var fromJson = FromImpl?.ToJSON();
                if (fromJson != null)
                {
                    parameters["FROM"] = new[] { fromJson };
                }
            }

            if (GroupByImpl != null)
            {
                parameters["GROUP_BY"] = GroupByImpl.ToJSON();
            }

            if (HavingImpl != null)
            {
                parameters["HAVING"] = HavingImpl.ToJSON();
            }

            return(JsonConvert.SerializeObject(parameters));
        }