getIndexForFields method

TIndexDef? getIndexForFields(
  1. String fields,
  2. bool caseInsensitive
)

Implementation

TIndexDef? getIndexForFields(String fields, bool caseInsensitive) {
  TIndexDef? last;
  final fieldsLen = fields.length;
  for (var i = 0; i < count; i++) {
    final result = this[i];
    final descOrExpr = result.options.contains(TIndexOption.ixDescending) ||
        result.options.contains(TIndexOption.ixExpression);
    if (!descOrExpr &&
        (!caseInsensitive ||
            result.options.contains(TIndexOption.ixCaseInsensitive)) &&
        fields.toUpperCase() == result.fields.toUpperCase()) {
      return result;
    } else if (fieldsLen <= result.fields.length &&
        fields.toUpperCase() ==
            result.fields.substring(0, fieldsLen).toUpperCase() &&
        (result.fields.length == fieldsLen ||
            result.fields[fieldsLen] == ';')) {
      if (last == null || last.fields.length > result.fields.length) {
        last = result;
      }
    }
  }
  return last;
}