Add initial seed data
This commit is contained in:
parent
f9dfe68409
commit
add80a3521
5539
backend/LeedsBeerQuest.API/LeedsBeerQuest.API/Data/Migrations/20221030005028_Seed_Data.Designer.cs
generated
Normal file
5539
backend/LeedsBeerQuest.API/LeedsBeerQuest.API/Data/Migrations/20221030005028_Seed_Data.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,7 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Globalization;
|
||||
using CsvHelper;
|
||||
using LeedsBeerQuest.API.Data.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LeedsBeerQuest.API.Data.Seed;
|
||||
|
||||
@ -15,5 +18,98 @@ public class LeedsBeerQuestSeeder
|
||||
|
||||
public void Seed()
|
||||
{
|
||||
IEnumerable<LeedsBeerQuestCSV>? lbqCSV;
|
||||
|
||||
using (var reader = new StreamReader("../leedsbeerquest.csv"))
|
||||
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
|
||||
{
|
||||
lbqCSV = csv.GetRecords<LeedsBeerQuestCSV>().ToList();
|
||||
}
|
||||
|
||||
var tags = getTags(lbqCSV).ToList();
|
||||
var categories = getCategories(lbqCSV).ToList();
|
||||
|
||||
_modelBuilder.Entity<Tag>().HasData(tags);
|
||||
_modelBuilder.Entity<Category>().HasData(categories);
|
||||
|
||||
var venues = new List<Venue>();
|
||||
|
||||
var venueIndex = 1;
|
||||
foreach (var venue in lbqCSV)
|
||||
{
|
||||
venues.Add(new Venue
|
||||
{
|
||||
Id = venueIndex,
|
||||
Name = venue.name,
|
||||
CategoryId = categories.Single(c => c.Name == venue.category).Id,
|
||||
Url = venue.url,
|
||||
DateAttended = venue.date,
|
||||
Excerpt = venue.excerpt,
|
||||
Thumbnail = venue.thumbnail,
|
||||
Latitude = venue.lat,
|
||||
Longitude = venue.lng,
|
||||
Address = venue.address,
|
||||
Phone = venue.phone,
|
||||
Twitter = venue.twitter,
|
||||
StarsBeer = venue.stars_beer,
|
||||
StarsAtmosphere = venue.stars_atmosphere,
|
||||
StarsAmenities = venue.stars_amenities,
|
||||
StarsValue = venue.stars_value,
|
||||
});
|
||||
|
||||
venueIndex++;
|
||||
}
|
||||
|
||||
_modelBuilder.Entity<Venue>().HasData(venues);
|
||||
}
|
||||
|
||||
private IEnumerable<Tag> getTags(IEnumerable<LeedsBeerQuestCSV> csvData)
|
||||
{
|
||||
var tags = csvData.Select(d => d.tags).Distinct();
|
||||
var tagId = 0;
|
||||
foreach (var tag in tags)
|
||||
{
|
||||
tagId++;
|
||||
yield return new Tag
|
||||
{
|
||||
Id = tagId,
|
||||
Name = tag
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private IEnumerable<Category> getCategories(IEnumerable<LeedsBeerQuestCSV> csvData)
|
||||
{
|
||||
var categories = csvData.Select(d => d.category).Distinct();
|
||||
var categoryId = 0;
|
||||
foreach (var category in categories)
|
||||
{
|
||||
categoryId++;
|
||||
yield return new Category
|
||||
{
|
||||
Id = categoryId,
|
||||
Name = category
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
private class LeedsBeerQuestCSV
|
||||
{
|
||||
public string name { get; set; }
|
||||
public string category { get; set; }
|
||||
public string url { get; set; }
|
||||
public DateTime date { get; set; }
|
||||
public string excerpt { get; set; }
|
||||
public string thumbnail { get; set; }
|
||||
public decimal lat { get; set; }
|
||||
public decimal lng { get; set; }
|
||||
public string address { get; set; }
|
||||
public string? phone { get; set; }
|
||||
public string? twitter { get; set; }
|
||||
public decimal stars_beer { get; set; }
|
||||
public decimal stars_atmosphere { get; set; }
|
||||
public decimal stars_amenities { get; set; }
|
||||
public decimal stars_value { get; set; }
|
||||
public string tags { get; set; }
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CsvHelper" Version="29.0.0" />
|
||||
<PackageReference Include="EntityFramework" Version="6.4.4" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="6.0.10">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
|
Loading…
Reference in New Issue
Block a user