0.1.1 • Published 8 years ago

jatabase v0.1.1

Weekly downloads
5
License
-
Repository
github
Last release
8 years ago

jatabase

npm.io npm.io Build Status

This is advisable when you need a local simple database without any security -- is a JSON file. jatabase was created for a desktop application using electron, so, is also ideal for desktop application.

Installing

$ npm install jatabase --save

npm.io

Usage

All the persistence methods use promises, so they have an async way of using and a sync way.

Creating models

Create models with the method createModel. This model will contain all persistence methods like add and delete.

const Jatabase = require('jatabase'),
  jb = new Jatabase(__dirname + '/file.json'),
  models = {
    products: jb.createModel('products', {
      name: {
        type: 'string'
      },
      price: {
        type: 'number'
      },
      categories: {
        type: 'array'
      },
      description: {
        type: 'string'
      },
      created_at: {
        type: 'date'
      }
    })
  };

module.exports = models;

Field types

  • string
  • number
  • array
  • object
  • date Returns a Date object

Add

Async way

productsModel.add({name: 'Pear TV', price: 1280.00, categories: ['TV'], decription: 'Just a TV', created_at: new Date()}).then(success => {
    // ...
});

Sync way

productsModel.addSync({name: 'Pear TV', price: 2400.00, categories: ['TV'], decription: 'Just a TV'});

Find/Find one/Find all

Async way

// Using ID
productsModel.find(3).then(product => {
    // ...
});

// Using price
productsModel.find({price: 2400.00}).then(product => {
    // ...
});

// Find one
// Using ID
productsModel.findOne(3).then(product => {
    // ...
});

// Using price
productsModel.findOne({price: 2400.00}).then(product => {
    // ...
});

// Find all
productsModel.findAll().then(products => {
    // ...
});

Sync way

// Using ID
var product = productsModel.findSync(3);

// Using price
var product = productsModel.findSync({price: 2400.00});

// Find one
// Using ID
var product = productsModel.findOneSync(3);

// Using price
var product = productsModel.findOneSync({price: 2400.00});

// Find all
var products = productsModel.findAllSync();

Delete

Async way

// Using ID
productsModel.delete(3).then(success => {
    // ...
});

// Using price
productsModel.delete({price: 2400.00}).then(success => {
    // ...
});

Sync way

// Using ID
productsModel.deleteSync(3);

// Using price
productsModel.deleteSync({price: 2400.00});

Update

Async way

// Using ID
productsModel.set({price: 2500.00}, 5).then(success => {
    // ...
});

// Using name
productsModel.set({price: 2500.00}, {name: 'Pear TV'}).then(success => {
    // ...
});

Sync way

// Using ID
productsModel.setSync({price: 2500.00}, 5);

// Using name
productsModel.setSync({price: 2500.00}, {name: 'Pear TV'});

Search

Async way

// Using 
productsModel.search({name: 'TV'}).then(products => {
    // ...
});

// Case sensitive off
productsModel.search({name: 'TV'}, {lowerCase: true}).then(products => {
    // ...
});

Sync way

// Using 
var products = productsModel.searchSync({name: 'TV'});

// Case sensitive off
var products = productsModel.searchSync({name: 'TV'}, {lowerCase: true});

Has method

Async way

// Using ID
productsModel.has(5).then(has => {
    // ...
});

// Using another fields
productsModel.has({name: 'Pear TV'}).then(has => {
    // ...
});

Sync way

// Using ID
productsModel.hasSync(5);

// Using another fields
productsModel.hasSync({name: 'Pear TV'});

Associations

Fields can be represented by another collections. There are two kinds of associations: by foreign id or array of foreign ids. This way, on a consult, all the ids will be transformed to objects.

const usersLevelsModel = jb.createModel('users_levels', {
    name: {type: 'string'}
  }),
  usersModel = jb.createModel('users', {
    name: {type: 'string'},
    level: {
      type: 'number',
      associatedTo: 'users_levels'
    }
  });

License

MIT License 2017 © Gabriel Jacinto.

0.1.1

8 years ago

0.0.13

8 years ago

0.0.12

10 years ago

0.0.11

10 years ago

0.0.10

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago