leeById<T extends ColeccionBase> method

Future<Map<String, dynamic>> leeById<T extends ColeccionBase>({
  1. required String coleccion,
  2. required String consulta,
  3. required List<List<String>> argsLocalBD,
  4. QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  5. ModeToWork? modeToWork,
  6. T? modelo,
})

Funcion utilizada para leer un registro x su id o alguna clave unica

  • coleccion - es la coleccion que se quiere leer
  • consulta - Es la consulta que se ejecuta en el Servidor
  • argsLocalBD - Son los parametros utilizados para la consulta en el dispositivo Ejemplo de una consulta x id de Ciudadano:
final consulta = '{ "idColeccion": "$idColeccion" }';
final response = await apiRestDb.leeById(
      coleccion: "ciudadano",
      consulta: consulta,
      argsIsar: [['idServer'],['='],[idColeccion]]);
if (response.containsKey(EnvironmentApiRest.dataOk)) {
  data = response[EnvironmentApiRest.data];
}

final consulta = '{"data.coleccion" : "localidad"}';
final response = await apiRestDb.leeById(
      coleccion: "colecciones",
      consulta: consulta,
      argsLocalBD: [['coleccion'],['='],["localidad"]]);
if (response.containsKey(EnvironmentApiRest.dataOk)) {
  data = response[EnvironmentApiRest.data];
}

La respuesta de esta funcion es un mapa que si existe algun problema devuelve un mapa de este tipo el mensaje de error es un ejemplo

return {
   EnvironmentApiRest.dataNOk: 'NOK',
   EnvironmentApiRest.error: 'ER004 ${error.toString()}'
};

ahora si la consulta sale bien retorna un mapa de este tipo donde data es un objeto de tipo ColeccionObjBox

return {
  EnvironmentApiRest.dataOk: 'OK',
  EnvironmentApiRest.data: data
};

Implementation

Future<Map<String, dynamic>> leeById<T extends ColeccionBase>({
  required String coleccion,
  required String consulta,
  required List<List<String>> argsLocalBD,
  QueryPropertiesWrapper<T>? queryPropertiesWrapper,
  ModeToWork? modeToWork,
  T? modelo,
}) async {
  return FlutterUtilsProvider.ejecutaPeticion(() async {
    try {
      modelo ??= ColeccionObjBox() as T;
      modeToWork ??= this.modeToWork;

      final data = await _obtenerDataById(
          coleccion: coleccion,
          consulta: consulta,
          argsLocalBD: argsLocalBD,
          queryPropertiesWrapper: queryPropertiesWrapper,
          modeToWork: modeToWork!,
          modelo: modelo!);

      if (data.isEmpty) {
        throw 'No se encontro el registro que se quiere leer ${EnvironmentApiRest.registroInExistente}';
      }

      return {
        EnvironmentApiRest.dataOk: 'OK',
        EnvironmentApiRest.data: data.first
      };
    } catch (e) {
      return {
        EnvironmentApiRest.dataNOk: 'NOK',
        EnvironmentApiRest.error: e.toString()
      };
    }
  });
}