firenze-adapter-sqlite
v0.1.1
Published
SQLite adapter for firenze.js ORM
Downloads
9
Readme
firenze-adapter-sqlite
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
})