public static Task <long> UpdateManyDocuments <T>( this IMongoDatabase database, BuildFilter <T> filter, BuildUpdate <T> update, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>().UpdateManyDocuments(filter, update, cancellationToken);
public static Task <long> DeleteManyDocuments <T>( this IMongoDatabase database, MongoCollectionName collectionName, BuildFilter <T> filter, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>(collectionName).DeleteManyDocuments(filter, cancellationToken);
private IBuildMetric Calculate(List <Build> builds, BuildFilter buildFilter, IBuildMetric buildMetric) { var filteredBuilds = new FilterBuilds(builds).Filter(buildFilter); var fromDate = GetFromDate(buildFilter.NumberOfWeeks); for (var x = 0; x < buildFilter.NumberOfWeeks; x++) { var startDate = fromDate.AddDays(x * 7); buildMetric.SetDate(startDate); var buildsForDateRange = new FilterBuilds(filteredBuilds).GetBuildsForOneWeekFrom(startDate); foreach (var build in new BuildType().GetDistinctBuildTypes(buildsForDateRange)) { buildMetric.Add(_build, new FilterBuilds(buildsForDateRange).GetBuildsFor( new BuildGroup(build.BuildTypeId))); } buildMetric.Calculate(); } return(buildMetric); }
public static Task UpdateDocument <T>( this IMongoDatabase database, BuildFilter <T> filter, BuildUpdate <T> update, Action <UpdateOptions>?configure, CancellationToken cancellationToken = default ) where T : Document => database.GetDocumentCollection <T>().UpdateDocument(filter, update, configure, cancellationToken);
public void Check20KeyWrongTypeBad() { //SETUP //ATTEMPT var ex = Assert.Throws <InvalidOperationException>(() => BuildFilter.CreateFilter <Post>(new [] { _postIdProp }, new object[] { "AAA" })); //VERIFY }
public void Check21WrongNumberOfKeysBad() { //SETUP //ATTEMPT var ex = Assert.Throws <ArgumentException>(() => BuildFilter.CreateFilter <Post>(new[] { _postIdProp }, new object[] { 123, 321 })); //VERIFY }
public List <BuildStabilityMetric> CalculateBuildStability(BuildFilter buildFilter, IBuildMetric buildMetric) { var builds = _build.GetBuilds(); var buildMetrics = (BuildStabilityMetric)Calculate(builds, buildFilter, buildMetric); return(buildMetrics .GetResults() .OrderBy(result => result.Date) .ToList()); }
public List <BuildDeploymentMetric> CalculateBuildDeployment(BuildFilter buildFilter, IBuildMetric buildMetric) { var builds = _build.GetSuccessfulBuildStepsContaining("Production"); var buildMetrics = (BuildDeploymentMetric)Calculate(builds, buildFilter, buildMetric); return(buildMetrics .GetResults() .OrderBy(result => result.Date) .ToList()); }
public List <BuildThroughputMetric> CalculateBuildThroughput(BuildFilter buildFilter, IBuildMetric buildMetric) { var builds = _build.GetSuccessfulBuildStepsContaining("_01"); var buildMetrics = (BuildThroughputMetric)Calculate(builds, buildFilter, buildMetric); return(buildMetrics .GetResults() .OrderBy(result => result.Date) .ToList()); }
public static Task <long> UpdateManyDocuments <T>( this IMongoCollection <T> collection, BuildFilter <T> filter, BuildUpdate <T> update, CancellationToken cancellationToken = default ) where T : Document => collection.UpdateManyDocuments( filter(Builders <T> .Filter), update(Builders <T> .Update), null, cancellationToken );
public static Task UpdateDocument <T>( this IMongoCollection <T> collection, BuildFilter <T> filter, BuildUpdate <T> update, Action <UpdateOptions>?configure, CancellationToken cancellationToken = default ) where T : Document => collection.UpdateDocument( filter(Builders <T> .Filter), update(Builders <T> .Update), configure, cancellationToken );
public void Check03ReturnIQueryableOneStringKeyOk() { //SETUP Expression <Func <Post, bool> > filter; //ATTEMPT using (new TimerToConsole("Build filter")) filter = BuildFilter.CreateFilter <Post>(new[] { _titleIdProp }, new object[] { "BBB" }); List <Post> result; using (new TimerToConsole("Run query")) result = _posts.Where(filter).ToList(); //VERIFY result.Count.ShouldEqual(1); }
public void Check05ReturnIQueryableTwoKeysOk() { //SETUP Expression <Func <Post, bool> > filter; //ATTEMPT using (new TimerToConsole("Build filter")) { filter = BuildFilter.CreateFilter <Post>(new PropertyInfo[] { _postIdProp, _blogIdProp }, new object[] { 123, 321 }); //query = _posts.Where(x => x.PostId == 123 && x.BlogId == 321); } List <Post> result; using (new TimerToConsole("Run query")) result = _posts.Where(filter).ToList(); //VERIFY result.Count.ShouldEqual(1); }
public void FixtureSetup() { var post1 = new Post() { PostId = 123, BlogId = 321, Title = "AAA" }; var post2 = new Post() { PostId = 234, BlogId = 432, Title = "BBB" }; _posts = (new List <Post> { post1, post2 }).AsQueryable(); _postIdProp = typeof(Post).GetProperty("PostId"); _blogIdProp = typeof(Post).GetProperty("BlogId"); _titleIdProp = typeof(Post).GetProperty("Title"); //There seems to be a setup cost. Once the query is built once then its fast. var filter = BuildFilter.CreateFilter <Post>(new PropertyInfo[] { _postIdProp }, new object[] { 123 }); var cache = _posts.Where(filter).ToList(); }
public ISuccessOrErrors <TDto> Get <TDto>(params object[] identifiers) where TDto : DtoBase <TContext, TEntity, TDto>, new() { var status = new SuccessOrErrors <TDto>(); if (!new TDto().AllowedActions.HasFlag(ActionFlags.Get)) { return(status.AddSingleError("Dto is not allowed for this kind of action")); } var entity = dbContext.Set <TEntity>() .Where(BuildFilter.CreateFilter <TEntity>(dbContext.GetKeyProperties <TEntity>(), identifiers)) .SingleOrDefault(); var dto = DTORepositoryContainer.Mapper.Map <TDto>(entity, opts => { opts.Items["ActionFlags"] = ActionFlags.Get; opts.Items["DbContext"] = dbContext; }); if (dto != null) { return(status.SetSuccessWithResult(dto, "Success")); } return(status.AddSingleError("Not found")); }
protected ValueTask <Operation <T> > UpdateOperationTask(BuildFilter <T> filter, BuildUpdate <T> update) => new(UpdateOperation(filter, update));
protected Operation <T> UpdateOperation(BuildFilter <T> filter, BuildUpdate <T> update) => new UpdateOperation <T>(filter(Builders <T> .Filter), update(Builders <T> .Update));
public static Task <long> DeleteManyDocuments <T>( this IMongoCollection <T> collection, BuildFilter <T> filter, CancellationToken cancellationToken = default ) where T : Document => collection.DeleteManyDocuments(filter(Builders <T> .Filter), cancellationToken);