private static void CreateLeaderboardsView(TheGameDbContext dbContext, string viewName, string schemaName, string resourceFileName, ILogger <IHost> logger) { logger?.LogInformation("Creating Leaderboards view object in the database. Please wait..."); var assembly = Assembly.GetEntryAssembly(); var assemblyName = assembly.FullName.Substring(0, assembly.FullName.IndexOf(',')); var resource = assembly.GetManifestResourceStream($"{assemblyName}.Resources.{resourceFileName}"); var resourceStream = new StreamReader(resource); var sql = resourceStream.ReadToEnd(); resourceStream.Close(); dbContext.Database.ExecuteSqlRaw($"IF OBJECT_ID('{schemaName}.{viewName}') IS NOT NULL BEGIN DROP VIEW {schemaName}.{viewName} END"); dbContext.Database.ExecuteSqlRaw($"CREATE VIEW {viewName} AS {sql}"); logger?.LogInformation("Leaderboards view object creation successful!"); }
internal static void SeedDatabase(TheGameDbContext dbContext, ILogger <IHost> logger) { bool commitChanges = false; if (!dbContext.Players.Any()) { logger?.LogInformation("Seeding database with player data. Please wait..."); var now = DateTimeOffset.UtcNow; var players = new List <Player>(); for (int i = 1; i <= 1000; i++) { players.Add(new Player { Name = $"Player {i}", Nickname = $"player{i}", RegistrationDate = now, GameMatchesPlayers = new List <GameMatchesPlayers>() }); } dbContext.Players.AddRange(players); commitChanges = true; } if (!dbContext.Games.Any()) { logger?.LogInformation("Seeding database with game data. Please wait..."); var now = DateTimeOffset.UtcNow; var games = new List <Game>(); for (int i = 1; i <= 20; i++) { games.Add(new Game { Title = $"Game {i}", RegistrationDate = now }); } dbContext.Games.AddRange(games); commitChanges = true; } if (commitChanges) { dbContext.SaveChanges(); logger?.LogInformation("Database seed successful!"); } }