FEAT: DB basics

This commit is contained in:
2026-04-16 14:21:58 +02:00
parent 5794c3fbb5
commit dc6043ed13
16 changed files with 286 additions and 42 deletions

View File

@@ -0,0 +1,11 @@
using TicketAppIncrArchi.Domain.Entities;
public interface ITicketRepository
{
Task<Ticket?> GetByIdAsync(Guid id);
Task<List<Ticket>> GetAllAsync();
Task<Ticket> AddAsync(Ticket ticket);
Task DeleteAsync(Guid id);
}

View File

@@ -1,14 +1,13 @@
using System.Data.Entity.Infrastructure;
using TicketAppIncrArchi.Application.DTO;
using TicketAppIncrArchi.Domain.Entities;
namespace TicketAppIncrArchi.Application.Interfaces;
public interface ITicketService
{
{
//TODO: implement Repository
IEnumerable<TicketResponse> GetAll();
Result<TicketResponse> GetById(Guid id);
Result<CreateTicketResponse> Create(CreateTicketRequest request);
Task<IEnumerable<TicketResponse>> GetAll();
Task<Result<TicketResponse>> GetById(Guid id);
Task<Result<CreateTicketResponse>> Create(CreateTicketRequest request);
}

View File

@@ -11,10 +11,19 @@ namespace TicketAppIncrArchi.Application.Services;
public class TicketService : ITicketService
{
private readonly List<Ticket> _tickets = new();
public IEnumerable<TicketResponse> GetAll()
private readonly ITicketRepository _repo;
//private readonly List<Ticket> _tickets = new();
public TicketService(ITicketRepository repo)
{
var result =_tickets.Select(t => new TicketResponse
_repo = repo;
}
public async Task<IEnumerable<TicketResponse>> GetAll()
{
var tickets = await _repo.GetAllAsync();
var result =tickets.Select(t => new TicketResponse
{
Id = t.Id,
Title = t.Title,
@@ -23,29 +32,27 @@ public class TicketService : ITicketService
return result;
}
public Result<TicketResponse> GetById(Guid id)
public async Task<Result<TicketResponse>> GetById(Guid id)
{
//TODO: should use result
var found = _tickets.FirstOrDefault(ticket => ticket.Id == id);
if (found == null)
var ticket = await _repo.GetByIdAsync(id);
if (ticket == null)
{
return Result<TicketResponse>.Fail("No Ticket Found");
}
var ticketResponse = new TicketResponse
{
Id = found.Id,
Title = found.Title,
Description = found.Description,
Id = ticket.Id,
Title = ticket.Title,
Description = ticket.Description,
};
return Result<TicketResponse>.Ok(found);
return Result<TicketResponse>.Ok(ticketResponse);
}
public Result<CreateTicketResponse> Create(CreateTicketRequest request)
public async Task<Result<CreateTicketResponse>> Create(CreateTicketRequest request)
{
if (string.IsNullOrWhiteSpace(request.Title))
@@ -53,25 +60,21 @@ public class TicketService : ITicketService
var ticket = new Ticket
{
Id = Guid.NewGuid(),
Title = request.Title,
Description = request.Description
};
//send creation to repo
_tickets.Add(ticket);
Ticket resultTicket = await _repo.AddAsync(ticket);
var ticketResponse = new CreateTicketResponse
{
Id = ticket.Id,
Title = ticket.Title,
Description = ticket.Description
Id = resultTicket.Id,
Title = resultTicket.Title,
Description = resultTicket.Description
};
return Result<CreateTicketResponse>.Ok(ticketResponse);
return Result<CreateTicketResponse>.Ok(ticketResponse);
}
}