generateEntityIndexesSQLs method

List<CreateIndexSQL> generateEntityIndexesSQLs(
  1. EntityHandler entityHandler,
  2. String table, {
  3. String? fieldColumn(
    1. String fieldName
    )?,
})

The CREATE INDEX SQLs of the EntityIndexes of the entityHandler's entity, in table.

  • fieldColumn: a field's actual column in an existing table (e.g. a legacy creationDate column), null for the generated one (normalizeColumnName). The index name is always from the generated columns (the same as in CREATE TABLE).

Implementation

List<CreateIndexSQL> generateEntityIndexesSQLs(
  EntityHandler entityHandler,
  String table, {
  String? Function(String fieldName)? fieldColumn,
}) {
  var q = dialect.elementQuote;

  return entityHandler.getEntityIndexes().map((entityIndex) {
    var columns = resolveEntityIndexColumns(entityHandler, entityIndex);
    var indexName = entityIndex.indexName(
      table,
      columns,
      maxLength: dialect.maxIdentifierLength,
    );

    if (fieldColumn != null) {
      columns = entityIndex.fields
          .mapIndexed((i, f) => fieldColumn(f) ?? columns[i])
          .toList();
    }

    return CreateIndexSQL.columns(
      dialect,
      table,
      columns,
      indexName,
      q: q,
      unique: entityIndex.unique,
    );
  }).toList();
}