-
Notifications
You must be signed in to change notification settings - Fork 94
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Services: Bringup hive database service.
Signed-off-by: Manjot Sidhu <manjot.techie@gmail.com>
- Loading branch information
1 parent
c510f38
commit ce1a78f
Showing
7 changed files
with
303 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
import 'package:flutter/foundation.dart'; | ||
import 'package:hive/hive.dart'; | ||
import 'package:hive_flutter/hive_flutter.dart'; | ||
|
||
enum DatabaseBox { | ||
IB, | ||
} | ||
|
||
extension DatabaseBoxExt on DatabaseBox { | ||
String get inString => describeEnum(this); | ||
} | ||
|
||
abstract class DatabaseService { | ||
Future<void> init(); | ||
|
||
Future<T> getData<T>(DatabaseBox box, String key, {T defaultValue}); | ||
Future<void> setData<T>(DatabaseBox box, String key, T value); | ||
} | ||
|
||
class DatabaseServiceImpl implements DatabaseService { | ||
@override | ||
Future<void> init() async { | ||
// Hive DB setup | ||
await Hive.initFlutter(); | ||
|
||
// Register Adapters for Hive | ||
// (TODO) | ||
} | ||
|
||
Future<Box> _openBox(DatabaseBox box) async { | ||
if (Hive.isBoxOpen(box.inString)) { | ||
return Hive.box(box.inString); | ||
} | ||
|
||
return await Hive.openBox(box.inString); | ||
} | ||
|
||
@override | ||
Future<T> getData<T>(DatabaseBox box, String key, {T defaultValue}) async { | ||
var openedBox = await _openBox(box); | ||
|
||
return openedBox.get(key, defaultValue: defaultValue); | ||
} | ||
|
||
@override | ||
Future<void> setData<T>(DatabaseBox box, String key, T value) async { | ||
var openedBox = await _openBox(box); | ||
|
||
return await openedBox.put(key, value); | ||
} | ||
} |
Oops, something went wrong.