0.1.1 • Published 7 years ago

gresshelf v0.1.1

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

Gresshelf

Gressshelf is a nodejs wrapper around postgresql jsonb columns. That allows you to use postgres like you would use a nosql database like MongoDB in schema(less) format.

usage

initialize gresshelf with the postgress connection details, and your application schema

let gs = require('./gresshelf')
let db = new gs({
  postgres: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  },
  schema:{
    users: {
      email: { type: 'string'},
      password: { type: 'string' }
    },
    posts: {
      title: { type:'string' },
      created_at { type: 'date' }
    }
  }
})

The schema is for type safety, but can be changed easily at application level without touching the db

insert items

db.table(tableName).insert(data, options);

// after initializing gresshelf
// to insert a document into the users table
let promise = db.table('users').insert({
  name: 'Jason Bourne',
  tag: 'asset'
}).then(changes => {
  // item inserted
})
  • a random integer ID is generated for each inserted document

query items

db.table(tableName).filter(data, options);

// after initializing gresshelf
// to query documents from the users table
let promise = db.table('users').filter({
  name: 'Jason Bourne',
  tag: 'asset'
}).then(results => { // returns an array of values
  // results == []
})

// similar to saying, return fields where name == 'Jason Bourne' and tag === 'asset'

find a single item

  • if you have the ID, you can fetch that particular document db.table(tableName).getItem(id, options)

    async function () {
     let one = await db.table('users').getItem('225669998854755');
     // {
     //  id: '225669998854755',
     //  data,
     //  deleted: false,
     //  create_at: date,
     //  updated_at: date
     // }
    }

update item

db.table(tableName).updateItem(id, data, options);

WARNING updateItem replaces the whole document, therefore you should provide all the fields, even those that haven't changed.

// after initializing gresshelf
// to update a document in the users table
let promise = db.table('users').update('225669998854755', {
  name: 'Matt Damon',
  tag: 'nothing'
}).then(results => { // returns an array of values
  // results == integer showing number of rows changed
})
0.1.1

7 years ago

0.1.0

7 years ago

0.0.3

7 years ago

0.0.2

7 years ago

0.0.1

7 years ago

0.0.0

7 years ago