feat: добавить заполнение начальных данных и логирование в HiveService
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
import 'package:hive_ce_flutter/hive_flutter.dart';
|
||||
import '/models/category.dart';
|
||||
import '/models/tag.dart';
|
||||
import '/models/transaction_record.dart';
|
||||
import 'package:hive_ce/hive_flutter.dart';
|
||||
import 'package:logger/logger.dart';
|
||||
import 'package:sanderrs_budget_app/models/category.dart';
|
||||
import 'package:sanderrs_budget_app/models/tag.dart';
|
||||
import 'package:sanderrs_budget_app/models/transaction_record.dart';
|
||||
import 'package:sanderrs_budget_app/utils/category_utils.dart';
|
||||
import 'package:sanderrs_budget_app/utils/tag_utils.dart';
|
||||
import 'package:sanderrs_budget_app/utils/transaction_utils.dart';
|
||||
|
||||
final _logger = Logger();
|
||||
|
||||
class HiveService {
|
||||
static const String _categoryBox = 'categories';
|
||||
@@ -9,6 +15,7 @@ class HiveService {
|
||||
static const String _transactionBox = 'transactions';
|
||||
|
||||
static Future<void> init() async {
|
||||
_logger.i('Initializing Hive database');
|
||||
await Hive.initFlutter();
|
||||
|
||||
// Регистрация адаптеров
|
||||
@@ -28,10 +35,34 @@ class HiveService {
|
||||
Hive.openBox<Tag>(_tagBox),
|
||||
Hive.openBox<TransactionRecord>(_transactionBox),
|
||||
]);
|
||||
|
||||
// Проверка и заполнение начальными данными
|
||||
await _checkAndFillInitialData();
|
||||
}
|
||||
|
||||
static Box<Category> get categories => Hive.box<Category>(_categoryBox);
|
||||
static Box<Tag> get tags => Hive.box<Tag>(_tagBox);
|
||||
static Box<TransactionRecord> get transactions =>
|
||||
Hive.box<TransactionRecord>(_transactionBox);
|
||||
|
||||
/// Проверяет и заполняет боксы начальными данными при первом запуске
|
||||
static Future<void> _checkAndFillInitialData() async {
|
||||
final catBox = categories;
|
||||
if (catBox.isEmpty) {
|
||||
_logger.i('Filling initial categories');
|
||||
await catBox.addAll(CategoryUtils.getDefaultCategories());
|
||||
}
|
||||
|
||||
final tagBox = tags;
|
||||
if (tagBox.isEmpty) {
|
||||
_logger.i('Filling initial tags');
|
||||
await tagBox.addAll(TagUtils.getDefaultTags());
|
||||
}
|
||||
|
||||
final transactionBox = transactions;
|
||||
if (transactionBox.isEmpty) {
|
||||
_logger.i('Filling sample transactions');
|
||||
await transactionBox.addAll(TransactionUtils.getSampleTransactions());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user