stash_sembast 3.0.0-dev.2 stash_sembast: ^3.0.0-dev.2 copied to clipboard
Sembast storage extension for the stash caching API. Provides support to store caches int the local file system in binary format using the msgpack json format
stash_sembast #
A stash storage extension for sembast
Overview #
This storage extension for stash provides a sembast based storage that relies on a highly performing binary serialization of the cache items through the use of msgpack serialization format.
Getting Started #
Add this to your pubspec.yaml
(or create it) replacing x.x.x with the latest version of stash_sembast:
dependencies:
stash_sembast: ^x.x.x
Run the following command to install dependencies:
dart pub get
Finally, to start developing import the library:
import 'package:stash_sembast/stash_sembast.dart';
Usage #
This storage extension for stash provides a hive based storage that relies on a highly performing binary serialization of the cache items through the use of msgpack serialization format.
import 'dart:io';
import 'package:stash/stash_api.dart';
import 'package:stash_sembast/stash_sembast.dart';
class Task {
final int id;
final String title;
final bool completed;
Task({required this.id, required this.title, this.completed = false});
/// Creates a [Task] from json map
factory Task.fromJson(Map<String, dynamic> json) => Task(
id: json['id'] as int,
title: json['title'] as String,
completed: json['completed'] as bool);
/// Creates a json map from a [Task]
Map<String, dynamic> toJson() =>
<String, dynamic>{'id': id, 'title': title, 'completed': completed};
@override
String toString() {
return 'Task $id: "$title" is ${completed ? "completed" : "not completed"}';
}
}
void main() async {
// Temporary path
final dir = Directory.systemTemp;
// Temporary database file
final file = File('${dir.path}/stash_sqlite.db');
// Creates cache with a Sembast based storage backend with the capacity of 10 entries
final cache = newSembastFileCache(file,
maxEntries: 10,
eventListenerMode: EventListenerMode.Sync,
fromEncodable: (json) => Task.fromJson(json))
..on<CreatedEntryEvent>().listen(
(event) => print('Entry key "${event.entry.key}" added to the cache'));
// Adds a task with key 'task1' to the cache
await cache.put('task1',
Task(id: 1, title: 'Run stash_sembast example', completed: true));
// Retrieves the value from the cache
final value = await cache.get('task1');
print(value);
}
Features and Bugs #
Please file feature requests and bugs at the issue tracker.
License #
This project is licensed under the MIT License - see the LICENSE file for details