using System.Runtime.CompilerServices; using System.Text.Json; using MongoDB.Driver; using server.Models; namespace server.Persistence.Seed { public class Seeder { private readonly IMongoClient _client; private readonly IMongoDatabase _database; private readonly IConfiguration _config; private readonly IMongoCollection _seasons; private readonly IMongoCollection _episodes; public Seeder() { _config = new ConfigurationBuilder() .AddJsonFile("appsettings.json") .Build(); _client = new MongoClient(_config.GetSection("MongoDBSettings:ConnectionString").Value); _database = _client.GetDatabase(_config.GetSection("MongoDBSettings:DatabaseName").Value); _seasons = _database.GetCollection(_config.GetSection("MongoDBSettings:SeasonsCollection").Value); _episodes = _database.GetCollection(_config.GetSection("MongoDBSettings:EpisodesCollection").Value); } public async Task SeedSeasonsAsync() { await _seasons.DeleteManyAsync(season => true); var seasonsFilePath = Path.Combine(AppContext.BaseDirectory, "Persistence/Seed/Data/seasons.json"); var seasonsJson = File.ReadAllText(seasonsFilePath); var seasons = JsonSerializer.Deserialize>(seasonsJson); if(seasons != null) { await _seasons.InsertManyAsync(seasons); } } public async Task SeedEpisodesAsync() { await _episodes.DeleteManyAsync(episode => true); var episodesFilePath = Path.Combine(AppContext.BaseDirectory, "Persistence/Seed/Data/episodes.json"); var episodesJson = File.ReadAllText(episodesFilePath); var episodes = JsonSerializer.Deserialize>(episodesJson); if (episodes != null) { await _episodes.InsertManyAsync(episodes); } } } }