Para realizar las operaciones POST, PUT y DELETE se realizan mediante Mutations. Agregamos una carpeta Mutation a nuestro proyecto y una clase CaducidadMutation
Método para agregar
En graphQL los servicios para agregar se realizan de la siguiente manera:
Para el método agregar vamos a realizar lo siguiente a nuestra clase CaducidadMutation.
Agrega un método AddCaducidad que recibirá igual como [Service] nuestro contexto (caducaContext) el LocService y un parámetro llamado caducidad del Modelo Caducidad y regresará un Objeto de la clase Caducidad.
Inicializamos nuestro objeto CaducidadDAO y llamamos al método AgregarAsync.
Si todo es correcto regresamos el objeto caducidad.
CaducidadMutation.cs
using System.Threading.Tasks;
using CaducaRest.DAO;
using CaducaRest.Models;
using CaducaRest.Resources;
using HotChocolate;
namespace CaducaRest.GraphQL.HotChocolate;
/// <summary>
/// Funciones para agregar, borrar o modificar
/// </summary>
public class CaducidadMutation
{
public async Task<Caducidad> AddCaducidad(
[Service] CaducaContext caducaContext,
[Service] LocService locService,
Caducidad caducidad)
{
CaducidadDAO caducidadDAO = new CaducidadDAO(caducaContext, locService);
var correcto = await caducidadDAO.AgregarAsync(caducidad);
if (correcto)
return caducidad;
else
return new Caducidad();
}
}
Método para borrar
Para borrar es similar, regresare un mensaje indicando que la información se borro correctamente. Se regresa un string (StringGraphType) y se recibe como parámetro el id que es del tipo entero (IntGraphType) del registro a borrar.
CaducidadMutation.cs
public async Task<string> DeleteCaducidad(
[Service] CaducaContext caducaContext,
[Service] LocService locService,
int id)
{
CaducidadDAO caducidadDAO = new CaducidadDAO(caducaContext, locService);
var correcto = await caducidadDAO.BorraAsync(id);
if (correcto)
return $"La caducidad con el id: {id} fue borrada correctamente";
else
return caducidadDAO.customError.Message;
}
}
Método para actualizar
El método actualizar es una combinación de los métodos anteriores para pasar como parámetros el id del registro que deseamos modificar y los datos del registro a modificar.
CaducidadMutation.cs
public async Task<Caducidad> UpdateCaducidad(
[Service] CaducaContext caducaContext,
[Service] LocService locService,
Caducidad caducidad,
int id)
{
if (id != caducidad.Id)
{
return null;
}
CaducidadDAO caducidadDAO = new CaducidadDAO(caducaContext, locService);
var correcto = await caducidadDAO.ModificarAsync(caducidad);
if (correcto)
return caducidad;
else
return null;
}
Configurando GraphQL
Por último lo agregamos a nuestra clase Startup con la función AddMutation
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddGraphQLServer()
.AddQueryType<Query>().AddProjections().AddFiltering().AddSorting()
.AddMutationType<GraphQL.HotChocolate.CaducidadMutation>();