diff --git a/backend/Models/db/MovieDB.cs b/backend/Models/db/MovieDB.cs index 960db65..eb8dbd6 100644 --- a/backend/Models/db/MovieDB.cs +++ b/backend/Models/db/MovieDB.cs @@ -1,10 +1,12 @@ #nullable disable using Microsoft.EntityFrameworkCore; +using CsvHelper.Configuration; +using System.Globalization; namespace backend; -[PrimaryKey(nameof(Id))] +// [PrimaryKey(nameof(Id))] public class MovieDB { public int Id { get; set; } @@ -18,4 +20,14 @@ public class MovieDB public string Type { get; set; } public string Poster { get; set; } +} + + +public class MovieDBMap : ClassMap +{ + public MovieDBMap() + { + AutoMap(CultureInfo.InvariantCulture); + Map(m => m.Id).Ignore(); + } } \ No newline at end of file diff --git a/backend/Program.cs b/backend/Program.cs index 4510a88..ca33779 100644 --- a/backend/Program.cs +++ b/backend/Program.cs @@ -1,4 +1,10 @@ using Microsoft.EntityFrameworkCore; +using System.Globalization; +using System.IO; +using System.Collections.Generic; +using System.Linq; +using CsvHelper; +using backend; var builder = WebApplication.CreateBuilder(args); @@ -14,6 +20,26 @@ var configuration = builder.Configuration; builder.Services.AddDbContext(options => options.UseNpgsql(configuration.GetConnectionString("DefaultConnection"))); +var services = builder.Services.BuildServiceProvider(); +using (var scope = services.CreateScope()) +{ + var context = scope.ServiceProvider.GetRequiredService(); + context.Database.EnsureCreated(); + + // Check if movies are already inserted to avoid duplicate insertion + if (!context.Movies.Any()) + { + using (var reader = new StreamReader("public/DbMockData.csv")) + using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture)) + { + csv.Context.RegisterClassMap(); + var records = csv.GetRecords().ToList(); + context.Movies.AddRange(records); + context.SaveChanges(); + } + } +} + var app = builder.Build(); // Configure the HTTP request pipeline. diff --git a/backend/backend.csproj b/backend/backend.csproj index 2f0ded7..74e77a3 100644 --- a/backend/backend.csproj +++ b/backend/backend.csproj @@ -7,6 +7,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive