Socket
Socket
Sign inDemoInstall

apollo-link-pouch

Package Overview
Dependencies
8
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    apollo-link-pouch

Use GraphQL with PouchDB and Apollo


Version published
Maintainers
1
Install size
4.97 MB
Created

Readme

Source

npm package npm downloads

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

Inspired by apollo-link-firebase.

This is not ready for production! Use at your own risk. Feel free to make pull requests for any suggestions - I am still rather inexperienced with Apollo and could use the help.

Demos

Notes app

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

Last updated on 24 Jun 2019

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc