Repositories / GSConfigTool / GsConfigTool / Services / DatabaseService.cs
DatabaseService.cs 1.4 KB
git clone https://xarmina.eu/git/gsconfigtool Raw Download
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();
        }
    }
}
24Fire Wuppertaler Tafel Romeo