Skip to content

Commit

Permalink
Update docs regarding IDs and transactions
Browse files Browse the repository at this point in the history
  • Loading branch information
Martin Clauss committed Mar 9, 2024
1 parent d1bc6be commit add1940
Show file tree
Hide file tree
Showing 78 changed files with 457 additions and 427 deletions.
17 changes: 9 additions & 8 deletions docs/docs/crud.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ For the examples below, we assume that we have a collection `Recipe` defined as
```dart
@collection
class Recipe {
Id? id;
late int id;
String? name;
Expand Down Expand Up @@ -115,7 +115,7 @@ final favorites = await isar.recipes.filter()
It's finally time to modify our collection! To create, update, or delete objects, use the respective operations wrapped in a write transaction:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final recipe = await isar.recipes.get(123)
recipe.isFavorite = false;
Expand All @@ -135,11 +135,12 @@ If the id field is `null` or `Isar.autoIncrement`, Isar will use an auto-increme

```dart
final pancakes = Recipe()
..id = isar.recipes.autoIncrement()
..name = 'Pancakes'
..lastCooked = DateTime.now()
..isFavorite = true;
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
await isar.recipes.put(pancakes);
})
```
Expand All @@ -149,7 +150,7 @@ Isar will automatically assign the id to the object if the `id` field is non-fin
Inserting multiple objects at once is just as easy:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
await isar.recipes.putAll([pancakes, pizza]);
})
```
Expand All @@ -161,7 +162,7 @@ Both creating and updating works with `collection.put(object)`. If the id is `nu
So if we want to unfavorite our pancakes, we can do the following:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
pancakes.isFavorite = false;
await isar.recipes.put(pancakes);
});
Expand All @@ -172,7 +173,7 @@ await isar.writeTxn(() async {
Want to get rid of an object in Isar? Use `collection.delete(id)`. The delete method returns whether an object with the specified id was found and deleted. If you want to delete the object with id `123`, for example, you can do:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final success = await isar.recipes.delete(123);
print('Recipe deleted: $success');
});
Expand All @@ -181,7 +182,7 @@ await isar.writeTxn(() async {
Similarly to get and put, there is also a bulk delete operation that returns the number of deleted objects:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final count = await isar.recipes.deleteAll([1, 2, 3]);
print('We deleted $count recipes');
});
Expand All @@ -190,7 +191,7 @@ await isar.writeTxn(() async {
If you don't know the ids of the objects you want to delete, you can use a query:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final count = await isar.recipes.filter()
.isFavoriteEqualTo(false)
.deleteAll();
Expand Down
17 changes: 9 additions & 8 deletions docs/docs/de/crud.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ Den folgenden Beispielen liegt die Collection `Recipe` zugrunde, die wie folgt d
```dart
@collection
class Recipe {
Id? id;
late int id;
String? name;
Expand Down Expand Up @@ -112,7 +112,7 @@ final favourites = await recipes.filter()
Jetzt ist es endlich an der Zeit, unsere Collection zu verändern! Um Objekte zu erstellen, zu aktualisieren oder zu löschen, rufe die entsprechenden Operationen innerhalb einer Schreibtransaktion auf:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final recipe = await recipes.get(123)
recipe.isFavorite = false;
Expand All @@ -132,11 +132,12 @@ Wenn das ID-Feld `null` oder `Isar.autoIncrement` ist, verwendet Isar eine autom

```dart
final pancakes = Recipe()
..id = isar.recipes.autoIncrement()
..name = 'Pancakes'
..lastCooked = DateTime.now()
..isFavorite = true;
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
await recipes.put(pancakes);
})
```
Expand All @@ -146,7 +147,7 @@ Ist das ID-Feld nicht-final, weist Isar die generierte ID automatisch dem Objekt
Das Erstellen von mehreren Objekten auf einmal ist genauso einfach:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
await recipes.putAll([pancakes, pizza]);
})
```
Expand All @@ -158,7 +159,7 @@ Sowohl das Erstellen als auch das Aktualisieren funktioniert mit `collection.put
Wenn wir also Pfannkuchen nicht mehr mögen, können wir Folgendes tun:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
pancakes.isFavorite = false;
await recipes.put(recipe);
});
Expand All @@ -169,7 +170,7 @@ await isar.writeTxn(() async {
Willst du ein Objekt in Isar loswerden? Verwende `collection.delete(id)`. Die delete-Methode gibt zurück, ob ein Objekt mit der angegebenen ID gefunden und gelöscht wurde. Lass uns z.B. das Objekt mit der ID `123` löschen:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final success = await recipes.delete(123);
print('Recipe deleted: $success');
});
Expand All @@ -178,7 +179,7 @@ await isar.writeTxn(() async {
Ähnlich wie bei `get()` und `put()` gibt es auch einen Massenlöschvorgang, der die Anzahl der gelöschten Objekte zurückgibt:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final count = await recipes.deleteAll([1, 2, 3]);
print('We deleted $count recipes');
});
Expand All @@ -187,7 +188,7 @@ await isar.writeTxn(() async {
Wenn du die IDs der zu löschenden Objekte nicht kennst ist es auch möglich eine Abfrage zu verwenden:

```dart
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
final count = await recipes.filter()
.isFavoriteEqualTo(false)
.deleteAll();
Expand Down
14 changes: 7 additions & 7 deletions docs/docs/de/indexes.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Zum Beispiel ist diese `Product`-Collection komplett unsortiert.
```dart
@collection
class Product {
Id? id;
late int id;
late String name;
Expand Down Expand Up @@ -50,7 +50,7 @@ Um die Leistung dieser Abfrage zu verbessern, indizieren wir die Eigenschaft `pr
```dart
@collection
class Product {
Id? id;
late int id;
late String name;
Expand Down Expand Up @@ -110,7 +110,7 @@ Ein eindeutiger Index stellt sicher, dass der Index keine doppelten Werte enthä
```dart
@collection
class User {
Id? id;
late int id;
@Index(unique: true)
late String username;
Expand Down Expand Up @@ -147,7 +147,7 @@ Manchmal ist es nicht von Vorteil einen Fehler zu verursachen, wenn eine Eindeut
```dart
@collection
class User {
Id? id;
late int id;
@Index(unique: true, replace: true)
late String username;
Expand Down Expand Up @@ -206,7 +206,7 @@ Alle Indizes auf `String`- und `List<String>`-Eigenschaften beachten standardmä
```dart
@collection
class Person {
Id? id;
late int id;
@Index(caseSensitive: false)
late String name;
Expand Down Expand Up @@ -255,7 +255,7 @@ Es ist vermutlich am besten mit einem Beispiel zu starten. Wir erstellen eine Pe
```dart
@collection
class Person {
Id? id;
late int id;
late String name;
Expand Down Expand Up @@ -320,7 +320,7 @@ Zu sinnvollen Anwendungen für Mehrfach-Indizes zählen das Indizieren einer Lis
```dart
@collection
class Product {
Id? id;
late int id;
late String description;
Expand Down
12 changes: 7 additions & 5 deletions docs/docs/de/links.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Links
---

> ⚠️ Links are currently not supported in Isar v4
# Links

Links ermöglichen es dir Verhältnisse zwischen Objekten, wie z.B. dem Autor (Benutzer) eines Kommentars, auszudrücken. Du kannst `1:1`, `1:n`, `n:m` Verhältnisse mit Isar-Links modellieren. Links zu nutzen ist unpraktischer als eingebettete Objekte zu benutzen, und du solltest eingebettete Objekte, wann immer möglich, verwenden.
Expand All @@ -23,14 +25,14 @@ Für nicht-Web-Ziele werden Links automatisch geladen, wenn du sie zum ersten Ma
```dart
@collection
class Teacher {
Id? id;
late int id;
late String subject;
}
@collection
class Student {
Id? id;
late int id;
late String name;
Expand All @@ -49,7 +51,7 @@ final linda = Student()
..name = 'Linda'
..teacher.value = mathTeacher;
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
await isar.students.put(linda);
await isar.teachers.put(mathTeacher);
await linda.teachers.save();
Expand Down Expand Up @@ -91,7 +93,7 @@ Intern werden `IsarLink` und `IsarLinks` auf die gleiche Weise dargestellt. Wir
```dart
@collection
class Student {
Id? id;
late int id;
late String name;
Expand All @@ -113,7 +115,7 @@ print(linda.teachers); // {Teacher('Math')}
linda.teachers.add(biologyTeacher);
await isar.writeTxn(() async {
await isar.writeAsync((isar) async {
await linda.teachers.save();
});
Expand Down
12 changes: 6 additions & 6 deletions docs/docs/de/queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Wir benutzen das folgende Modell für die Beispiele weiter unten:
```dart
@collection
class Shoe {
Id? id;
late int id;
int? size;
Expand Down Expand Up @@ -199,7 +199,7 @@ Abfragen können sogar auf Listen gestellt werden:

```dart
class Tweet {
Id? id;
late int id;
String? text;
Expand Down Expand Up @@ -236,7 +236,7 @@ Eingebettete Objekte sind eines von Isars nützlichsten Features. Sie können se
```dart
@collection
class Car {
Id? id;
late int id;
Brand? brand;
}
Expand Down Expand Up @@ -281,14 +281,14 @@ Beachte, dass Link-Abfragen teuer sein können, weil Isar die verlinkten Objekte
```dart
@collection
class Teacher {
Id? id;
late int id;
late String subject;
}
@collection
class Student {
Id? id;
late int id;
late String name;
Expand Down Expand Up @@ -340,7 +340,7 @@ Lass uns Indizes zu der Schuh-Collection hinzufügen:
```dart
@collection
class Shoe with IsarObject {
Id? id;
late int id;
@Index()
Id? size;
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/de/recipes/data_migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Version 1:
```dart
@collection
class User {
Id? id;
late int id;
late String name;
Expand All @@ -30,7 +30,7 @@ Version 2:
```dart
@collection
class User {
Id? id;
late int id;
late String name;
Expand Down
6 changes: 3 additions & 3 deletions docs/docs/de/recipes/full_text_search.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Bauen wir den grundlegendsten Volltext-Index:

```dart
class Message {
Id? id;
late int id;
late String content;
Expand Down Expand Up @@ -67,7 +67,7 @@ Das ist kinderleicht! Wir können unseren Index so ändern, dass er auch Präfix

```dart
class Post {
Id? id;
late int id;
late String title;
Expand Down Expand Up @@ -95,7 +95,7 @@ Klar! Wir werden einen Trick verwenden, um `.endsWith()` verwenden zu können:

```dart
class Post {
Id? id;
late int id;
late String title;
Expand Down
Loading

0 comments on commit add1940

Please sign in to comment.