generateEntityIndexesSQLs method
List<CreateIndexSQL>
generateEntityIndexesSQLs(
- EntityHandler entityHandler,
- String table, {
- String? fieldColumn(
- 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 legacycreationDatecolumn),nullfor the generated one (normalizeColumnName). The index name is always from the generated columns (the same as inCREATE 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();
}