Initialize Table
There are 3 params in constructor :
using params default
- Table Name [String] (Required)
- Query Log in console [Boolean] (Optional)
- Soft Delete [Boolean] (Optional)
using config params
you can using object configuration params with structure like this :
{
table: String,
showLog: Boolean,
softDelete: Boolean,
}
Example instance
const DataModel = new LDBX('users', true, false)
const config = {
table: 'users',
log: true,
softDelete: false,
}
const DataModel = new LDBX(config)
Get All Data
const UserModel = new LDBX('users')
var list = UserModel.get()
Get first / single data
const UserModel = new LDBX('users')
var data = UserModel.where('id', id).first()
Single selection where
const UserModel = new LDBX('users')
var data = UserModel.where('name', 'ikhbalfuady').get()
Multiple selection where
const UserModel = new LDBX('users')
var data = UserModel.where('age', '>=' 18)
.where('age', '<=', 25)
.get()
Find by id
const UserModel = new LDBX('users')
var data = UserModel.find(id)
Store Data
const UserModel = new LDBX('users')
let data = {
name: "John",
age: 21
}
UserModel.save(data)
Update Data
const UserModel = new LDBX('users')
let data = UserModel.find(id)
if (!data) throw error(`user with id"${id}" not found `)
data.name = "Ikhbalfuady"
UserModel.update(data)
Delete Data
const UserModel = new LDBX('users')
UserModel.delete(id)
const UserModel = new LDBX('users')
UserModel.delete(id, true)
Avail "Where" Operator
| Name |
value |
Syntax |
Status |
| Equal |
= |
.where('key', '=', value) OR .where('key', value) |
READY |
| Like / Contains |
like |
.where('key', 'like', value) |
READY |
| Less Than |
< |
.where('key', '<', value) |
READY |
| Less Than Equal |
<= |
.where('key', '<=', value) |
READY |
| Greater Than |
> |
.where('key', '>', value) |
READY |
| Greater Than Equal |
>= |
.where('key', '>=', value) |
READY |
| Is NULL |
N/n |
.where('key', 'N', value) OR .where('key', 'n', value) |
READY |
| Is NOT NULL |
NN / nn |
.where('key', 'NN', value) OR .where('key', 'nn', value) |
READY |
| IN |
IN |
.where('key', 'IN', arrayValue) // arrayValue = [1,2,3] |
READY |
| NOT IN |
NIN |
.where('key', 'NIN', arrayValue) // arrayValue = [1,2,3] |
READY |
Other Features
trashed()
this is method chaining to getting only trashed data
var UserModel = new LDBX('users')
.trashed()
.get()
withTrashed()
this is method chaining to getting all with trashed data if you using softDelete
var UserModel = new LDBX('users')
.withTrashed()
.get()
truncate()
this is method chaining to clean up data
var UserModel = new LDBX('users')
.truncate()
hasData()
this is method chaining to checking table has already have data or not
var UserModel = new LDBX('users')
.hasData()
getFillableColumn()
this is method chaining to getting fillable columns of object you set
var UserModel = new LDBX('users')
var user = UserModel.find(1)
var fillableColumns = UserModel.getFillableColumn(user)
fixStructure()
this is method chaining to fixing structure like ALTER TABLE in SQL\
when you chaning structure of object model you have, you just call this method for fix that
example :
let UsersSpec = {
dbConfig: {
table: 'users',
showLog: true,
softDelete: true,
},
dataModel: {
id: null,
name: null,
email: null
}
}
const UserModel = new LDBX(UsersSpec.dbConfig)
const fillableColumns = UserModel.getFillableColumn(UsersSpec.dataModel)
let UsersSpec = {
dbConfig: {
table: 'users',
showLog: true,
softDelete: true,
},
dataModel: {
id: null,
name: null,
email: null,
phone: null,
born_date: null,
}
}
const UserModel = new LDBX(UsersSpec.dbConfig)
const newFillableColumns = UserModel.getFillableColumn(UsersSpec.dataModel)
UserModel.fixStructure(newFillableColumns)
orderBy(key, type?, dateFormat?)
this is method chaining to implementing "order data" of result query \
- key : String // object key
- type : Enum(asc,desc) (default : asc)
- dateFormat : Boolean (default : false) // for sorting date type data
const UserModel = new LDBX('jorunal')
.orderBy('key')
.get()
const UserModel = new LDBX('jorunal')
.orderBy('key', 'desc')
.get()
const UserModel = new LDBX('transaction')
.orderBy('date', 'desc', true)
.get()
- Atenttion : order can only be executed once per query, even if you add multiple 'orderBy', the last 'orderBy' is recognized
belongsTo(tableName, foreignKey, newObjectName?, targetKey?)
this is method chaining to implementing relation of some data \
this method will be created new single object for every object result data \
- tableName : name of table
- foreignKey : foreign key object, ex : role_id
- newObjectName : object name for the relation , ex : role
- targetKey : target key object of source data, default is "id"
const UserModel = new LDBX('users')
.belongsTo('roles', 'role_id', 'role') // simply version
.first()
/* return
{
id: 1
name: 'John',
role_id: 1,
roles: {
id: 1,
name: 'Admin',
},
}
*/
const UserModel = new LDBX('jorunal')
.belongsTo('coa', 'coa_revenue_code', 'coa_revenue', 'code') // full version
.get()
/* return
[
{
id: 1
name: 'TRX Forex',
coa_revenue_code: '101020230'
coa_revenue: {
code: '101020230',
name: 'Fix Revenue',
}
},
{
id: 2
name: 'TRX others',
coa_revenue_code: '4305353353'
coa_revenue: {
code: '4305353353',
name: 'Other Revenue',
}
}
]
*/
hasMany(tableName, foreignKey, newObjectName?, targetKey?)
this is method chaining to implementing relation of some data\
this method will be created new single object with array result for every object in result data\
- tableName : name of table
- foreignKey : foreign key object, ex : role_id
- newObjectName : object name for the relation , ex : role
- targetKey : target key object of source data, default is "id"
const UserModel = new LDBX('users')
.hasMany('roles', 'role_id', 'roles') // simply version
.first()
/* return
{
id: 1
name: 'John',
roles: [
{
id: 1,
name: 'Admin',
},
{
id: 2,
name: 'Staff',
}
],
}
*/
const UserModel = new LDBX('jorunal')
.hasMany('coa', 'coa_revenue_code', 'coa_revenues', 'code') // full version
.get()
/* return
[
{
id: 1
name: 'transaction',
coa_revenues: [
{
code: '101020230',
name: 'Fix Reveneu',
},
{
code: '105020230',
name: 'Other Revenue
],
}
]
*/