runable
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import 'package:hive_ce/hive.dart';
|
||||
import '../models/category_model.dart';
|
||||
|
||||
/// Category local data source using Hive
|
||||
abstract class CategoryLocalDataSource {
|
||||
Future<List<CategoryModel>> getAllCategories();
|
||||
Future<CategoryModel?> getCategoryById(String id);
|
||||
Future<void> cacheCategories(List<CategoryModel> categories);
|
||||
Future<void> clearCategories();
|
||||
}
|
||||
|
||||
class CategoryLocalDataSourceImpl implements CategoryLocalDataSource {
|
||||
final Box<CategoryModel> box;
|
||||
|
||||
CategoryLocalDataSourceImpl(this.box);
|
||||
|
||||
@override
|
||||
Future<List<CategoryModel>> getAllCategories() async {
|
||||
return box.values.toList();
|
||||
}
|
||||
|
||||
@override
|
||||
Future<CategoryModel?> getCategoryById(String id) async {
|
||||
return box.get(id);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> cacheCategories(List<CategoryModel> categories) async {
|
||||
final categoryMap = {for (var c in categories) c.id: c};
|
||||
await box.putAll(categoryMap);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> clearCategories() async {
|
||||
await box.clear();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user