Los objetos query nos van a permitir consultar la información de nuestros servicios.
Vamos a crear la clase para obtener los datos de las caducidades, con todas las funciones básicas.
CaducidadDAO.cspublic class CaducidadDAO{private readonly CaducaContext contexto;private readonly LocService localizacion;private readonly AccesoDAO<Caducidad> caducidadDAO;public CustomError customError;public CaducidadDAO(CaducaContext context, LocService locService){this.contexto = context;this.localizacion = locService;caducidadDAO = new AccesoDAO<Caducidad>(context, locService);}public async Task<List<Caducidad>> ObtenerTodoAsync(){return await caducidadDAO.ObtenerTodoAsync();}public async Task<Caducidad> ObtenerPorIdAsync(int id){return await caducidadDAO.ObtenerPorIdAsync(id);}public async Task<bool> AgregarAsync(Caducidad caducidad){List<IRegla> reglas = new List<Core.IRegla>();if (await caducidadDAO.AgregarAsync(caducidad, reglas))return true;else{customError = caducidadDAO.customError;return false;}}public async Task<bool> ModificarAsync(Cliente cliente){List<IRegla> reglas = new List<Core.IRegla>();if (await clienteDAO.ModificarAsync(cliente, reglas))return true;else{customError = clienteDAO.customError;return false;}}public async Task<bool> BorraAsync(int id){var caducidad = await ObtenerPorIdAsync(id);if (caducidad == null){customError = new CustomError(404, String.Format(this.localizacion.GetLocalizedHtmlString("NotFound"),"La Caducidad"), "Id");return false;}contexto.Caducidad.Remove(caducidad);await contexto.SaveChangesAsync();return true;}}
Vamos a crear nuestro objeto CaducidadQuery el cual es muy parecido a nuestros objetos Type, la clase hereda de ObjectGraphType, solo que aquí describimos nuestra tabla y no cada campo y obtenemos la información de la tabla con el método ObtenerTodo.
CaducidadQuery.csusing CaducaRest.DAO;using CaducaRest.GraphQL.Types;using CaducaRest.Models;using CaducaRest.Resources;using GraphQL.Types;using Microsoft.Extensions.DependencyInjection;namespace CaducaRest.GraphQL.Query{/// <summary>/// Los objetos query en GraphQL permiten consultar información/// </summary>public class CaducidadQuery: ObjectGraphType{/// <summary>/// Constructor de la clase Query para consultar las caducidades/// </summary>/// <param name="caducaContext">Objeto para el acceso a la bd</param>/// <param name="locService">Objeto para mensajes de error de acuerdo al idioma</param>public CaducidadQuery( LocService locService){Field<ListGraphType<CaducidadType>>("caducidades",resolve: context =>{using var scope = context.RequestServices.CreateScope();var services = scope.ServiceProvider;var caducaContext = services.GetRequiredService<CaducaContext>();CaducidadDAO caducidadDAO = new CaducidadDAO(caducaContext,locService);return caducidadDAO.ObtenerTodoAsync();});}}}
Puedes ver a continuación el link oficial