41 lines
991 B
Dart
41 lines
991 B
Dart
import 'dart:io';
|
|
|
|
import 'package:isar/isar.dart';
|
|
import 'package:path_provider/path_provider.dart';
|
|
|
|
import '../Entities/account.dart';
|
|
import '../Entities/recurring_transaction.dart';
|
|
import '../Entities/transaction.dart';
|
|
|
|
/// Ein Service um auf die Datenbank zuzugreifen
|
|
class IsarService {
|
|
/// Gibt eine gültige Instanz der Klasse zurück
|
|
factory IsarService() => _instance;
|
|
|
|
/// Initialisiert eine neue Instanz dieser Klasse
|
|
IsarService._internal();
|
|
|
|
static final _instance = IsarService._internal();
|
|
|
|
Isar? _isar;
|
|
|
|
/// Gibt die Datenbank zurück.
|
|
Future<Isar> getDatabase() async {
|
|
if (_isar == null) {
|
|
await _initializeDatabase();
|
|
}
|
|
|
|
return _isar!;
|
|
}
|
|
|
|
/// Initialisiert die Datenbank
|
|
Future<void> _initializeDatabase() async {
|
|
final Directory dir = await getApplicationDocumentsDirectory();
|
|
_isar = await Isar.open([
|
|
AccountSchema,
|
|
TransactionSchema,
|
|
RecurringTransactionSchema,
|
|
], directory: dir.path);
|
|
}
|
|
}
|