Пример #1
0
        public string BuildCouchDbApiPostData()
        {
            var stringBuilder = new StringBuilder();

            if (string.IsNullOrEmpty(SelectPart) || FromParts.Count == 0)
            {
                throw new InvalidOperationException("A query must have a select part and at least one from part.");
            }

            stringBuilder.Append("{ \"map\":\"function (doc) {");

            if (WhereParts.Count > 0)
            {
                stringBuilder.AppendFormat("if ({0}) ", SeparatedStringBuilder.Build(" && ", WhereParts));
            }

            stringBuilder.AppendFormat("emit({0}, ", !String.IsNullOrEmpty(OrderBy) ? OrderBy : "doc._id");

            // TODO: use the SelectParts to only return the properties that are needed by emitting {Name: "Jeff", Title: "Awesome"}

            var select = "doc"; // return the entire thing by default

            if (!String.IsNullOrEmpty(SelectPart))
            {
                select = SelectPart;
            }

            stringBuilder.Append(select + ");}\"}");

            return(stringBuilder.ToString());
        }
Пример #2
0
        private string GetMemberName(responseUser memberData)
        {
            int partsCount = 0;
            SeparatedStringBuilder name = new SeparatedStringBuilder(" ");

            if (!string.IsNullOrWhiteSpace(memberData.first_name))
            {
                name.AppendWithSeparator(memberData.first_name.Trim());
                partsCount++;
            }

            if (!string.IsNullOrWhiteSpace(memberData.last_name))
            {
                name.AppendWithSeparator(memberData.last_name.Trim());
                partsCount++;
            }

            if (partsCount == 2)
            {
                return(name.ToString());
            }

            if (!string.IsNullOrWhiteSpace(memberData.screen_name))
            {
                return(memberData.screen_name.Trim());
            }

            return(name.ToString());
        }
Пример #3
0
        public override string ToString()
        {
            var result       = string.Format("Fetch ({0}.{1})", _relationMember.DeclaringType.Name, _relationMember.Name);
            var innerResults = InnerFetchRequests.Select(request => request.ToString());

            return(SeparatedStringBuilder.Build(".Then", new[] { result }.Concat(innerResults)));
        }
        private string Serialize(IEnumerable<GroupQueueItem> items)
        {
            SeparatedStringBuilder stringBuilder = new SeparatedStringBuilder("; ");

            foreach (var item in items)
            {
                stringBuilder.AppendFormatWithSeparator("<{0}>", item.VkGroupId.ToString());
            }

            return stringBuilder.ToString();
        }    
Пример #5
0
        private string GetDebugString(IEnumerable <MemberSubscription> subscriptions)
        {
            var builder = new SeparatedStringBuilder("; ");

            foreach (var subscription in subscriptions)
            {
                builder.AppendFormatWithSeparator("<{0}, {1}, {2}>", subscription.VkGroupId, subscription.VkMemberId, subscription.SubscribedVkGroupId);
            }

            return(builder.ToString());
        }
Пример #6
0
        public string CreateEntityId(string entityName, string majorId, params string[] minorIds)
        {
            Contract.Requires(!string.IsNullOrWhiteSpace(entityName));
            Contract.Requires(!string.IsNullOrWhiteSpace(majorId));
            Contract.Requires(minorIds != null);
            Contract.Requires(minorIds.Length > 0);

            SeparatedStringBuilder stringBuilder = new SeparatedStringBuilder("_", minorIds);
            var entityId = string.Concat(entityName.ToLower(), "_", majorId.ToLower(), "_", stringBuilder.ToString());

            this.log.DebugFormat("Generated caching key: {0}", entityId);
            return(entityId);
        }
Пример #7
0
        private string GetRequestUrl(string apiMethodName, Dictionary <string, string> parameters)
        {
            SeparatedStringBuilder requestUrlBuilder = new SeparatedStringBuilder("&", string.Format("{0}/{1}?", CONST_ApiUrl, apiMethodName));

            parameters.Add("access_token", this.accessToken);

            foreach (var parameter in parameters)
            {
                requestUrlBuilder.AppendFormatWithSeparator("{0}={1}", parameter.Key, parameter.Value);
            }

            return(requestUrlBuilder.ToString());
        }
Пример #8
0
        public void CalculateMembersDelta(int vkGroupId, DateTime date)
        {
            this.log.DebugFormat("Start processing: vkGroupId = {0}", vkGroupId);

            var membersDelta = new MembersDelta
            {
                VkGroupId  = vkGroupId,
                PostedDate = date
            };

            using (IDataGateway dataGateway = this.dataGatewayProvider.GetDataGateway())
            {
                var newMembers     = dataGateway.Connection.Query <long>("SELECT vkmemberid FROM memberupdate WHERE vkgroupid = @vkGroupId AND isnew = @isNew", new { vkGroupId, isNew = true }).ToList();
                var deletedMembers = dataGateway.Connection.Query <long>("SELECT m.vkmemberid FROM member m LEFT OUTER JOIN memberupdate mu ON (m.vkgroupid = mu.vkgroupid AND m.vkmemberid = mu.vkmemberid) WHERE m.vkgroupid = @vkGroupId AND m.isdeleted = @isDeleted AND mu.id IS NULL", new { vkGroupId, isDeleted = false }).ToList();

                var newMembersBuilder     = new SeparatedStringBuilder();
                var deletedMembersBuilder = new SeparatedStringBuilder();

                foreach (var memberId in newMembers)
                {
                    newMembersBuilder.AppendWithSeparator(memberId.ToString());
                }

                foreach (var memberId in deletedMembers)
                {
                    deletedMembersBuilder.AppendWithSeparator(memberId.ToString());
                }

                membersDelta.InIds    = newMembersBuilder.ToString();
                membersDelta.InCount  = newMembers.Count();
                membersDelta.OutIds   = deletedMembersBuilder.ToString();
                membersDelta.OutCount = deletedMembers.Count();

                dataGateway.Connection.Execute("INSERT INTO membersdelta (vkgroupid, posteddate, second, minute, hour, day, month, year, inids, incount, outids, outcount) VALUES (@VkGroupId, @PostedDate, @Second, @Minute, @Hour, @Day, @Month, @Year, @InIds, @InCount, @OutIds, @OutCount)", membersDelta);
                this.log.DebugFormat(
                    "Delta: InCount = {0}, OutCount = {1}, InIds = [{2}], OutIds = [{3}]",
                    membersDelta.InCount,
                    membersDelta.OutCount,
                    membersDelta.InIds,
                    membersDelta.OutIds);

                dataGateway.Connection.Execute("DELETE FROM memberupdate WHERE vkgroupid = @vkGroupId", new { vkGroupId });

                var markAsDeletedQuery = string.Format("UPDATE member SET isdeleted = true WHERE vkgroupid = @vkGroupId AND vkmemberid = ANY ({0})", QueryArrayBuilder.GetString(deletedMembers.ToArray()));
                dataGateway.Connection.Execute(markAsDeletedQuery, new { vkGroupId });
            }
        }
Пример #9
0
        public API.Responses.Cities.response GetCities(int offset)
        {
            if (offset == int.MaxValue)
            {
                throw new ArgumentOutOfRangeException("offset", "offset must be lower than Int32.MaxValue");
            }

            IEnumerable <int> cityIdsInt = Enumerable.Range(offset + 1, CONST_CitiesPerQuery);
            var cityIds = new SeparatedStringBuilder(cityIdsInt.Select(i => i.ToString()));
            Dictionary <string, string> parameters = new Dictionary <string, string> {
                { "cids", cityIds.ToString() }
            };
            string citiesResponse = this.vkAccessor.ExecuteCall("places.getCityById.xml", parameters);

            API.Responses.Cities.response cities = this.responseMapper.MapResponse <API.Responses.Cities.response>(citiesResponse);
            cities.Feed = citiesResponse;

            return(cities);
        }
        public string BuildHQLString()
        {
            var stringBuilder = new StringBuilder();

            if (string.IsNullOrEmpty(SelectPart) || FromParts.Count == 0)
            {
                throw new InvalidOperationException("A query must have a select part and at least one from part.");
            }

            stringBuilder.AppendFormat("select {0}", SelectPart);
            stringBuilder.AppendFormat(" from {0}", SeparatedStringBuilder.Build(", ", FromParts));

            if (WhereParts.Count > 0)
            {
                stringBuilder.AppendFormat(" where {0}", SeparatedStringBuilder.Build(" and ", WhereParts));
            }

            if (OrderByParts.Count > 0)
            {
                stringBuilder.AppendFormat(" order by {0}", SeparatedStringBuilder.Build(", ", OrderByParts));
            }

            return(stringBuilder.ToString());
        }
Пример #11
0
        public IEnumerable <T> Enumerable <T>()
        {
            var querystring = string.Empty;
            var resultType  = typeof(T);
            var hasFilter   = false;

            if (_queryParts.ReturnCount)
            {
                querystring += "/$count";
            }
            querystring += "?$format=json&";
            if (_queryParts.Take.HasValue)
            {
                querystring += "$top=" + _queryParts.Take.Value + "&";
            }
            if (_queryParts.Skip.HasValue)
            {
                querystring += "$skip=" + _queryParts.Skip.Value + "&";
            }
            if (!string.IsNullOrEmpty(_queryParts.OrderBy))
            {
                querystring += "$orderby=" + _queryParts.OrderBy + "&";
            }
            var filter = SeparatedStringBuilder.Build(" and ", _queryParts.WhereParts);

            if (!string.IsNullOrEmpty(filter))
            {
                querystring += "$filter=" + filter + "&";
            }
            if (!string.IsNullOrEmpty(_queryParts.SelectPart))
            {
                querystring += "$select=" + _queryParts.SelectPart + "&";
            }
            var fullUrl = _url + "/" + _collectionName + querystring;
            var json    = UrlHelper.Get(fullUrl);

            // Netflix retuns a separate array inside d when a filter is used for some reason, so hard-coded check for now during tests
            hasFilter = !querystring.EndsWith("$format=json&");
            //var json = ODataRequest.Execute(fullUrl, "POST", _queryParts.BuildODataApiPostData(), "application/json");
            JObject res;

            // check for Count() [Int32] and LongCOunt() [Int64]
            if (_queryParts.ReturnCount && (resultType == typeof(int) || resultType == typeof(long)))
            {
                var results = new List <T>();
                res = JObject.Parse(json);
                results.Add(res["total_rows"].ToObject <T>());
                return(results);
            }
            // get the rows property and deserialize that
            var jobject = JsonConvert.DeserializeObject(json) as JObject;
            var rows    = jobject["d"];

            if (hasFilter)
            {
                rows = rows["results"];
            }
            var items = rows.Select(row => row.ToObject <T>());

            return(items);
        }
Пример #12
0
        public override string ToString()
        {
            var result = "orderby " + SeparatedStringBuilder.Build(", ", Orderings);

            return(result);
        }
 public void AddOrderByPart(IEnumerable <string> orderings)
 {
     OrderByParts.Insert(0, SeparatedStringBuilder.Build(", ", orderings));
 }