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); }
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); }