Open
Description
Is your feature request related to a problem? Please describe.
There is no package for drift
Link
Describe the solution you'd like
A package for drift
Describe alternatives you've considered
This implementation they have an example of
@DriftDatabase(tables: [])
class AppDatabase extends _$AppDatabase {
AppDatabase()
: super(drift.driftDatabase(name: "shas.db")
.interceptWith(LogInterceptor()));
@override
int get schemaVersion => 1;
}
class LogInterceptor extends QueryInterceptor {
Future<T> _run<T>(
String description, FutureOr<T> Function() operation) async {
final stopwatch = Stopwatch()..start();
talker.log('Running $description');
try {
final result = await operation();
talker.log(' => succeeded after ${stopwatch.elapsedMilliseconds}ms');
return result;
} on Object catch (e, s) {
talker.error(' => failed after ${stopwatch.elapsedMilliseconds}ms', e, s);
rethrow;
}
}
@override
TransactionExecutor beginTransaction(QueryExecutor parent) {
talker.log('begin');
return super.beginTransaction(parent);
}
@override
Future<void> commitTransaction(TransactionExecutor inner) {
return _run('commit', () => inner.send());
}
@override
Future<void> rollbackTransaction(TransactionExecutor inner) {
return _run('rollback', () => inner.rollback());
}
@override
Future<void> runBatched(
QueryExecutor executor, BatchedStatements statements) {
return _run(
'batch with $statements', () => executor.runBatched(statements));
}
@override
Future<int> runInsert(
QueryExecutor executor, String statement, List<Object?> args) {
return _run(
'$statement with $args', () => executor.runInsert(statement, args));
}
@override
Future<int> runUpdate(
QueryExecutor executor, String statement, List<Object?> args) {
return _run(
'$statement with $args', () => executor.runUpdate(statement, args));
}
@override
Future<int> runDelete(
QueryExecutor executor, String statement, List<Object?> args) {
return _run(
'$statement with $args', () => executor.runDelete(statement, args));
}
@override
Future<void> runCustom(
QueryExecutor executor, String statement, List<Object?> args) {
return _run(
'$statement with $args', () => executor.runCustom(statement, args));
}
@override
Future<List<Map<String, Object?>>> runSelect(
QueryExecutor executor, String statement, List<Object?> args) {
return _run(
'$statement with $args', () => executor.runSelect(statement, args));
}
}
Additional context
N/A