Skip to content

Commit 10ba2ad

Browse files
committed
Avoid generating empty integrity check
Closes #3384
1 parent 8ba5e44 commit 10ba2ad

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

drift_dev/lib/src/writer/tables/table_writer.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,12 @@ class TableWriter extends TableOrViewWriter {
470470
void _writeValidityCheckMethod() {
471471
if (_skipVerification) return;
472472

473+
// dont't verify custom columns, we assume that the user knows what they're
474+
// doing
475+
if (table.columns.every((c) => c.typeConverter != null)) {
476+
return;
477+
}
478+
473479
final innerType = emitter.dartCode(emitter.writer.rowType(table));
474480
emitter
475481
..writeln('@override')

drift_dev/test/writer/table_writer_test.dart

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,32 @@ class Tags extends Table {
126126
),
127127
}, result.dartOutputs, result.writer);
128128
});
129+
130+
test(
131+
'does not generate integrity check method when every column has a type converter',
132+
() async {
133+
final result = await emulateDriftBuild(
134+
inputs: {
135+
'a|lib/a.dart': '''
136+
import 'package:drift/drift.dart';
137+
138+
enum Fruit {
139+
apple,
140+
pear,
141+
}
142+
class Foo extends Table {
143+
Column<String> get fruit => textEnum<Fruit>()
144+
.withDefault(const Variable('apple'))();
145+
}
146+
''',
147+
},
148+
modularBuild: true,
149+
);
150+
151+
checkOutputs({
152+
'a|lib/a.drift.dart':
153+
decodedMatches(isNot(contains('instance.toColumns(true);'))),
154+
}, result.dartOutputs, result.writer);
155+
},
156+
);
129157
}

0 commit comments

Comments
 (0)