Beispiel #1
0
        private static void UnAssignWorkerFromAllAssigned(Worker worker, MongoConnection mongoConnection, string optionName)
        {
            IMongoCollection <OptionBase> datas = mongoConnection.Database.GetCollection <OptionBase>(optionName);

            FilterDefinition <OptionBase> filter = Builders <OptionBase> .Filter.Eq(data => data.Schedule.WorkerId, worker._id);

            UpdateDefinition <OptionBase> update = Builders <OptionBase> .Update.Set(option => option.Schedule.WorkerId, null);

            Task <UpdateResult> result = datas.UpdateManyAsync(filter, update);

            MongoDataHelper.WaitForTaskOrThrowTimeout(result);
        }
Beispiel #2
0
        public static void AssignWorkerToAllUnassigned <TOptionType>(Worker worker, MongoConnection mongoConnection)
            where TOptionType : OptionBase
        {
            IMongoCollection <OptionBase> datas = mongoConnection.Database.GetCollection <OptionBase>(typeof(TOptionType).Name);

            FilterDefinition <OptionBase> filter = Builders <OptionBase> .Filter.Eq(data => data.Schedule.WorkerId, null);

            UpdateDefinition <OptionBase> update = Builders <OptionBase> .Update.Set(option => option.Schedule.WorkerId, worker._id);

            Task <UpdateResult> result = datas.UpdateManyAsync(filter, update);

            MongoDataHelper.WaitForTaskOrThrowTimeout(result);
        }
Beispiel #3
0
        public static Stub ReadFirst(MongoConnection connection, WebCampaign webCampaign)
        {
            SortDefinition <Stub> sortDefinition = Builders <Stub> .Sort.Ascending("ImportAttempt").Ascending("PostTime");

            Expression <Func <Stub, bool> > filter = option => option.WebCampaignId == webCampaign._id;

            IMongoCollection <Stub>  stubCollection = connection.Database.GetCollection <Stub>(typeof(Stub).Name);
            IFindFluent <Stub, Stub> stubFind       = stubCollection.Find(filter).Sort(sortDefinition).Limit(1);

            Task <Stub> stubTask = stubFind.FirstOrDefaultAsync();

            return(MongoDataHelper.GetValueOrThrowTimeout(stubTask));
        }
Beispiel #4
0
        public static Stub ReadFirst(MongoConnection connection)
        {
            SortDefinition <Stub> sortDefinition = Builders <Stub> .Sort.Ascending("ImportAttempt").Ascending("PostTime");

            BsonDocument filter = new BsonDocument();

            IMongoCollection <Stub>  stubCollection = connection.Database.GetCollection <Stub>(typeof(Stub).Name);
            IFindFluent <Stub, Stub> stubFind       = stubCollection.Find(filter).Sort(sortDefinition).Limit(1);

            Task <Stub> stubTask = stubFind.FirstOrDefaultAsync();

            return(MongoDataHelper.GetValueOrThrowTimeout(stubTask));
        }
Beispiel #5
0
        public void AssignWorkerIfNoWorkerAssigned(Worker worker, MongoConnection mongoConnection)
        {
            IMongoCollection <OptionBase> datas = mongoConnection.Database.GetCollection <OptionBase>(GetType().Name);

            FilterDefinition <OptionBase> filter = Builders <OptionBase> .Filter.Eq(data => data.Schedule.WorkerId, null);

            filter = filter & Builders <OptionBase> .Filter.Eq(data => data._id, _id);

            UpdateDefinition <OptionBase> update = Builders <OptionBase> .Update.Set(option => option.Schedule.WorkerId, worker._id);

            Task <UpdateResult> result = datas.UpdateOneAsync(filter, update);

            MongoDataHelper.WaitForTaskOrThrowTimeout(result);
        }
Beispiel #6
0
        public static long ClearOldResults(MongoConnection mongoConnection, DateTime maxAllowedEndDate)
        {
            IMongoCollection <OptionResult> datas = mongoConnection.Database.GetCollection <OptionResult>(typeof(OptionResult).Name);

            FilterDefinition <OptionResult> deleteFilter = Builders <OptionResult> .Filter.Lt(optionResult => optionResult.EndTime, maxAllowedEndDate);

            Task <DeleteResult> deleteTask = datas.DeleteManyAsync(deleteFilter);

            DeleteResult deleteResult = MongoDataHelper.GetValueOrThrowTimeout(deleteTask);

            if (deleteResult.IsAcknowledged == false)
            {
                return(0);
            }

            return(deleteResult.DeletedCount);
        }