0.1.1 • Published 7 years ago

jatabase v0.1.1

Weekly downloads
5
License
-
Repository
github
Last release
7 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

7 years ago

0.0.13

7 years ago

0.0.12

9 years ago

0.0.11

9 years ago

0.0.10

9 years ago

0.0.9

9 years ago

0.0.8

9 years ago

0.0.7

9 years ago

0.0.6

9 years ago

0.0.5

9 years ago

0.0.4

9 years ago

0.0.3

9 years ago

0.0.2

9 years ago

0.0.1

9 years ago