obtieneEsquema method

Future<Map<String, dynamic>> obtieneEsquema({
  1. required String valor,
  2. String? clave = "data.coleccion",
  3. ModeToWork? modeToWork,
  4. String versionColeccion = '1',
})

Funcion utilizada para obtener esquema de una coleccion como parametro requiere el nombre de la coleccion y opcionalmente la version de la coleccion si no se envia la version se toma por defecto la version 1

Implementation

Future<Map<String, dynamic>> obtieneEsquema({
  required String valor,
  String? clave = "data.coleccion",
  ModeToWork? modeToWork,
  String versionColeccion = '1',
}) async {
  try {
    Map<String, dynamic> jsonEsquema = <String, dynamic>{};
    final consulta =
        '{ "\$and": [{ "$clave": "$valor"}, {"data.versionColeccion": "$versionColeccion"}]}';

    ///Se hace esto para eliminar el prefijo data. ya que para las busquedas en la BD local no se utiliza
    final claveBD = valor.replaceAll('${EnvironmentApiRest.data}.', '');
    final argsLocalBD = [
      [claveBD, 'versionColeccion'],
      ['=', '='],
      [valor, versionColeccion]
    ];

    final response = await leeById<ColeccionObjBox>(
        coleccion: EnvironmentApiRest.colecciones,
        consulta: consulta,
        argsLocalBD: argsLocalBD,
        modeToWork: modeToWork,
        modelo: ColeccionObjBox());
    final coleccion = response[EnvironmentApiRest.data] ?? ColeccionObjBox();

    if (coleccion.idServer.isEmpty) {
      throw 'No se encontro el esquema';
    }
    try {
      jsonEsquema =
          jsonDecode(jsonDecode(coleccion.data)[EnvironmentApiRest.esquema]);
    } catch (e) {
      jsonEsquema = <String, dynamic>{};
    }
    return jsonEsquema;
  } catch (e) {
    logDebug('Error al obtener el esquema de la coleccion $valor error: $e');
    return {};
  }
}