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