flutter_js_datascript

Creator: coderz1093

Last updated:

0 purchases

flutter_js_datascript Image
flutter_js_datascript Images
Add to Cart

Description:

flutter js datascript

Using DataScript in Flutter Apps.

This package is in very early stage and only be tested on MacOS. Use it with caution and file
any potential issues you see.

Features #
Use this package to

Transact with Datoms.
Query result by using datalog language.

Supported APIs: #

creteConn
q
listen
unlisten
initDb
datoms
pull
pullMany
connFromDb
connFromDatoms
resetConn
initDb
dbWith
emptyDb
entityDb
entity
touch
resolveTempids

Getting started #
flutter pub add flutter_js_datascript
copied to clipboard
Usage #
import 'package:flutter_js_datascript/flutter_js_datascript.dart';

void main() async {
var d = Datascript();

// create DB schema, a regular JS Object
final builder = SchemaBuilder()
..attr('aka', cardinality: Cardinality.many)
..attr('friend', valueType: ValueType.ref);
final schema = builder.build();

// Use JS API to create connection and add data to DB
// create connection using schema
var conn = d.createConn(schema: schema);

// setup listener called main
// pushes each entity (report) to an Array of reports
// This is just a simple example. Make your own!
var reports = [];
d.listen(conn, 'main', (report) {
reports.add(report);
});

// define initial datoms to be used in transaction
var datoms = [
{
":db/id": -1,
"name": "Ivan",
"age": 18,
"aka": ["X", "Y"]
},
{
":db/id": -2,
"name": "Igor",
"aka": ["Grigory", "Egor"]
},
// use :db/add to link datom -2 as friend of datom -1
[":db/add", -1, "friend", -2]
];

// Tx is Js Array of Object or Array
// pass datoms as transaction data
var report = d.transact(conn, datoms, txMeta: "initial info about Igor and Ivan");

var db = d.db(conn);

// Fetch names of people who are friends with someone 18 years old
// query values from conn with JS API
var result = await d.q(
'[:find ?n :in \$ ?a :where [?e "friend" ?f] [?e "age" ?a] [?f "name" ?n]]',
[db, 18]);
// print query result to console!
print(result); // [["Igor"]]
}
copied to clipboard

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.