Ejemplo n.º 1
0
 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);
Ejemplo n.º 2
0
 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);
        }
Ejemplo n.º 4
0
 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());
        }
Ejemplo n.º 10
0
 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
     );
Ejemplo n.º 11
0
 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();
        }
Ejemplo n.º 15
0
        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"));
        }
Ejemplo n.º 16
0
 protected ValueTask <Operation <T> > UpdateOperationTask(BuildFilter <T> filter, BuildUpdate <T> update)
 => new(UpdateOperation(filter, update));
Ejemplo n.º 17
0
 protected Operation <T> UpdateOperation(BuildFilter <T> filter, BuildUpdate <T> update)
 => new UpdateOperation <T>(filter(Builders <T> .Filter), update(Builders <T> .Update));
Ejemplo n.º 18
0
 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);