From 2355cba86bcbd0340cdcf519d9b42ae3f373ab90 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Thu, 18 Jan 2018 15:14:13 -0600 Subject: [PATCH] use generic Seed() method closes #183 per https://stackoverflow.com/questions/48330079/check-if-dbsett-is-empty --- src/FilterLists.Api/DbContextExtension.cs | 144 +++------------------- 1 file changed, 17 insertions(+), 127 deletions(-) diff --git a/src/FilterLists.Api/DbContextExtension.cs b/src/FilterLists.Api/DbContextExtension.cs index 039e5bf0d..e79ea6811 100644 --- a/src/FilterLists.Api/DbContextExtension.cs +++ b/src/FilterLists.Api/DbContextExtension.cs @@ -33,142 +33,32 @@ public static void EnsureSeeded(this FilterListsDbContext context) SeedJunctions(context); } - private static void SeedEntities(FilterListsDbContext context) + private static void SeedEntities(DbContext context) { - SeedLanguages(context); - SeedLicenses(context); - SeedMaintainers(context); - SeedSoftware(context); - SeedSyntaxes(context); - SeedFilterLists(context); + Seed(context); + Seed(context); + Seed(context); + Seed(context); + Seed(context); + Seed(context); } - private static void SeedJunctions(FilterListsDbContext context) + private static void SeedJunctions(DbContext context) { - SeedFilterListLanguages(context); - SeedFilterListMaintainers(context); - SeedForks(context); - SeedMerges(context); - SeedSoftwareSyntaxes(context); + Seed(context); + Seed(context); + Seed(context); + Seed(context); + Seed(context); } - //TODO: fix generic method to remove duplication of entity-specific methods - private static void Seed(DbContext context) + private static void Seed(DbContext dbContext) where T : class { - //if (context.?.Any()) return; + if (dbContext.Set().Any()) return; var rows = JsonConvert.DeserializeObject>( File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(T).Name + ".json")); - context.AddRange(rows); - context.SaveChanges(); + dbContext.AddRange(rows); + dbContext.SaveChanges(); } - - #region Entities - - private static void SeedFilterLists(FilterListsDbContext context) - { - if (context.FilterLists.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(FilterList).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedLanguages(FilterListsDbContext context) - { - if (context.Languages.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(Language).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedLicenses(FilterListsDbContext context) - { - if (context.Licenses.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(License).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedMaintainers(FilterListsDbContext context) - { - if (context.Maintainers.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(Maintainer).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedSoftware(FilterListsDbContext context) - { - if (context.Software.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(Software).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedSyntaxes(FilterListsDbContext context) - { - if (context.Syntaxes.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(Syntax).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - #endregion - - #region Junctions - - private static void SeedFilterListLanguages(FilterListsDbContext context) - { - if (context.FilterListLanguages.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText( - SeedDirectory + Path.DirectorySeparatorChar + typeof(FilterListLanguage).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedFilterListMaintainers(FilterListsDbContext context) - { - if (context.FilterListMaintainers.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(FilterListMaintainer).Name + - ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedForks(FilterListsDbContext context) - { - if (context.Forks.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(Fork).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedMerges(FilterListsDbContext context) - { - if (context.Merges.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(Merge).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - private static void SeedSoftwareSyntaxes(FilterListsDbContext context) - { - if (context.SoftwareSyntaxes.Any()) return; - var types = JsonConvert.DeserializeObject>( - File.ReadAllText(SeedDirectory + Path.DirectorySeparatorChar + typeof(SoftwareSyntax).Name + ".json")); - context.AddRange(types); - context.SaveChanges(); - } - - #endregion } } \ No newline at end of file