stash_cbl

Creator: coderz1093

Last updated:

0 purchases

stash_cbl Image
stash_cbl Images

Languages

Categories

Add to Cart

Description:

stash cbl

stash_cbl #
A stash storage extension for
Couchbase Lite




Overview #
This storage extension for stash
provides a Couchbase Lite based storage that
relies on a highly performing binary serialization of the 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_cbl:
dependencies:
stash_cbl: ^x.x.x
copied to clipboard
Run the following command to install dependencies:
dart pub get
copied to clipboard
Finally, to start developing import the library:
import 'package:stash/stash_api.dart';
import 'package:stash_cbl/stash_cbl.dart';
copied to clipboard
Make sure you have initialized Couchbase Lite through either of the following
packages, before creating a store:

cbl_dart for standalone Dart apps.
cbl_flutter for Flutter apps.

Usage #
Vault #
The example bellow creates a vault with a Couchbase Lite storage backend. In
this rather simple example the serialization and deserialization of the object
is coded by hand but it's more usual to rely on libraries like
json_serializable.
import 'dart:io';

import 'package:cbl_dart/cbl_dart.dart';
import 'package:stash/stash_api.dart';
import 'package:stash_cbl/stash_cbl.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 {
// Initialize Couchbase Lite for standalone Dart.
await CouchbaseLiteDart.init(edition: Edition.community);

// Temporary directory
final path = Directory.systemTemp.path;

// Creates a store
final store = await newCblLocalVaultStore(path: path);

// Creates a vault from the previously created store
final vault = await store.vault<Task>(
name: 'vault',
fromEncodable: (json) => Task.fromJson(json),
eventListenerMode: EventListenerMode.synchronous)
..on<VaultEntryCreatedEvent<Task>>().listen(
(event) => print('Key "${event.entry.key}" added to the vault'));

// Adds a task with key 'task1' to the vault
await vault.put(
'task1', Task(id: 1, title: 'Run vault store example', completed: true));
// Retrieves the value from the vault
print(await vault.get('task1'));
// Closes the vault
vault.close();
}
copied to clipboard
Cache #
The example bellow creates a cache with a Couchbase Lite storage backend. In
this rather simple example the serialization and deserialization of the object
is coded by hand but it's more usual to rely on libraries like
json_serializable.
import 'dart:io';

import 'package:cbl_dart/cbl_dart.dart';
import 'package:stash/stash_api.dart';
import 'package:stash_cbl/stash_cbl.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 {
// Initialize Couchbase Lite for standalone Dart.
await CouchbaseLiteDart.init(edition: Edition.community);

// Temporary directory
final path = Directory.systemTemp.path;

// Creates a store
final store = await newCblLocalCacheStore(
path: path, fromEncodable: (json) => Task.fromJson(json));

// Creates a cache with a capacity of 10 from the previously created store
final cache = await store.cache<Task>(
name: 'cache1',
maxEntries: 10,
eventListenerMode: EventListenerMode.synchronous)
..on<CacheEntryCreatedEvent<Task>>().listen(
(event) => print('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 cache store example', completed: true));
// Retrieves the value from the cache
print(await cache.get('task1'));
// Closes the cache
cache.close();
}
copied to clipboard
Additional Features #
Please take a look at the documentation of
stash to gather additional
information and to explore the full range of capabilities of the stash library
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

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.