using AobaCore.Models; using Microsoft.Extensions.Hosting; using MongoDB.Bson; using MongoDB.Bson.Serialization; using MongoDB.Bson.Serialization.Serializers; using MongoDB.Driver; namespace AobaCore.Services; public class AobaIndexCreationService(IMongoDatabase db): BackgroundService { private readonly IMongoCollection _media = db.GetCollection("media"); protected override async Task ExecuteAsync(CancellationToken stoppingToken) { BsonSerializer.RegisterSerializer(new EnumSerializer(BsonType.String)); var mediaId = Builders.IndexKeys.Ascending(m => m.MediaId); var mediaIdModel = new CreateIndexModel(mediaId, new CreateIndexOptions { Name = "Media", Unique = true, Background = true }); var textKeys = Builders.IndexKeys .Text(m => m.Filename) .Text(m => m.Ext) .Text(m => m.Tags); var textModel = new CreateIndexModel(textKeys, new CreateIndexOptions { Name = "Text", Background = true }); await _media.EnsureIndexAsync(mediaIdModel); await _media.EnsureIndexAsync(textModel); } }