private static DataServices.DataServiceQuery <DataServicePackageWithCreated> GetUnlistedPackages(DataServices.DataServiceContext serviceContext, DateTime lastCreated)
        {
            var packagesQuery = serviceContext.CreateQuery <DataServicePackageWithCreated>("Packages");
            // The following query gets unlisted packages created on or before 'lastCreated'
            var queryOptionValue = String.Format(UnlistedPackagesQueryOption, lastCreated.ToString("O"));

            packagesQuery = packagesQuery.AddQueryOption("$orderby", "Created, Id, Version");
            packagesQuery = packagesQuery.AddQueryOption("$filter", queryOptionValue);
            return(packagesQuery);
        }
Esempio n. 2
0
        private DataServices.DataServiceQuery <DataServicePackageWithCreated> GetNewPackagesToMirror(DataServices.DataServiceContext serviceContext, DateTime lastCreated)
        {
            Log.QueryNewPackages(serviceContext.BaseUri.AbsoluteUri, lastCreated.ToString(DateTimeFormatSpecifier));
            var packagesQuery = serviceContext.CreateQuery <DataServicePackageWithCreated>("Packages");
            // The following query gets packages created after 'lastCreated' and sorted by 'Created' ascending
            var queryOptionValue = String.Format("Created gt DateTime'{0}'", lastCreated.ToString(DateTimeFormatSpecifier));

            packagesQuery = packagesQuery.AddQueryOption("$orderby", "Created, Id, Version");
            packagesQuery = packagesQuery.AddQueryOption("$filter", queryOptionValue);
            Log.QueryFilter(queryOptionValue);
            return(packagesQuery);
        }
        private static List <int> GetDeletedPackageIndices(Uri sourceUri, List <MinPackage> destinationPackages, int startIndex, int endIndex, DateTime dateTime)
        {
            var serviceContext = new DataServices.DataServiceContext(sourceUri)
            {
                MergeOption             = DataServices.MergeOption.OverwriteChanges,
                IgnoreMissingProperties = true,
            };
            var packagesQuery    = serviceContext.CreateQuery <DataServicePackageWithCreated>("Packages");
            var queryOptionValue = String.Format("Created eq DateTime'{0}'", dateTime.ToString("o"));

            packagesQuery = packagesQuery.AddQueryOption("$orderby", "Id");
            packagesQuery = packagesQuery.AddQueryOption("$orderby", "Version");
            packagesQuery = packagesQuery.AddQueryOption("$filter", queryOptionValue);

            var skipIndex      = 0;
            var sourcePackages = new List <DataServicePackageWithCreated>();

            do
            {
                var list = packagesQuery.Skip(skipIndex).ToList();
                if (list.Count == 0)
                {
                    break;
                }
                sourcePackages.AddRange(list);
                skipIndex = skipIndex + list.Count;
            }while(true);

            if (sourcePackages.Count == 0)
            {
                throw new InvalidOperationException("Don't call this method when it is already known that there are no source packages");
            }

            var deletedPackageIndices = new List <int>();

            for (int i = startIndex; i < endIndex; i++)
            {
                var destPackage         = destinationPackages[i];
                var destPackageInSource = sourcePackages.Where(s => String.Equals(s.Id, destPackage.Id) && s.SemanticVersion.Equals(destPackage.SemanticVersion)).SingleOrDefault();
                if (destPackageInSource == null)
                {
                    // This destination package is not present in source
                    // Add index to list of deleted packages
                    deletedPackageIndices.Add(i);
                }
            }

            return(deletedPackageIndices);
        }