genericSelectGenerator function

Future genericSelectGenerator({
  1. required String dbApiUrl,
  2. required String selectName,
  3. dynamic filter,
  4. Map<String, dynamic>? dbFilter,
  5. bool showDescription = false,
  6. List descriptionFields = const ["name"],
})

Generic select generator that mimics the React version

Implementation

Future<dynamic> genericSelectGenerator({
  required String dbApiUrl,
  required String selectName,
  dynamic filter,
  Map<String, dynamic>? dbFilter,
  bool showDescription = false,
  List<dynamic> descriptionFields = const ["name"],
}) async {
  if (SelectCache.has(selectName)) {
    if (gceSelDebug) {
      logDebug('>> genericSelectGenerator | Using cache for: $selectName');
    }
    return _processRows(
      SelectCache.get(selectName),
      filter: filter,
      showDescription: showDescription,
      descriptionFields: descriptionFields,
    );
  }

  HttpUtilities api = HttpUtilities();
  Map<String, dynamic> accessKeysListing = {};
  if (dbFilter != null) {
    accessKeysListing.addAll(dbFilter);
  }

  try {
    final response = await api.httpsCall(
      'GET',
      dbApiUrl,
      {},
      {},
      accessKeysListing,
    );
    if (response['error'] == true) {
      return response['error_message'];
    }

    final data = response['resultset'] ?? [];
    SelectCache.put(selectName, data);

    return _processRows(
      data,
      filter: filter,
      showDescription: showDescription,
      descriptionFields: descriptionFields,
    );
  } catch (e) {
    logErrorRaw('genericSelectGenerator | error: $e');
    return e.toString();
  }
}