Tmj Josiel. Eu estou de olho nas promos de Black Friday pra renovar.
Se me permite, deixo mais uma dica pra melhorar/destravar alguns códigos.
Use o phind.com, só pedir um exemplo de codigo com a versão mais recente.
Ex: Um Crud Csharp de lista de tarefas usando Minimal APIs com .NET8
// TODO 2023
// Organização do projeto
- Models
- Todo.cs
- Data
- TodoDbContext.cs
- Routes
- TodoRoutes.cs
- wwwroot
- appsettings.json
- Program.cs
// Trecho de código para criar as rotas
public static class TodoRoutes
{
public static void MapTodoRoutes(this WebApplication app, TodoDb db)
{
// Listar todas as tarefas
var todoItems = app.MapGroup("/todoitems");
todoItems.MapGet("/", async () => await db.Todos.ToListAsync());
// Listar todas as tarefas que foram completadas
todoItems.MapGet("/complete", async () =>
await db.Todos.Where(t => t.IsComplete).ToListAsync());
// Listar a tarefa por ID
todoItems.MapGet("/{id}", async (int id) =>
await db.Todos.FindAsync(id)
is Todo todo
? Results.Ok(todo)
: Results.NotFound());
// Criar uma nova tarefa
todoItems.MapPost("/", async (Todo todo) =>
{
db.Todos.Add(todo);
await db.SaveChangesAsync();
return Results.Created($"/todoitems/{todo.Id}", todo);
});
// Atualizar uma tarefa informando o ID
todoItems.MapPut("/{id}", async (int id, Todo inputTodo) =>
{
var todo = await db.Todos.FindAsync(id);
if (todo is null) return Results.NotFound();
todo.Name = inputTodo.Name;
todo.IsComplete = inputTodo.IsComplete;
await db.SaveChangesAsync();
return Results.NoContent();
});
// Apagar uma tarefa informando o ID
todoItems.MapDelete("/{id}", async (int id) =>
{
if (await db.Todos.FindAsync(id) is Todo todo)
{
db.Todos.Remove(todo);
await db.SaveChangesAsync();
return Results.NoContent();
}
return Results.NotFound();
});
}
}
// Program.cs - Iniciando a aplicação
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapTodoRoutes(new TodoDb(builder.Configuration.GetConnectionString("TodoDb")));
app.Run();
Bons estudos e bons códigos! :)