From adafdb88f8b5f0e6824ffd3f47549743594183dd Mon Sep 17 00:00:00 2001 From: Sanders Date: Thu, 10 Jul 2025 18:23:17 +0300 Subject: [PATCH] Improve error handling in HiveCategoryRepository --- .../hive_category_repository.dart | 84 ++++++++++++++----- 1 file changed, 63 insertions(+), 21 deletions(-) diff --git a/lib/data/repositories/hive_category_repository.dart b/lib/data/repositories/hive_category_repository.dart index e9277e4..37adda6 100644 --- a/lib/data/repositories/hive_category_repository.dart +++ b/lib/data/repositories/hive_category_repository.dart @@ -1,3 +1,4 @@ +import 'dart:async'; // Добавлено для Future import 'package:hive_ce/hive.dart'; import '/data/repositories/interfaces/icategory_repository.dart'; import '/models/category.dart'; @@ -9,68 +10,109 @@ class HiveCategoryRepository implements ICategoryRepository { @override Future> getAll() async { - return _box.values.toList(); + try { + return _box.values.toList(); + } catch (e) { + throw Exception('Ошибка получения категорий: $e'); + } } @override Future getById(String id) async { - return _box.get(id); + try { + return _box.get(id); + } catch (e) { + throw Exception('Ошибка получения категории: $e'); + } } @override Future add(Category category) async { - await _box.put(category.id, category); + try { + await _box.put(category.id, category); + } catch (e) { + throw Exception('Ошибка добавления категории: $e'); + } } @override Future update(Category category) async { - await add(category); + try { + await add(category); + } catch (e) { + throw Exception('Ошибка обновления категории: $e'); + } } @override Future delete(String id) async { - await _box.delete(id); + try { + await _box.delete(id); + } catch (e) { + throw Exception('Ошибка удаления категории: $e'); + } } @override Future> getIncomeCategories() async { - return _box.values.where((c) => c.isIncome).toList(); + try { + return _box.values.where((c) => c.isIncome).toList(); + } catch (e) { + throw Exception('Ошибка получения категорий доходов: $e'); + } } @override Future> getExpenseCategories() async { - return _box.values.where((c) => !c.isIncome).toList(); + try { + return _box.values.where((c) => !c.isIncome).toList(); + } catch (e) { + throw Exception('Ошибка получения категорий расходов: $e'); + } } // Новые методы для работы с пользователями @override Future> getAllByUser(String userId) async { - // Фильтруем все категории по userId - return _box.values.where((c) => c.userId == userId).toList(); + try { + return _box.values.where((c) => c.userId == userId).toList(); + } catch (e) { + throw Exception('Ошибка получения категорий пользователя: $e'); + } } @override Future> getIncomeCategoriesByUser(String userId) async { - // Получаем только категории доходов конкретного пользователя - return _box.values - .where((c) => c.userId == userId && c.isIncome) - .toList(); + try { + return _box.values + .where((c) => c.userId == userId && c.isIncome) + .toList(); + } catch (e) { + throw Exception('Ошибка получения категорий доходов пользователя: $e'); + } } @override Future> getExpenseCategoriesByUser(String userId) async { - // Получаем только категории расходов конкретного пользователя - return _box.values - .where((c) => c.userId == userId && !c.isIncome) - .toList(); + try { + return _box.values + .where((c) => c.userId == userId && !c.isIncome) + .toList(); + } catch (e) { + throw Exception('Ошибка получения категорий расходов пользователя: $e'); + } } @override Future addAll(List categories) async { - final Map categoryMap = { - for (var cat in categories) cat.id: cat - }; - await _box.putAll(categoryMap); + try { + final Map categoryMap = { + for (var cat in categories) cat.id: cat + }; + await _box.putAll(categoryMap); + } catch (e) { + throw Exception('Ошибка пакетного добавления категорий: $e'); + } } }