Another attempt
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Elias Jansson
2025-06-04 11:51:08 +02:00
parent 83a71a6f1d
commit 84c6c45a0b
4 changed files with 36 additions and 16 deletions

View File

@@ -104,7 +104,7 @@ namespace Aberwyn.Controllers
[Authorize(Roles = "Admin")] [Authorize(Roles = "Admin")]
public IActionResult ImportMealsFromProd() public IActionResult ImportMealsFromProd()
{ {
var prodService = MenuService.CreateWithConfig(_configuration, _env, useProdDb: true); var prodService = MenuService.CreateWithSetup(_env);
var devService = new MenuService(_context); // injicerad context används var devService = new MenuService(_context); // injicerad context används
var prodMeals = prodService.GetMealsDetailed(); var prodMeals = prodService.GetMealsDetailed();
@@ -184,7 +184,7 @@ namespace Aberwyn.Controllers
public IActionResult ImportBudgetFromProd() public IActionResult ImportBudgetFromProd()
{ {
// Hämta connection till produktion // Hämta connection till produktion
using var prodContext = ApplicationDbContextFactory.CreateWithConfig(_configuration, _env, useProdDb: true); using var prodContext = ApplicationDbContextFactory.CreateWithConfig(_env, true);
// Importera definitioner först // Importera definitioner först
var prodCategoryDefs = prodContext.BudgetCategoryDefinitions.ToList(); var prodCategoryDefs = prodContext.BudgetCategoryDefinitions.ToList();

View File

@@ -5,6 +5,7 @@ using Microsoft.Extensions.Configuration;
using System; using System;
using System.IO; using System.IO;
using System.Text.Json; using System.Text.Json;
using static Aberwyn.Data.SetupService;
namespace Aberwyn.Data namespace Aberwyn.Data
{ {
@@ -30,26 +31,18 @@ namespace Aberwyn.Data
return new ApplicationDbContext(optionsBuilder.Options); return new ApplicationDbContext(optionsBuilder.Options);
} }
public static ApplicationDbContext CreateWithConfig(IConfiguration config, IHostEnvironment env, bool useProdDb = false) public static ApplicationDbContext CreateWithConfig(IHostEnvironment env, bool useProdDb = false)
{ {
var setup = LoadSetup(); var setup = SetupLoader.Load(env);
var connStr = SetupLoader.GetConnectionString(setup);
var csBuilder = new MySqlConnector.MySqlConnectionStringBuilder
{
Server = setup.DbHost,
Port = (uint)setup.DbPort,
Database = setup.DbName,
UserID = setup.DbUser,
Password = setup.DbPassword,
AllowUserVariables = true
};
var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>(); var optionsBuilder = new DbContextOptionsBuilder<ApplicationDbContext>();
optionsBuilder.UseMySql(csBuilder.ConnectionString, new MySqlServerVersion(new Version(8, 0, 36))); optionsBuilder.UseMySql(connStr, new MySqlServerVersion(new Version(8, 0, 36)));
return new ApplicationDbContext(optionsBuilder.Options); return new ApplicationDbContext(optionsBuilder.Options);
} }
private static SetupSettings LoadSetup() private static SetupSettings LoadSetup()
{ {
var basePath = Directory.GetCurrentDirectory(); var basePath = Directory.GetCurrentDirectory();

View File

@@ -2,7 +2,7 @@
using Aberwyn.Models; using Aberwyn.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System.Globalization; using System.Globalization;
using static Aberwyn.Data.SetupService;
namespace Aberwyn.Data namespace Aberwyn.Data
{ {
@@ -47,6 +47,15 @@ public class MenuService
var context = new ApplicationDbContext(builder.Options); var context = new ApplicationDbContext(builder.Options);
return new MenuService(context); return new MenuService(context);
} }
public static MenuService CreateWithSetup(IHostEnvironment env)
{
var setup = SetupLoader.Load(env);
var connStr = SetupLoader.GetConnectionString(setup);
var builder = new DbContextOptionsBuilder<ApplicationDbContext>();
builder.UseMySql(connStr, ServerVersion.AutoDetect(connStr));
var context = new ApplicationDbContext(builder.Options);
return new MenuService(context);
}
public void UpdateWeeklyMenu(MenuViewModel model) public void UpdateWeeklyMenu(MenuViewModel model)
{ {

View File

@@ -3,6 +3,9 @@ using System.Text.Json;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using System.IO;
using System.Text.Json;
using Microsoft.Extensions.Hosting;
namespace Aberwyn.Data namespace Aberwyn.Data
{ {
@@ -50,6 +53,21 @@ namespace Aberwyn.Data
return services.BuildServiceProvider(); return services.BuildServiceProvider();
} }
public static class SetupLoader
{
public static SetupSettings Load(IHostEnvironment env)
{
var path = Path.Combine(env.ContentRootPath, "infrastructure", "setup.json");
var json = File.ReadAllText(path);
return JsonSerializer.Deserialize<SetupSettings>(json)!;
}
public static string GetConnectionString(SetupSettings setup)
{
return $"server={setup.DbHost};port={setup.DbPort};database={setup.DbName};user={setup.DbUser};password={setup.DbPassword}";
}
}
} }
} }