Warn when using both primaryKey and autoIncrement()

This commit is contained in:
Simon Binder 2020-07-21 19:43:43 +02:00
parent ea9d72629f
commit 6b43a57911
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
2 changed files with 22 additions and 1 deletions

View File

@ -12,15 +12,24 @@ class TableParser {
final columns = (await _parseColumns(element)).toList();
final primaryKey = await _readPrimaryKey(element, columns);
final table = MoorTable(
fromClass: element,
columns: columns,
sqlName: escapeIfNeeded(sqlName),
dartTypeName: _readDartTypeName(element),
primaryKey: await _readPrimaryKey(element, columns),
primaryKey: primaryKey,
declaration: DartTableDeclaration(element, base.step.file),
);
if (primaryKey != null && columns.any((element) => element.hasAI)) {
base.step.errors.report(ErrorInDartCode(
message: "Tables can't override primaryKey and use autoIncrement()",
affectedElement: element,
));
}
var index = 0;
for (final converter in table.converters) {
converter

View File

@ -196,6 +196,18 @@ void main() {
expect(table.columns.any((column) => column.hasAI), isFalse);
});
test('warns when using primaryKey and autoIncrement()', () async {
await parse('PrimaryKeyAndAutoIncrement');
expect(
dartStep.errors.errors,
contains(
isA<ErrorInDartCode>().having((e) => e.message, 'message',
contains('override primaryKey and use autoIncrement()')),
),
);
});
test('recognizes aliases for rowid', () async {
final table = await parse('WithAliasForRowId');
final idColumn = table.columns.singleWhere((c) => c.name.name == 'id');