adding
This commit is contained in:
+62
@@ -0,0 +1,62 @@
|
||||
using LCU.API.Internal.DocumentLib.Containers;
|
||||
using LCU.API.Internal.DocumentLib.Utilities;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using MongoDB.Driver;
|
||||
|
||||
namespace OwnerNumberMigration.Logging;
|
||||
|
||||
public delegate IAttributeMigration AttributeMigrationLoggingDecoratorFactory
|
||||
(
|
||||
IAttributeMigration migration,
|
||||
string attributeName,
|
||||
string destinationAttributeName
|
||||
);
|
||||
|
||||
public class AttributeMigrationLoggingDecorator : IAttributeMigration
|
||||
{
|
||||
private readonly IAttributeMigration _migration;
|
||||
private readonly ILogger _logger;
|
||||
private readonly IMongoCollection<DocumentInformation> _documents;
|
||||
private readonly string _attributeName;
|
||||
private readonly string _destinationAttributeName;
|
||||
private readonly IDocumentFilterFactory _filterFactory;
|
||||
|
||||
public AttributeMigrationLoggingDecorator
|
||||
(
|
||||
IAttributeMigration migration,
|
||||
ILogger logger,
|
||||
IMongoCollectionFactory collectionFactory,
|
||||
string attributeName,
|
||||
string destinationAttributeName,
|
||||
IDocumentFilterFactory filterFactory
|
||||
)
|
||||
{
|
||||
_migration = migration;
|
||||
_logger = logger;
|
||||
_documents = collectionFactory.GetCollection<DocumentInformation>();
|
||||
_attributeName = attributeName;
|
||||
_destinationAttributeName = destinationAttributeName;
|
||||
_filterFactory = filterFactory;
|
||||
}
|
||||
|
||||
public async Task Migrate(CancellationToken cancellationToken)
|
||||
{
|
||||
var countToMigration = await _documents.CountDocumentsAsync
|
||||
(
|
||||
_filterFactory.AppliesForMigrationFilterFactory(_attributeName, _destinationAttributeName),
|
||||
cancellationToken: cancellationToken
|
||||
);
|
||||
_logger.LogInformation
|
||||
(
|
||||
"starting to migration {attribute} with {count} documents",
|
||||
_attributeName,
|
||||
countToMigration
|
||||
);
|
||||
var start = DateTime.Now;
|
||||
|
||||
await _migration.Migrate(cancellationToken);
|
||||
|
||||
var duration = DateTime.Now - start;
|
||||
_logger.LogInformation("finished migration for {attribute} in {elapsed}", _attributeName, duration);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user