getIndexDefs method

TIndexDefs getIndexDefs(
  1. TIndexDefs indexDefs,
  2. TIndexOptions indexTypes
)

Implementation

TIndexDefs getIndexDefs(TIndexDefs indexDefs, TIndexOptions indexTypes) {
  indexDefs.updateDefs();
  final result = TIndexDefs(this);
  result.assign(indexDefs);
  var i = 0;
  while (i < result.count) {
    final opts = result[i].options;
    final intersection = indexTypes.intersection(opts);
    if (!(indexTypes.isEmpty && opts.isEmpty) && intersection.isEmpty) {
      result.delete(i);
      i--;
    } else {
      // ExtractStrings([';'],[' '],...): splits on ; and trims whitespace
      final indexFields = result[i]
          .fields
          .split(";")
          .map((s) => s.trim())
          .where((s) => s.isNotEmpty)
          .toList();
      for (final f in indexFields) {
        if (findField(f) == null) {
          result.delete(i);
          i--;
          break;
        }
      }
    }
    i++;
  }
  return result;
}