Socket
Book a DemoInstallSign in
Socket

bookshelf-consul-pilot

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

bookshelf-consul-pilot

Create a Knex/Bookshelf connection that updates dynamically using consul-pilot.

0.1.0
latest
Source
npmnpm
Version published
Maintainers
1
Created
Source

bookshelf-consul-pilot

Version Build Status Downloads

Installation

Your database connection file might look something like this:

const BookshelfConsulPilot = require('bookshelf-consul-pilot');
const knexfile = require('../../knexfile').development;
const path = require('path');

// Argument 1: The knex config that you would use to instantiate Bookshelf
// Argument 2: The Consul database service name to listen for changes in connections on
// Argument 3: The path to your Bookshelf models folder that bookshelf-consul-pilot will read models from
// Argument 4: A function for configuring Bookshelf plugins. This will called every time a new connection is reported
// Argument 5: Optionally bypass the new connection watching by passing true. Useful for dev and in some cases unit testing
module.exports = new BookshelfConsulPilot(knexfile, 'database', path.join(__dirname, '/../models'), (bookshelf) => {
    bookshelf.plugin('pagination');
    bookshelf.plugin(require('bookshelf-signals')());
});

Usage

Defining Models

Ensure that your model files are wrapped in a function that accepts bookshelf as an argument:

module.exports = (bookshelf) => {
    return bookshelf.Model.extend({
        tableName: 'books',
    });
};

Querying

// include the file created in the Installation step
const db = require('database');

// you can fetch the bookshelf and knex instances like so
// db.bookshelf
// db.knex

function getBooks() {
    // when using Bookshelf models, always fetch the model instance like so. The 'book' argument is
    // the filename of your model in the models directory you specified in the Installation step
    db.model('book').fetchPage()
        .then((books) => {
            console.log(books);
        });
}

Registering Events

Anything that must modify the Bookshelf instance or its models must be wrapped in a register. This allows bookshelf-consul-pilot to completely reset the Bookshelf instance if a new connection were to be reported. An example is events using the bookshelf-signals plugin:

const db = require('database');

db.register((bookshelf) => {

    bookshelf.on('created', db.model('book'), (model) => {
        console.log('created fired!');
    });

    bookshelf.on('updated', db.model('book'), (model) => {
        console.log('updated fired!');
    });

});

Keywords

bookshelf

FAQs

Package last updated on 16 Jan 2017

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

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.