Files
PracticeCalendar/PracticeCalendar.Infrastructure/Persistence/ApplicationDbContextInitialiser.cs
T
farcasclaudiu 8d68f1b7a1 test domain events (#2)
* test domain events

* cleanup
2022-10-10 12:06:08 +03:00

68 lines
1.8 KiB
C#

using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using PracticeCalendar.Domain.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeCalendar.Infrastructure.Persistence
{
public class ApplicationDbContextInitialiser
{
private readonly ILogger<ApplicationDbContextInitialiser> logger;
private readonly ApplicationDbContext context;
public ApplicationDbContextInitialiser(ILogger<ApplicationDbContextInitialiser> logger,
ApplicationDbContext context)
{
this.logger = logger;
this.context = context;
}
public async Task InitialiseAsync()
{
try
{
if (context.Database.IsSqlite())
{
await context.Database.MigrateAsync();
}
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred while initialising the database.");
throw;
}
}
public async Task SeedAsync()
{
try
{
await TrySeedAsync();
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred while seeding the database.");
throw;
}
}
public async Task TrySeedAsync()
{
// Default data
// Seed, if necessary
if (!context.PracticeEvents.Any())
{
context.PracticeEvents.Add(new PracticeEvent("Event 1", "Event 1 desc",
DateTime.Now.AddHours(-1),
DateTime.Now.AddHours(1)));
await context.SaveChangesAsync();
}
}
}
}