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<List<ServerProject>> GetAllProjectsAsync()
{
using var ctx = new AppDbContext();
return await ctx.ServerProjects.OrderByDescending(p => p.UpdatedAt).ToListAsync();
}
public async Task<ServerProject?> GetProjectAsync(int id)
{
using var ctx = new AppDbContext();
return await ctx.ServerProjects.FindAsync(id);
}
public async Task<ServerProject> 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();
}
}
}