Skip to content

Commit

Permalink
Improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
buenaflor committed Nov 7, 2023
1 parent d0a18eb commit df27999
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 16 deletions.
4 changes: 3 additions & 1 deletion drift/lib/src/sentry_query_executor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,13 @@ class SentryQueryExecutor extends QueryExecutor {
@override
TransactionExecutor beginTransaction() {
final transactionExecutor = _queryExecutor.beginTransaction();
return SentryTransactionExecutor(
final sentryTransactionExecutor = SentryTransactionExecutor(
transactionExecutor,
_hub,
dbName: _dbName,
);
sentryTransactionExecutor.beginTransaction();
return sentryTransactionExecutor;
}

@override
Expand Down
6 changes: 5 additions & 1 deletion drift/lib/src/sentry_span_helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,12 @@ class SentrySpanHelper {
String description,
Future<T> Function() execute, {
String? dbName,
bool useTransactionSpan = false,
}) async {
final currentSpan = _hub.getSpan();
ISentrySpan? currentSpan = _hub.getSpan();
if (useTransactionSpan) {
currentSpan = transactionSpan;
}
final span = currentSpan?.startChild(
SentryQueryExecutor.dbOp,
description: description,
Expand Down
10 changes: 8 additions & 2 deletions drift/lib/src/sentry_transaction_executor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class SentryTransactionExecutor extends TransactionExecutor {
: _hub = hub,
_dbName = dbName {
_spanHelper.setHub(_hub);
beginTransaction();
}

@override
Expand Down Expand Up @@ -81,7 +80,14 @@ class SentryTransactionExecutor extends TransactionExecutor {

@override
Future<int> runInsert(String statement, List<Object?> args) {
return _executor.runInsert(statement, args);
return _spanHelper.asyncWrapInSpan(
'within transaction: $statement',
() async {
return _executor.runInsert(statement, args);
},
dbName: _dbName,
useTransactionSpan: true,
);
}

@override
Expand Down
32 changes: 20 additions & 12 deletions drift/test/sentry_database_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -175,10 +175,16 @@ void main() {
});

verifySpan(
'transaction',
'within transaction: $expectedInsertStatement',
fixture.getCreatedSpan(),
origin: SentryTraceOrigins.autoDbDriftTransactionExecutor,
);

verifySpan(
'transaction',
fixture.getCreatedSpanByDescription('transaction'),
origin: SentryTraceOrigins.autoDbDriftTransactionExecutor,
);
});

test('transaction rollback adds span', () async {
Expand Down Expand Up @@ -379,19 +385,21 @@ void main() {
when(mockTransactionExecutor.beginTransaction())
.thenThrow(fixture.exception);

try {
// We need to move it inside the try/catch becaue SentryTransactionExecutor
// starts beginTransaction() directly after init
final SentryTransactionExecutor transactionExecutor =
SentryTransactionExecutor(
mockTransactionExecutor,
fixture.hub,
dbName: Fixture.dbName,
);
// We need to move it inside the try/catch becaue SentryTransactionExecutor
// starts beginTransaction() directly after init
final SentryTransactionExecutor transactionExecutor =
SentryTransactionExecutor(
mockTransactionExecutor,
fixture.hub,
dbName: Fixture.dbName,
);

when(fixture.mockLazyDatabase.beginTransaction())
.thenReturn(transactionExecutor);
when(fixture.mockLazyDatabase.beginTransaction())
.thenReturn(transactionExecutor);

when(fixture.mockLazyDatabase.runInsert(any, any)).thenAnswer((realInvocation) => Future.value(1));

try {
await fixture.sut.batch((batch) async {
await insertRow(fixture.sut);
});
Expand Down

0 comments on commit df27999

Please sign in to comment.