1.0.3 • Published 3 years ago
thanathip-orm v1.0.3
thanathip-orm
mysql object relation mapping
Install
Install with npm:
npm install thanathip-orm --save
Usage
// ## simple
// import { DB , Model } from 'thanathip-orm';
const { DB , Model } = require('thanathip-orm');
// @promise
await DB.table('users').all()
class User extends Model {}
await new User().all()
await new User().where('active',true).get()
await new User().where('username','simple').where('id',1).first()
await new User().find(1)
// ## create
await new User()
.create({
'name' : 'name',
'username': 'users'
}).save()
// ## update
await new User()
.where('id',1)
.update({
'name': 'users12345'
}).save()
// ## delete
await new User().where('id',1).delete()
// ## relation
// support 'hasOne' ,'hasMany' ,'belongsTo','belongsToMany'
// @ import es6
const Brand = require('./models/Brand')
const Role = require('./models/Role')
const Phone = require('./models/Phone')
const Car = require('./models/Car')
class User extends Model{
constructor(){
super()
this.hasMany({name : 'phones', model: Phone })
// relation child in relation parent required name parent . name child
this.hasOne({name : 'phones.brand', model: Brand ,child : true})
this.belongsTo({name : 'car', model: Car })
this.belongsToMany({name : 'roles', model: Role })
}
}
await new User().with('car','phones').withHas('roles').get()
Method Chaining
// method
where(column , operator , value)
orwhere(column , operator , value)
whereIn(column , [])
whereNotIn(column , [])
whereNull(column)
whereNotNull(column)
whereBetween (column , [value1 , value2])
whereSubQuery(colmn , rawSql)
select(column1 ,column2 ,...)
join (primary key , table.foreign key)
limit (value)
orderBy (column ,'ASC' || 'DSCE')
latest (column)
oldest (column)
groupBy (column)
// #relation
// @name relation
with(name , ...name)
withHas(nameParent.nameChild , ...nameParent.nameChild)
// exc data
all() // array object all data
get() // array object with condition
first() // object
firstOrFail() // object if null throw 404
find(id) // object find by id
toArray(column) // array
count(column) // number
rawQuery(rawSQL) // array object with raw sql
pagination(limit,page) // current page total & array object
getGroup(column) // // array object with group
Cli
npm install thanathip-orm -g
// use command line
thanathip-orm make:model FOLDER/MODEL
thanathip-orm make:model FOLDER/MODEL --es6 // create model es6
// ex
thanathip-orm make:model Models/User
const { Model } = require ('thanathip-orm')
// es6
// import Model from 'thanathip-orm'
class User extends Model{
constructor(){
super()
/*
// config model
this.DEFAULT_ORDER_BY = false // default order by id
this.DEFAULT_SCOPE = {
where: {
// column : value
},
whereNot : {},
whereNull : {},
whereNotNull : {}
}
this.TIMESTAMP = true
this.SOFT_DELETE = false
// this.freezeTable('your table') default users
this.PATTERN = 'snake_case' // 'camelCase' || 'snake_case'
*/
}
}
// es6
// export default User
module.exports = User
env
// ## created file .env for connect mysql
NODE_ENV = development // development || production
DB_HOST = localhost
DB_PORT = 3306
DB_USERNAME = root
DB_PASSWORD = password
DB_DATABASE = database
DB_HOST_PROD =
DB_PORT_PROD =
DB_USERNAME_PROD =
DB_PASSWORD_PROD =
DB_DATABASE_PROD =