45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
using AZKiServer.Models;
|
|
|
|
using MongoDB.Driver;
|
|
|
|
using System.Collections.Frozen;
|
|
|
|
namespace AZKiServer.Services;
|
|
|
|
public class MediaService(IMongoDatabase db)
|
|
{
|
|
public readonly IMongoCollection<MediaEntry> _entries = db.GetCollection<MediaEntry>("media");
|
|
public async Task<FrozenSet<string>> GetExistingFilePathsAsync(CancellationToken cancellationToken = default)
|
|
{
|
|
var files = await _entries.Find("{}").Project(m => m.Filepath).ToListAsync(cancellationToken);
|
|
return files.ToFrozenSet();
|
|
}
|
|
|
|
public async Task AddMediaBulkAsync(List<MediaEntry> entries, CancellationToken cancellationToken = default)
|
|
{
|
|
await _entries.InsertManyAsync(entries, cancellationToken: cancellationToken);
|
|
}
|
|
|
|
public async Task<List<MediaEntry>> GetEntriesInRangeAsync(MediaType mediaType, DateTime from, DateTime to)
|
|
{
|
|
var filter = Builders<MediaEntry>.Filter
|
|
.And([
|
|
Builders<MediaEntry>.Filter.BitsAnySet(m => m.Type, (long)mediaType),
|
|
Builders<MediaEntry>.Filter.Gte(m => m.Date, from),
|
|
Builders<MediaEntry>.Filter.Lte(m => m.Date, to),
|
|
]);
|
|
|
|
return _entries.Find(filter).ToList();
|
|
|
|
|
|
}
|
|
|
|
public class IndexCreation : BackgroundService
|
|
{
|
|
protected override Task ExecuteAsync(CancellationToken stoppingToken)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
}
|