# Hive CE Quick Start Guide ## 1. Initialize in main.dart ```dart import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'core/database/hive_initializer.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // Initialize Hive await HiveInitializer.initialize(verbose: true); runApp(const ProviderScope(child: MyApp())); } ``` ## 2. Save & Retrieve Data ```dart import 'package:worker/core/database/database.dart'; final dbManager = DatabaseManager(); // Save await dbManager.save( boxName: HiveBoxNames.productBox, key: 'product_123', value: product, ); // Get final product = dbManager.get( boxName: HiveBoxNames.productBox, key: 'product_123', ); ``` ## 3. Cache with Expiration ```dart // Save to cache await dbManager.saveToCache( key: HiveKeys.productsCacheKey, data: products, ); // Get from cache final cached = dbManager.getFromCache>( key: HiveKeys.productsCacheKey, maxAge: CacheDuration.products, // 6 hours ); if (cached == null) { // Cache expired - fetch fresh data } ``` ## 4. Create New Model ```dart import 'package:hive_ce/hive.dart'; import 'package:worker/core/constants/storage_constants.dart'; part 'product_model.g.dart'; @HiveType(typeId: HiveTypeIds.product) class ProductModel extends HiveObject { @HiveField(0) final String id; @HiveField(1) final String name; ProductModel({required this.id, required this.name}); } ``` Then run: ```bash dart run build_runner build --delete-conflicting-outputs ``` ## 5. Logout (Clear User Data) ```dart await HiveInitializer.logout(); ``` ## Available Boxes - `HiveBoxNames.userBox` - User profile - `HiveBoxNames.productBox` - Products - `HiveBoxNames.cartBox` - Cart items - `HiveBoxNames.orderBox` - Orders - `HiveBoxNames.projectBox` - Projects - `HiveBoxNames.loyaltyBox` - Loyalty data - `HiveBoxNames.settingsBox` - Settings - `HiveBoxNames.cacheBox` - API cache - `HiveBoxNames.notificationBox` - Notifications See `/lib/core/constants/storage_constants.dart` for complete list. ## Cache Durations Pre-configured expiration times: - `CacheDuration.products` - 6 hours - `CacheDuration.categories` - 24 hours - `CacheDuration.loyaltyPoints` - 1 hour - `CacheDuration.rewards` - 12 hours - `CacheDuration.promotions` - 2 hours ## Need More Info? - Full Documentation: `/lib/core/database/README.md` - Setup Summary: `/HIVE_SETUP.md` - Storage Constants: `/lib/core/constants/storage_constants.dart`