1.0.3 • Published 3 years ago

thanathip-orm v1.0.3

Weekly downloads
-
License
-
Repository
github
Last release
3 years ago

thanathip-orm

NPM version NPM downloads

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 = 
1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

0.0.1

3 years ago

1.0.0

3 years ago