From 1c6be04ced2676ff6fb0ed67570862c4c480410a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Andra=C5=A1ec?= Date: Mon, 15 Apr 2024 16:06:52 +0000 Subject: [PATCH] feat(flutter): isar integration (#9181) * Add isar page * Update docs/platforms/flutter/integrations/isar-instrumentation.mdx Co-authored-by: vivianyentran <20403606+vivianyentran@users.noreply.github.com> * Update isar-instrumentation.mdx * update text --------- Co-authored-by: Giancarlo Buenaflor Co-authored-by: vivianyentran <20403606+vivianyentran@users.noreply.github.com> --- .../integrations/isar-instrumentation.mdx | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) create mode 100644 docs/platforms/flutter/integrations/isar-instrumentation.mdx diff --git a/docs/platforms/flutter/integrations/isar-instrumentation.mdx b/docs/platforms/flutter/integrations/isar-instrumentation.mdx new file mode 100644 index 0000000000000..5d750a6042aad --- /dev/null +++ b/docs/platforms/flutter/integrations/isar-instrumentation.mdx @@ -0,0 +1,99 @@ +--- +title: Isar Database Instrumentation +description: "Learn more about the Sentry Isar Database Instrumentation for the Flutter SDK." +caseStyle: camelCase +supportLevel: production +sdk: sentry.dart.flutter +categories: + - mobile +--- + + + +_(New in version 7.16.0)_ + +Isar is a fast cross-platform database for Flutter. +The [sentry_isar](https://pub.dev/packages/sentry_isar) package provides `Isar` support for database instrumentation and allows you to track the performance of your queries. + +## Instrumentation Behaviour + +The created spans will be attached to the transaction on the scope. If no transaction is on the scope the Isar span will not be sent to Sentry. + +## Prerequisites + +Before starting, ensure: + +1. The Sentry Flutter SDK is initialized. Learn more [here](/platforms/flutter/#configure). +2. Performance Monitoring is set up. Learn more [here](/platforms/flutter/performance/). + +## Install + +Add the `sentry_isar` dependency to install the Isar database instrumentation. + +```yml {filename:pubspec.yaml} +dependencies: +sentry_flutter: ^{{@inject packages.version('sentry.dart.flutter', '7.16.0') }} +sentry_isar: ^{{@inject packages.version('sentry.dart.isar', '7.16.0') }} +path_provider: ^2.0.0 +``` + +## Configure + +Use `SentryIsar` to initialize the instance: + +```dart +import 'package:path_provider/path_provider.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_isar/sentry_isar.dart'; + +import 'user.dart'; // Import your Isar model instead + +final dir = await getApplicationDocumentsDirectory(); +final isar = await SentryIsar.open( + [UserSchema], + directory: dir.path, +); +``` + +## Verify + +### 1. Execute the Code + +```dart +import 'package:path_provider/path_provider.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:sentry_isar/sentry_isar.dart'; + +import 'user.dart'; // Import your Isar model instead + +Future runApp() async { + final tr = Sentry.startTransaction('isarTest', 'db', bindToScope: true); + + final dir = await getApplicationDocumentsDirectory(); + + final isar = await SentryIsar.open( + [UserSchema], + directory: dir.path, + ); + + final newUser = User() + ..name = 'Joe Dirt' + ..age = 36; + + await isar.writeTxn(() async { + await isar.users.put(newUser); // insert & update + }); + + final existingUser = await isar.users.get(newUser.id); // get + + await isar.writeTxn(() async { + await isar.users.delete(existingUser!.id); // delete + }); + + await tr.finish(status: const SpanStatus.ok()); +} +``` + +### 2. View the Transaction on Sentry.io + +To view the recorded transaction, log into [sentry.io](https://sentry.io). Use the left sidebar to navigate to the **Performance** page. Select your project and scroll down to the transactions table to see the just recorded transaction with the name `isarTest`. You can also use the search bar to find the transaction. Click on the transaction to open its **Transaction Summary** page for more performance details.