mirror of https://github.com/abpframework/abp.git
50 changed files with 132 additions and 606 deletions
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class MySQLInboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseMySQL<TDbContext>(this InboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(ISqlRawDbContextEventInbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class MySQLOutboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseMySQL<TDbContext>(this OutboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(ISqlRawDbContextEventOutbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface IOracleDbContextEventInbox<TDbContext> : IDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
@ -1,6 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface IOracleDbContextEventOutbox<TDbContext> : IDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
} |
|
||||
@ -1,47 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.Extensions.Options; |
|
||||
using Volo.Abp.EventBus.Distributed; |
|
||||
using Volo.Abp.Timing; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class OracleDbContextEventInbox<TDbContext> : DbContextEventInbox<TDbContext>, IOracleDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
public OracleDbContextEventInbox( |
|
||||
IDbContextProvider<TDbContext> dbContextProvider, |
|
||||
IClock clock, |
|
||||
IOptions<AbpEventBusBoxesOptions> eventBusBoxesOptions) |
|
||||
: base(dbContextProvider, clock, eventBusBoxesOptions) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task MarkAsProcessedAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"UPDATE \"{tableName}\" SET \"Processed\" = '1', \"ProcessedTime\" = TO_DATE('{Clock.Now}', 'yyyy-mm-dd hh24:mi:ss') WHERE \"Id\" = HEXTORAW('{GuidToOracleType(id)}')"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteOldEventsAsync() |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
var timeToKeepEvents = Clock.Now - EventBusBoxesOptions.WaitTimeToDeleteProcessedInboxEvents; |
|
||||
|
|
||||
var sql = $"DELETE FROM \"{tableName}\" WHERE \"Processed\" = '1' AND \"CreationTime\" < TO_DATE('{timeToKeepEvents}', 'yyyy-mm-dd hh24:mi:ss')"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
protected virtual string GuidToOracleType(Guid id) |
|
||||
{ |
|
||||
return BitConverter.ToString(id.ToByteArray()).Replace("-", "").ToUpper(); |
|
||||
} |
|
||||
} |
|
||||
@ -1,30 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class OracleDbContextEventOutbox<TDbContext> : DbContextEventOutbox<TDbContext>, IOracleDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
public OracleDbContextEventOutbox(IDbContextProvider<TDbContext> dbContextProvider) |
|
||||
: base(dbContextProvider) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = (IHasEventOutbox)await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.OutgoingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"DELETE FROM \"{tableName}\" WHERE \"Id\" = HEXTORAW('{GuidToOracleType(id)}')"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
protected virtual string GuidToOracleType(Guid id) |
|
||||
{ |
|
||||
return BitConverter.ToString(id.ToByteArray()).Replace("-", "").ToUpper(); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class OracleInboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseOracle<TDbContext>(this InboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(IOracleDbContextEventInbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class OracleOutboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseOracle<TDbContext>(this OutboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(IOracleDbContextEventOutbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface IOracleDbContextEventInbox<TDbContext> : IDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
@ -1,6 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface IOracleDbContextEventOutbox<TDbContext> : IDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
} |
|
||||
@ -1,47 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.Extensions.Options; |
|
||||
using Volo.Abp.EventBus.Distributed; |
|
||||
using Volo.Abp.Timing; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class OracleDbContextEventInbox<TDbContext> : DbContextEventInbox<TDbContext>, IOracleDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
public OracleDbContextEventInbox( |
|
||||
IDbContextProvider<TDbContext> dbContextProvider, |
|
||||
IClock clock, |
|
||||
IOptions<AbpEventBusBoxesOptions> eventBusBoxesOptions) |
|
||||
: base(dbContextProvider, clock, eventBusBoxesOptions) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task MarkAsProcessedAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"UPDATE \"{tableName}\" SET \"Processed\" = '1', \"ProcessedTime\" = TO_DATE('{Clock.Now}', 'yyyy-mm-dd hh24:mi:ss') WHERE \"Id\" = HEXTORAW('{GuidToOracleType(id)}')"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteOldEventsAsync() |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
var timeToKeepEvents = Clock.Now - EventBusBoxesOptions.WaitTimeToDeleteProcessedInboxEvents; |
|
||||
|
|
||||
var sql = $"DELETE FROM \"{tableName}\" WHERE \"Processed\" = '1' AND \"CreationTime\" < TO_DATE('{timeToKeepEvents}', 'yyyy-mm-dd hh24:mi:ss')"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
protected virtual string GuidToOracleType(Guid id) |
|
||||
{ |
|
||||
return BitConverter.ToString(id.ToByteArray()).Replace("-", "").ToUpper(); |
|
||||
} |
|
||||
} |
|
||||
@ -1,30 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class OracleDbContextEventOutbox<TDbContext> : DbContextEventOutbox<TDbContext>, IOracleDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
public OracleDbContextEventOutbox(IDbContextProvider<TDbContext> dbContextProvider) |
|
||||
: base(dbContextProvider) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = (IHasEventOutbox)await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.OutgoingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"DELETE FROM \"{tableName}\" WHERE \"Id\" = HEXTORAW('{GuidToOracleType(id)}')"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
protected virtual string GuidToOracleType(Guid id) |
|
||||
{ |
|
||||
return BitConverter.ToString(id.ToByteArray()).Replace("-", "").ToUpper(); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class OracleInboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseOracle<TDbContext>(this InboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(IOracleDbContextEventInbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class OracleOutboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseOracle<TDbContext>(this OutboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(IOracleDbContextEventOutbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,7 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface IPostgreSqlDbContextEventInbox<TDbContext> : IDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
@ -1,6 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface IPostgreSqlDbContextEventOutbox<TDbContext> : IDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
} |
|
||||
@ -1,42 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.Extensions.Options; |
|
||||
using Volo.Abp.EventBus.Distributed; |
|
||||
using Volo.Abp.Timing; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class PostgreSqlDbContextEventInbox<TDbContext> : DbContextEventInbox<TDbContext>, IPostgreSqlDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
public PostgreSqlDbContextEventInbox( |
|
||||
IDbContextProvider<TDbContext> dbContextProvider, |
|
||||
IClock clock, |
|
||||
IOptions<AbpEventBusBoxesOptions> eventBusBoxesOptions) |
|
||||
: base(dbContextProvider, clock, eventBusBoxesOptions) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task MarkAsProcessedAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"UPDATE \"{tableName}\" SET \"Processed\" = '1', \"ProcessedTime\" = '{Clock.Now}' WHERE \"Id\" = '{id}'"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteOldEventsAsync() |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
var timeToKeepEvents = Clock.Now - EventBusBoxesOptions.WaitTimeToDeleteProcessedInboxEvents; |
|
||||
|
|
||||
var sql = $"DELETE FROM \"{tableName}\" WHERE \"Processed\" = '1' AND \"CreationTime\" < '{timeToKeepEvents}'"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
} |
|
||||
@ -1,24 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class PostgreSqlDbContextEventOutbox<TDbContext> : DbContextEventOutbox<TDbContext>, IPostgreSqlDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
public PostgreSqlDbContextEventOutbox(IDbContextProvider<TDbContext> dbContextProvider) : base(dbContextProvider) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public async override Task DeleteAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = (IHasEventOutbox)await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.OutgoingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"DELETE FROM \"{tableName}\" WHERE \"Id\" = '{id}'"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class PostgreSqlInboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseNpgsql<TDbContext>(this InboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(IPostgreSqlDbContextEventInbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class PostgreSqlOutboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseNpgsql<TDbContext>(this OutboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(IPostgreSqlDbContextEventOutbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class SqlServerInboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseSqlServer<TDbContext>(this InboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(ISqlRawDbContextEventInbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class SqlServerOutboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseSqlServer<TDbContext>(this OutboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(ISqlRawDbContextEventOutbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class SqliteInboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseSqlite<TDbContext>(this InboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(ISqlRawDbContextEventInbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,12 +0,0 @@ |
|||||
using Volo.Abp.EventBus.Distributed; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public static class SqliteOutboxConfigExtensions |
|
||||
{ |
|
||||
public static void UseSqlite<TDbContext>(this OutboxConfig outboxConfig) |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
outboxConfig.ImplementationType = typeof(ISqlRawDbContextEventOutbox<TDbContext>); |
|
||||
} |
|
||||
} |
|
||||
@ -1,6 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface ISqlRawDbContextEventInbox<TDbContext> : IDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
} |
|
||||
@ -1,6 +0,0 @@ |
|||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public interface ISqlRawDbContextEventOutbox<TDbContext> : IDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
} |
|
||||
@ -1,42 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Microsoft.Extensions.Options; |
|
||||
using Volo.Abp.EventBus.Distributed; |
|
||||
using Volo.Abp.Timing; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class SqlRawDbContextEventInbox<TDbContext> : DbContextEventInbox<TDbContext>, ISqlRawDbContextEventInbox<TDbContext> |
|
||||
where TDbContext : IHasEventInbox |
|
||||
{ |
|
||||
public SqlRawDbContextEventInbox( |
|
||||
IDbContextProvider<TDbContext> dbContextProvider, |
|
||||
IClock clock, |
|
||||
IOptions<AbpEventBusBoxesOptions> eventBusBoxesOptions) |
|
||||
: base(dbContextProvider, clock, eventBusBoxesOptions) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task MarkAsProcessedAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"UPDATE {tableName} SET Processed = '1', ProcessedTime = '{Clock.Now}' WHERE Id = '{id.ToString().ToUpper()}'"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteOldEventsAsync() |
|
||||
{ |
|
||||
var dbContext = await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.IncomingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
var timeToKeepEvents = Clock.Now - EventBusBoxesOptions.WaitTimeToDeleteProcessedInboxEvents; |
|
||||
|
|
||||
var sql = $"DELETE FROM {tableName} WHERE Processed = '1' AND CreationTime < '{timeToKeepEvents}'"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
} |
|
||||
@ -1,25 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.EntityFrameworkCore; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace Volo.Abp.EntityFrameworkCore.DistributedEvents; |
|
||||
|
|
||||
public class SqlRawDbContextEventOutbox<TDbContext> : DbContextEventOutbox<TDbContext>, ISqlRawDbContextEventOutbox<TDbContext> |
|
||||
where TDbContext : IHasEventOutbox |
|
||||
{ |
|
||||
public SqlRawDbContextEventOutbox(IDbContextProvider<TDbContext> dbContextProvider) |
|
||||
: base(dbContextProvider) |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public override async Task DeleteAsync(Guid id) |
|
||||
{ |
|
||||
var dbContext = (IHasEventOutbox)await DbContextProvider.GetDbContextAsync(); |
|
||||
var tableName = dbContext.OutgoingEvents.EntityType.GetSchemaQualifiedTableName(); |
|
||||
|
|
||||
var sql = $"DELETE FROM {tableName} WHERE Id = '{id.ToString().ToUpper()}'"; |
|
||||
await dbContext.Database.ExecuteSqlRawAsync(sql); |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue