diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo.Abp/BackgroundJobs/EntityFrameworkCore/EfCoreBackgroundJobRepository.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo.Abp/BackgroundJobs/EntityFrameworkCore/EfCoreBackgroundJobRepository.cs index 670c1a6ab4..28d86f589a 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo.Abp/BackgroundJobs/EntityFrameworkCore/EfCoreBackgroundJobRepository.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.EntityFrameworkCore/Volo.Abp/BackgroundJobs/EntityFrameworkCore/EfCoreBackgroundJobRepository.cs @@ -23,8 +23,9 @@ namespace Volo.Abp.BackgroundJobs.EntityFrameworkCore public async Task> GetWaitingListAsync(int maxResultCount) { + var now = Clock.Now; return await DbSet - .Where(t => !t.IsAbandoned && t.NextTryTime <= Clock.Now) + .Where(t => !t.IsAbandoned && t.NextTryTime <= now) .OrderByDescending(t => t.Priority) .ThenBy(t => t.TryCount) .ThenBy(t => t.NextTryTime) diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsBsonClassMap.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsBsonClassMap.cs index 32d8bec976..246635e66d 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsBsonClassMap.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsBsonClassMap.cs @@ -1,4 +1,5 @@ -using Volo.Abp.Threading; +using MongoDB.Bson.Serialization; +using Volo.Abp.Threading; namespace Volo.Abp.BackgroundJobs.MongoDB { @@ -10,11 +11,10 @@ namespace Volo.Abp.BackgroundJobs.MongoDB { OneTimeRunner.Run(() => { - //Register mappings here. Example: - //BsonClassMap.RegisterClassMap(map => - //{ - // map.AutoMap(); - //}); + BsonClassMap.RegisterClassMap(map => + { + map.AutoMap(); + }); }); } } diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContext.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContext.cs index 1e40d9ba17..fccbdbcbf0 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContext.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContext.cs @@ -1,16 +1,15 @@ -using Volo.Abp.Data; +using MongoDB.Driver; +using Volo.Abp.Data; using Volo.Abp.MongoDB; namespace Volo.Abp.BackgroundJobs.MongoDB { - [ConnectionStringName("BackgroundJobs")] + [ConnectionStringName("AbpBackgroundJobs")] public class BackgroundJobsMongoDbContext : AbpMongoDbContext, IBackgroundJobsMongoDbContext { public static string CollectionPrefix { get; set; } = BackgroundJobsConsts.DefaultDbTablePrefix; - /* Add mongo collections here. Example: - * public IMongoCollection Questions => Collection(); - */ + public IMongoCollection BackgroundJobs { get; set; } protected override void CreateModel(IMongoModelBuilder modelBuilder) { diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/AbpUsersMongoDbContextExtensions.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs similarity index 67% rename from modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/AbpUsersMongoDbContextExtensions.cs rename to modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs index 2487b0b9bb..637d17a9d2 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/AbpUsersMongoDbContextExtensions.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbContextExtensions.cs @@ -1,10 +1,9 @@ using System; -using Volo.Abp; using Volo.Abp.MongoDB; namespace Volo.Abp.BackgroundJobs.MongoDB { - public static class AbpUsersMongoDbContextExtensions + public static class BackgroundJobsMongoDbContextExtensions { public static void ConfigureBackgroundJobs( this IMongoModelBuilder builder, @@ -15,6 +14,11 @@ namespace Volo.Abp.BackgroundJobs.MongoDB var options = new BackgroundJobsMongoModelBuilderConfigurationOptions(); optionsAction?.Invoke(options); + + builder.Entity(b => + { + b.CollectionName = options.CollectionPrefix + "BackgroundJobs"; + }); } } } \ No newline at end of file diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbModule.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbModule.cs index 6c034beb45..6b6ad25979 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbModule.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/BackgroundJobsMongoDbModule.cs @@ -16,9 +16,7 @@ namespace Volo.Abp.BackgroundJobs.MongoDB context.Services.AddMongoDbContext(options => { - /* Add custom repositories here. Example: - * options.AddRepository(); - */ + options.AddRepository(); }); context.Services.AddAssemblyOf(); diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/IBackgroundJobsMongoDbContext.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/IBackgroundJobsMongoDbContext.cs index 37d506b2b8..45ebd9c2ae 100644 --- a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/IBackgroundJobsMongoDbContext.cs +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/IBackgroundJobsMongoDbContext.cs @@ -1,13 +1,12 @@ -using Volo.Abp.Data; +using MongoDB.Driver; +using Volo.Abp.Data; using Volo.Abp.MongoDB; namespace Volo.Abp.BackgroundJobs.MongoDB { - [ConnectionStringName("BackgroundJobs")] + [ConnectionStringName("AbpBackgroundJobs")] public interface IBackgroundJobsMongoDbContext : IAbpMongoDbContext { - /* Define mongo collections here. Example: - * IMongoCollection Questions { get; } - */ + IMongoCollection BackgroundJobs { get; } } } diff --git a/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/MongoBackgroundJobRepository.cs b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/MongoBackgroundJobRepository.cs new file mode 100644 index 0000000000..78a1238aa8 --- /dev/null +++ b/modules/background-jobs/src/Volo.Abp.BackgroundJobs.MongoDB/Volo.Abp/BackgroundJobs/MongoDB/MongoBackgroundJobRepository.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Threading.Tasks; +using MongoDB.Driver; +using MongoDB.Driver.Linq; +using Volo.Abp.Domain.Repositories.MongoDB; +using Volo.Abp.MongoDB; +using Volo.Abp.Timing; + +namespace Volo.Abp.BackgroundJobs.MongoDB +{ + public class MongoBackgroundJobRepository : MongoDbRepository, IBackgroundJobRepository + { + protected IClock Clock { get; } + + public MongoBackgroundJobRepository( + IMongoDbContextProvider dbContextProvider, + IClock clock) + : base(dbContextProvider) + { + Clock = clock; + } + + public async Task> GetWaitingListAsync(int maxResultCount) + { + var now = Clock.Now; + return await GetMongoQueryable() + .Where(t => !t.IsAbandoned && t.NextTryTime <= now) + .OrderByDescending(t => t.Priority) + .ThenBy(t => t.TryCount) + .ThenBy(t => t.NextTryTime) + .Take(maxResultCount) + .ToListAsync(); + } + } +}