Skip to content

GriffinDB is a decentralized, offline-first, key-value based, document-oriented database built on the Sia blockchain

License

Notifications You must be signed in to change notification settings

giraffekey/griffindb-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

griffin

NOTICE This project never went beyond the idea phase and was never implemented into a working project. The code in this repository does not work.

Griffin is a decentralized, offline-first, key-value based, document-oriented database built on the Sia blockchain.

Users are empowered with the ability to store their own easily accessible encrypted data permanently without relying on centralized providers.

Developers are empowered with a flexible and easy-to-use database that can function as a MongoDB-like query language, key-value store, chain context graph or file storage engine.

Usage

npm i griffindb

yarn add griffindb

openbits install griffindb

import Griffin from "griffin-browser"

const griffin = Griffin("https://siasky.net")
const key = await griffin.gen() // The user's key
const db = await griffin.namespace("my-app", key)

const dogs = db.collection("dogs")

// Insertion
await dogs.insert([
  { name: "Gordon", color: "black", age: 3, owners: ["John", "Cindy"] },
  { name: "Pooch", color: "brown", age: 5, owners: ["John", "Cindy"] },
  { name: "Snuffles", color: "brown", age: 7, owners: ["Karen"] },
  ...
]).many()

// Finds and queries
console.log(await dogs.find({ color: "brown" }).sort({ name: 1 }).one())
console.log(await dogs.find({ name: { $or: ["Gordon", "Pooch"] } }).fields({ _id: 0 }).many())
console.log(await dogs.find({ age: { $lt: 7, $gte: 3 } }).limit(10).many())

// Update/replace
await dogs.update({ age: 5 }, { $inc: { age: 1 } }).one()
await dogs.replace({ name: "Gordon" }, { name: "Gordon Ramsey", color: "blonde", age: 54, owners: null }).one()

// Key-value store
await db.set("username", "gnufag")
await db.get("friends") // returns null in this scenario
await db.remove("typoo")

// Chain context
await db.chain("options").set("skynet-portal", "https://custom-sky.net")
await db.chain("deeply").chain("nested").chain("chains").chain("are").get("cool")

About

GriffinDB is a decentralized, offline-first, key-value based, document-oriented database built on the Sia blockchain

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •