firenze-adapter-sqlite

0.1.1 • Public • Published

firenze-adapter-sqlite

Build Status Coverage Status npm Join the chat at https://gitter.im/fahad19/firenze

SQLite adapter for firenze.js

Install it with npm: npm install --save firenze-adapter-sqlite

Contents

Install

$ npm install --save firenze-adapter-sqlite

Usage

You aren't expected to deal with the Adapter directly. Just pass the adapter to Database config when you create an instance.

var f = require('firenze');
var Database = f.Database;
var SqliteAdapter = require('firenze-adapter-sqlite');
 
var db = new Database({
  adapter: SqliteAdapter,
  filename: 'my_database.sqlite'
});

Schema

When defining a Model's schema, you need to pass option for each column's type.

Here are the supported types from this adapter:

  • increments
  • integer
  • bigInteger
  • text
  • string
  • float
  • decimal
  • boolean
  • date
  • dateTime
  • uuid

Example:

var Post = db.createModelClass({
  schema: {
    id: {
      type: 'increments'
    }
  }
});

Finders

Examples below assumes you have an instance of Collection already:

var posts = new Posts();

first

Gives you the first matched result:

posts.find('first', {
  conditions: {
    id: 1
  }
}).then(function (post) {
  // post is now an instance of Post model
  var title = post.get('title');
});

all

Gives you all matched results:

posts.find('all', {
  conditions: {
    published: true
  }
}).then(function (models) {
  models.forEach(function (model) {
    var title = model.get('title');
  });
});

list

Gives you a list of key/value paired object of matched results:

posts.find('list', {
  conditions: {},
  fields: [
    'id',
    'title'
  ]
}).then(function (list) {
  // list is now:
  //
  // {
  //   1: 'Hello World',
  //   2: 'About'
  // }
});

count

Gives you the total count of matched results:

posts.find('count').then(function (count) {
  // count is an integer here
});

Complex conditions

equals

posts.find('all', {
  conditions: {
    id: 1
  }
});

in list

posts.find('all', {
  conditions: {
    id: [
      1,
      2,
      3
    ]
  }
});

comparisons

posts.find('all', {
  conditions: {
    'Post.rating >': 3
  }
})

Example comparisons that you can try:

  • greater than ModelAlias.field >
  • greater than or equel to ModelAlias.field >=
  • less than ModelAlias.field <
  • less than or equal to ModelAlias.field <=
  • not equal to ModelAlias.field !=

AND

posts.find('all', {
  conditions: {
    AND: {
      'Post.published': 1
    }
  }
});

OR

posts.find('all', {
  conditions: {
    OR: {
      'Post.published': 1
    }
  }
});

NOT

posts.find('all', {
  conditions: {
    NOT: {
      'Post.published': 1
    }
  }
});

Order

For ordering results:

posts.find('all', {
  order: {
    'Post.title': 'asc'
  }
});

Group

For grouping result set:

posts.find('all', {
  group: [
    'column_name'
  ]
});

Fields

Select only a number of fields:

posts.find('all', {
  fields: [
    'id',
    'title'
  ]
});

Limit (pagination)

Limit number of results:

posts.find('all', {
  limit: 10
});

If you want to go through paginated results:

posts.find('all', {
  limit: 10,
  page: 2
})

Package Sidebar

Install

npm i firenze-adapter-sqlite

Weekly Downloads

6

Version

0.1.1

License

MIT

Last publish

Collaborators

  • alexweber
  • fahad19