using GsConfigTool.Data; using GsConfigTool.Models; using Microsoft.EntityFrameworkCore; namespace GsConfigTool.Services; public class DatabaseService { public async Task InitializeAsync() { using var ctx = new AppDbContext(); await ctx.Database.EnsureCreatedAsync(); } public async Task> GetAllProjectsAsync() { using var ctx = new AppDbContext(); return await ctx.ServerProjects.OrderByDescending(p => p.UpdatedAt).ToListAsync(); } public async Task GetProjectAsync(int id) { using var ctx = new AppDbContext(); return await ctx.ServerProjects.FindAsync(id); } public async Task SaveProjectAsync(ServerProject project) { using var ctx = new AppDbContext(); project.UpdatedAt = DateTime.UtcNow; if (project.Id == 0) { project.CreatedAt = DateTime.UtcNow; ctx.ServerProjects.Add(project); } else { ctx.ServerProjects.Update(project); } await ctx.SaveChangesAsync(); return project; } public async Task DeleteProjectAsync(int id) { using var ctx = new AppDbContext(); var project = await ctx.ServerProjects.FindAsync(id); if (project != null) { ctx.ServerProjects.Remove(project); await ctx.SaveChangesAsync(); } } }