package danielcortes.xyz.models.estado_resultado;

import java.time.YearMonth;
import java.util.List;
import java.util.Optional;

public interface EstadoResultadoDAO {

  /**
   * Obtiene todos los EstadoResultado
   * @return Lista con los EstadoResultado
   */
  List<EstadoResultado> getAll();

  /**
   * Obtiene un EstadoResultado por su Id
   * @param id El id del EstadoResultado
   * @return Optional que puede contener un EstadoResultado o puede estar vacio
   */
  Optional<EstadoResultado> getById(int id);

  /**
   * Obtiene un EstadoResultado por su mes
   * @param month El mes del EstadoResultado
   * @return Optional que puede contener un EstadoResultado o puede estar vacio
   */
  Optional<EstadoResultado> getByMonth(YearMonth month);

  /**
   * Guarda un EstadoResultado y le otorga un id
   * @param estadoResultado EstadoResultado a guardar
   */
  void insert(EstadoResultado estadoResultado);

  /**
   * Actualiza un EstadoResultado
   * @param estadoResultado EstadoResultado a actualizar
   */
  void update(EstadoResultado estadoResultado);

  /**
   * Elimina un EstadoResultado
   * @param estadoResultado EstadoResultado a eliminar
   */
  void delete(EstadoResultado estadoResultado);

}
