mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
Add cleanup of initialize mongodb, ensure indexes are created for compound searching
This commit is contained in:
@@ -42,11 +42,16 @@ public class ImdbMongoDbService
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
// Create index for PrimaryTitle
|
||||
var indexPrimaryTitle = Builders<ImdbEntry>.IndexKeys.Ascending(e => e.PrimaryTitle);
|
||||
var modelPrimaryTitle = new CreateIndexModel<ImdbEntry>(indexPrimaryTitle);
|
||||
_imdbCollection.Indexes.CreateOne(modelPrimaryTitle);
|
||||
// Create compound index for PrimaryTitle, TitleType, and StartYear
|
||||
var indexKeysDefinition = Builders<ImdbEntry>.IndexKeys
|
||||
.Text(e => e.PrimaryTitle)
|
||||
.Ascending(e => e.TitleType)
|
||||
.Ascending(e => e.StartYear);
|
||||
|
||||
var createIndexOptions = new CreateIndexOptions { Background = true };
|
||||
var indexModel = new CreateIndexModel<ImdbEntry>(indexKeysDefinition, createIndexOptions);
|
||||
|
||||
_imdbCollection.Indexes.CreateOne(indexModel);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
namespace Metadata.Features.ImportImdbData;
|
||||
|
||||
public class ImportImdbDataRequestHandler(ILogger<ImportImdbDataRequestHandler> logger, ImdbMongoDbService mongoDbService)
|
||||
public class ImportImdbDataRequestHandler(ILogger<ImportImdbDataRequestHandler> logger, ImdbMongoDbService mongoDbService, JobConfiguration configuration)
|
||||
{
|
||||
private const int BatchSize = 50_000;
|
||||
|
||||
public async Task<DeleteDownloadedImdbDataRequest> Handle(ImportImdbDataRequest request, CancellationToken cancellationToken)
|
||||
{
|
||||
logger.LogInformation("Importing Downloaded IMDB data from {FilePath}", request.FilePath);
|
||||
@@ -18,7 +16,7 @@ public class ImportImdbDataRequestHandler(ILogger<ImportImdbDataRequestHandler>
|
||||
using var reader = new StreamReader(request.FilePath);
|
||||
using var csv = new CsvReader(reader, config);
|
||||
|
||||
var channel = Channel.CreateBounded<ImdbEntry>(new BoundedChannelOptions(BatchSize)
|
||||
var channel = Channel.CreateBounded<ImdbEntry>(new BoundedChannelOptions(configuration.InsertBatchSize)
|
||||
{
|
||||
FullMode = BoundedChannelFullMode.Wait,
|
||||
});
|
||||
@@ -53,7 +51,7 @@ public class ImportImdbDataRequestHandler(ILogger<ImportImdbDataRequestHandler>
|
||||
movieData,
|
||||
};
|
||||
|
||||
while (batch.Count < BatchSize && channel.Reader.TryRead(out var nextMovieData))
|
||||
while (batch.Count < configuration.InsertBatchSize && channel.Reader.TryRead(out var nextMovieData))
|
||||
{
|
||||
batch.Add(nextMovieData);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user