sqlite-orm
the ORM framework for sqlite
Install
$ npm install --save sqlite-orm
Usage
The coffeescript sample code
Mapper = require 'sqlite-orm'path = require 'path'Migration = MapperMigrationModelBase = MapperModelBase MigrationcreateTable 'ParentModel' taddColumn 'name''TEXT' MigrationcreateTable 'ChildModel' taddColumn 'name''TEXT' taddReference 'parentModelId''ParentModel' ModelBaseincludeInto this : @initModel params : -> @belongsTo ParentModel ModelBaseincludeInto this : @initModel params : -> @hasOne ChildModel mapper = pathresolve__dirname'test.db'mappersync
The corresponding javascript code.
var Mapper = ;var Migration = MapperMigration;var ModelBase = MapperModelBase;var path = ; Migration; Migration; { this;}ModelBase; { this;}ModelBase; ParentModel;ChildModel; mapper = path;mapper;
More sample can refer to below sites:
API
Mapper
-
sync
function()
synchronize the model definition and the database- return:
Promise
- return:
-
close
function()
close the database- return:
Promise
- return:
-
beginTransaction:
function()
begin the transaction. -
endTransaction:
function()
end the transaction. -
scopeTransaction:
function(callback)
make the callback invoke in the transaction, after this callback complete,endTransaction
will invoke automatically. -
@Migration
Migration
get the Migration class -
@ModelBase
ModelBase
get the ModelBase class -
@INTEGER
String
the INTEGER data type -
@REAL
String
the REAL data type -
@TEXT
String
the TEXT data type -
@BLOB
String
the BLOB data type -
DATETIME
String
the Date date type. If declareDATETIME
, then the type of this attribute will beDate
. -
BOOL
String
the Bool date type.
Migration
-
@createTable:
function(tableName, callback)
create the database table-
tableName:
String
-
callback:
function(tableInfo)
create the columns in this callback- tableInfo:
TableInfo
the class to create the columns and index
- tableInfo:
-
-
@clear:
function()
clear the table definition
TableInfo
-
addColumn:
function(name, type, opts)
add the table column-
name:
String
the column name -
type:
String
the column data type, such asINTEGER
orTEXT
-
opts:
Object
the column options
-
-
createIndex:
function(indexName, columns)
add index for the specific column- indexName:
String
the index name. - columns:
Array
each item of columns is the column name that need index.
- indexName:
-
addReference:
function(name, tableName, opts)
add foreign key-
name: the column name that need index
-
tableName: the name of table that the index will point to
-
opts:
Object
the index options
-
ModelBase
-
@initAssos:
function()
declare the associationall the subclass must implement this interface to declare the association
-
@hasOne:
function(ChildModel, opts)
declare this Model has one child Model-
ChildModel:
ModelBase
orString
the child Model class or class name. -
opts:
Object
the options used for hasOne association- as:
String
(optional) the property name to refer to the ChildModel instance, the default value is "#{childModel}". e.g. ChildModel is 'ChildModel', then the as value ischildModel
- as:
-
-
@hasMany:
function(ChildModel, opts)
declare this Model has many children.-
ChildModel:
ModelBase
orString
the child Model class or class name. -
opts:
Object
the options used for hasOne association- as:
String
(optional) the property name to refer to the ChildModel instances, the default value is "#{childModels}". e.g. ChildModel is 'ChildModel', then the as value ischildModels
- as:
-
-
@hasManyBelongsTo:
function(TargetModel, opts)
declare this Model and the target Model is N-N connection. The description of this connection can refer to rails association guide-
TargetModel:
ModelBase
orString
the target Model class or class name. -
opts:
Object
the options used for this association.- midTableName:
String
the reference table name. - sourceThrough:
String
the column foreign key name that refer the Model. - targetThrough:
String
the column foreign key name that refer the TargetModel. - as:
String
just like@hasMany
or@hasOne
- midTableName:
-
-
@belongsTo:
function(ParentModel, opts)
declare this Model is member of ParentModel-
ParentModel:
ModelBase
orString
the parent Model class or class name. -
opts:
Object
the options used for hasOne association-
through:
String
(optional) the column name that used for foreign key, the default value is "#{ParentModel}#{primaryKey}". e.g. ParentModel name is 'ParentModel', primaryKey is 'id', then the foreign key isparentModelId
. -
as:
String
(optional) the property name to refer to the ParentModel instance, the default value is "#{ParentModel}". e.g. ParentModel is 'ParentModel', then the as value isparentModel
-
-
-
@new:
function(obj)
create a new model object, not saved into databaseobj:
Object
the attributes list -
@create:
function(obj)
just like@new
, but save into database -
@drop:
function()
drop the table -
@destroy:
function()
destroy this model object and delete the db row. -
@find:
function(where, opts)
find the object that match thewhere
statement -
@findAll:
function(where, opts)
find all of object match the condition
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using gulp.
License
Copyright (c) 2015 liuxiong. Licensed under the MIT license.