leeById<T extends ColeccionBase> method
Funcion utilizada para leer un registro x su id o alguna clave unica
coleccion- es la coleccion que se quiere leerconsulta- Es la consulta que se ejecuta en el ServidorargsLocalBD- 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()
};
}
});
}