@ampatspell/sofa-store

0.0.4 • Public • Published

sofa-store

import Store from '@ampatspell/sofa-store';

let url = 'http:/127.0.0.1:5984';

let database = function(name) {
  return `${name}_development`;
}

let store = new Store({ url, database });

Init variants

With name and password

let name = 'ampatspell';
let password = 'hello';
let store = new Store({ url, name, password, database });

With cookie

let store = new Store({ url, cookie, database });

Store

store.cookie = '...' // sets cookie
store.cookie // returns cookie

store.url = url // sets url
store.url // returns url

store.request(opts) // => response
store.info() // => database info
store.uuid() // => single uuid
store.uuids(count) // => uuids
store.databases() // => database names

store.session // Session
store.database(name) // Database

Session

session.request(opts) // => response
session.load() // =>
session.save(name, password) // =>
session.delete() // =>

Database

db.name // in-app used name
db.databaseName // mapped actual database name

db.database // DatabaseManagement
db.security // DatabaseSecurity
db.design // DesignDocuments

db.request // => response
db.info // =>
db.ensureFullCommit // =>

db.save(doc) // =>
db.load(id, opts) // =>
db.delete(id, rev) // =>
db.view(ddoc, name, opts) // =>
db.first(ddoc, name, opts) // => first document in view. rejects if no results
db.all(opts) // => _all_docs

DatabaseManagement

database.request(opts) // => response
database.create(opts) // { optional: false } => response
database.delete(opts) // { optional: false } => response
database.recreate(opts) // { type: 'database|documents', all: true|false } => response

DatabaseSecurity

security.request(opts) // => response
security.load() // => security doc
security.save(hash) // => response

DesignDocuments

design.id(name) // _design/${name}
design.load(name, opts) // { optional: false } => loaded doc or undefined if optional
design.save(name, hash) // => response with { saved: true|false }
design.delete(name, opts) // { optional: false } => response

Save checks document deepEqual before saving and if documents are identical, doesn't do anything.

let ddoc = {
  views: {
    'by-name': {
      map(doc) {
        if(doc.type !== 'thing') {
          return;
        }
        emit(doc._id, null);
      }
    }
  }
};

store.database('main').design.save('thing', ddoc).then(json => {
  // { id: '_design/main', rev: '1-qweasd', saved: true }
});

Readme

Keywords

Package Sidebar

Install

npm i @ampatspell/sofa-store

Weekly Downloads

1

Version

0.0.4

License

ISC

Last publish

Collaborators

  • ampatspell