tokenizaSubConsulta method

Map<String, dynamic> tokenizaSubConsulta(
  1. Map<String, dynamic> esquema,
  2. String clave,
  3. dynamic value
)

Tokeniza una subconsulta para buscar en un campo específico. Si el campo es numérico, se busca por igualdad. Si el campo es de texto, se busca por coincidencia parcial. clave: Clave del campo a buscar. value: Valor de búsqueda.

Implementation

Map<String, dynamic> tokenizaSubConsulta(
    Map<String, dynamic> esquema, String clave, dynamic value) {
  TipoDato tipoDato =
      FlutterUtilsProvider.obtenerTipoDatoEnEsquema(esquema, clave);
  dynamic valor =
      FlutterUtilsProvider.convertirValorPorTipo(esquema, clave, value);
  switch (tipoDato) {
    case TipoDato.decimal:
      return {FlutterUtilsProvider.agregaPrefijoData(clave): valor};
    case TipoDato.entero:
      return {FlutterUtilsProvider.agregaPrefijoData(clave): valor};
    case TipoDato.fecha || TipoDato.fechaHora:
      return {
        FlutterUtilsProvider.agregaPrefijoData(clave): {'\$date': valor}
      };
    default:
      if (valor is List) {
        return {
          FlutterUtilsProvider.agregaPrefijoData(clave): {'\$in': valor}
        };
      }
      return {
        FlutterUtilsProvider.agregaPrefijoData(clave): {
          '\$regex': '.*$value.*',

          ///Este parametro es para que la busqueda sea insensible a mayusculas y minusculas
          '\$options': 'i'
        }
      };
  }
}