Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

apollo-link-pouch

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

apollo-link-pouch

Use GraphQL with PouchDB and Apollo

  • 0.0.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
5
Maintainers
1
Weekly downloads
 
Created
Source

npm package npm downloads

Provides an Apollo Link to use GraphQL with a local PouchDB.

Inspired by apollo-link-firebase.

Installation

npm install apollo-link-pouchdb

Getting Started

import PouchDB from 'pouchdb'
import { createPouchLink } from 'apollo-link-pouch'

const client = new ApolloClient({
  link: createPouchLink({
    database: new PouchDB('my-database')
  }),
  cache: new InMemoryCache()
})

Roadmap

PouchDB API

  • get

    const query = gql`
      query getPerson {
        person @pdbGet(id: "1") {
          _id
          _rev
          name
        }
      }
    `
    
  • bulkGet

    const query = gql`
      query bulkGet {
        people @pdbBulkGet(docs: [{ id: "1" }, { id: "2" }]) {
          results {
            docs {
              ok {
                _id
                _rev
                name
              }
            }
          }
        }
      }
    `
    
  • put

    const mutation = gql`
      fragment PersonInput on pouchdb {
        _id: String
        _rev: string
        name: String
      }
    
      mutation putDoc($input: PersonInput!) {
        updatePerson(input: $input) @pdbPut {
          ok
          _rev # for consistency with input, "rev" from db.put response is returned as "_rev"
          name
        }
      }
    `
    

    @pdbPut also takes an options argument for put options

  • post

    const mutation = gql`
      fragment PersonInput on pouchdb {
        _id: String
        _rev: string
        name: String
      }
    
      mutation postDoc($input: PersonInput!) {
        createPerson(input: $input) @pdbPost {
          _id
          _rev
          name
        }
      }
    `
    

    @pdbPost also takes an options argument for post options

  • bulkDocs

    const mutation = gql`
      fragment PersonInput on pouchdb {
        _id: String
        _rev: string
        name: String
      }
    
      mutation postDoc($input: [PersonInput]!) {
        savePeople(input: $input) @pdbBulkDocs {
          _id
          _rev
          name
        }
      }
    `
    

    @pdbBulkDocs also takes an options argument for bulkDocs options

  • allDocs

    const query = gql`
      query allDocs {
        people @pdbAllDocs(keys: ["1", "2"], include_docs: true) {
          rows {
            id
            rev
            doc
            value
          }
          total_rows
          offset
        }
      }
    `
    
  • query

    const query = gql`
      query queryPeople {
        people @pdbQuery(view: "index", include_docs: true) {
          rows {
            doc {
              name
            }
          }
          total_rows
        }
      }
    `
    
  • find supported via @pdbPlugin

Features

  • subscriptions

    • using db change listeners?
  • multiple databases

    • via @db directive or additional db parameter to all queries/mutations?
  • plugins (queries only for now)

    using pouchdb-quick-search

    PouchDB.plugin(require('pouchdb-quick-search'))
    
    const query = gql`
      query searchPlugin {
        search @pdbPlugin @search(query: "bob", fields: ["name"]) {
          rows {
            id
            score
          }
          total_rows
        }
      }
    `
    

Keywords

FAQs

Package last updated on 16 Dec 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc