234 |
235 |
Initialize Table
236 |
There are 3 params in constructor :
237 |
238 | using params default
239 |
240 | - Table Name [String] (Required)
241 | - Query Log in console [Boolean] (Optional)
242 | - Soft Delete [Boolean] (Optional)
243 |
244 | using config params
245 | you can using object configuration params with structure like this :
246 | {
247 | table: String,
248 | showLog: Boolean,
249 | softDelete: Boolean,
250 | }
251 |
252 |
Example instance
253 |
254 |
255 | const DataModel = new LDBX('users', true, false)
256 |
257 |
258 |
259 | const config = {
260 | table: 'users',
261 | log: true,
262 | softDelete: false,
263 | }
264 | const DataModel = new LDBX(config)
265 |
266 |
Get All Data
267 |
const UserModel = new LDBX('users')
268 | var list = UserModel.get()
269 |
270 |
Get first / single data
271 |
const UserModel = new LDBX('users')
272 | var data = UserModel.where('id', id).first()
273 |
274 |
Single selection where
275 |
const UserModel = new LDBX('users')
276 | var data = UserModel.where('name', 'ikhbalfuady').get()
277 |
278 |
Multiple selection where
279 |
280 | const UserModel = new LDBX('users')
281 | var data = UserModel.where('age', '>=' 18)
282 | .where('age', '<=', 25)
283 | .get()
284 |
285 |
Find by id
286 |
const UserModel = new LDBX('users')
287 | var data = UserModel.find(id)
288 |
289 |
Store Data
290 |
const UserModel = new LDBX('users')
291 | let data = {
292 | name: "John",
293 | age: 21
294 | }
295 |
296 | UserModel.save(data)
297 |
298 |
Update Data
299 |
const UserModel = new LDBX('users')
300 | let data = UserModel.find(id)
301 | if (!data) throw error(`user with id"${id}" not found `)
302 |
303 |
304 | data.name = "Ikhbalfuady"
305 | UserModel.update(data)
306 |
307 |
Delete Data
308 |
const UserModel = new LDBX('users')
309 | UserModel.delete(id)
310 |
311 |
312 | const UserModel = new LDBX('users')
313 | UserModel.delete(id, true)
314 |
Avail "Where" Operator
315 |
316 |
317 |
318 | | Name |
319 | value |
320 | Syntax |
321 | Status |
322 |
323 |
324 |
325 |
326 | | Equal |
327 | = |
328 | .where('key', '=', value) OR .where('key', value) |
329 | READY |
330 |
331 |
332 | | Like / Contains |
333 | like |
334 | .where('key', 'like', value) |
335 | READY |
336 |
337 |
338 | | Less Than |
339 | < |
340 | .where('key', '<', value) |
341 | READY |
342 |
343 |
344 | | Less Than Equal |
345 | <= |
346 | .where('key', '<=', value) |
347 | READY |
348 |
349 |
350 | | Greater Than |
351 | > |
352 | .where('key', '>', value) |
353 | READY |
354 |
355 |
356 | | Greater Than Equal |
357 | >= |
358 | .where('key', '>=', value) |
359 | READY |
360 |
361 |
362 | | Is NULL |
363 | N/n |
364 | .where('key', 'N', value) OR .where('key', 'n', value) |
365 | READY |
366 |
367 |
368 | | Is NOT NULL |
369 | NN / nn |
370 | .where('key', 'NN', value) OR .where('key', 'nn', value) |
371 | READY |
372 |
373 |
374 | | IN |
375 | IN |
376 | .where('key', 'IN', arrayValue) // arrayValue = [1,2,3] |
377 | READY |
378 |
379 |
380 | | NOT IN |
381 | NIN |
382 | .where('key', 'NIN', arrayValue) // arrayValue = [1,2,3] |
383 | READY |
384 |
385 |
386 |
387 |
388 |
Other Features
389 |
trashed()
390 |
this is method chaining to getting only trashed data
391 |
var UserModel = new LDBX('users')
392 | .trashed()
393 | .get()
394 |
withTrashed()
395 |
this is method chaining to getting all with trashed data if you using softDelete
396 |
var UserModel = new LDBX('users')
397 | .withTrashed()
398 | .get()
399 |
truncate()
400 |
this is method chaining to clean up data
401 |
var UserModel = new LDBX('users')
402 | .truncate()
403 |
hasData()
404 |
this is method chaining to checking table has already have data or not
405 |
var UserModel = new LDBX('users')
406 | .hasData()
407 |
getFillableColumn()
408 |
this is method chaining to getting fillable columns of object you set
409 |
410 | var UserModel = new LDBX('users')
411 | var user = UserModel.find(1)
412 | var fillableColumns = UserModel.getFillableColumn(user)
413 |
fixStructure()
414 |
this is method chaining to fixing structure like ALTER TABLE in SQL\
415 | when you chaning structure of object model you have, you just call this method for fix that
416 | example :
417 |
418 | let UsersSpec = {
419 | dbConfig: {
420 | table: 'users',
421 | showLog: true,
422 | softDelete: true,
423 | },
424 | dataModel: {
425 | id: null,
426 | name: null,
427 | email: null
428 | }
429 | }
430 | const UserModel = new LDBX(UsersSpec.dbConfig)
431 | const fillableColumns = UserModel.getFillableColumn(UsersSpec.dataModel)
432 |
435 |
436 |
437 | let UsersSpec = {
438 | dbConfig: {
439 | table: 'users',
440 | showLog: true,
441 | softDelete: true,
442 | },
443 | dataModel: {
444 | id: null,
445 | name: null,
446 | email: null,
447 | phone: null,
448 | born_date: null,
449 | }
450 | }
451 |
452 |
453 | const UserModel = new LDBX(UsersSpec.dbConfig)
454 | const newFillableColumns = UserModel.getFillableColumn(UsersSpec.dataModel)
455 | UserModel.fixStructure(newFillableColumns)
456 |
orderBy(key, type?, dateFormat?)
457 |
this is method chaining to implementing "order data" of result query \
458 |
459 | - key : String // object key
460 | - type : Enum(asc,desc) (default : asc)
461 | - dateFormat : Boolean (default : false) // for sorting date type data
462 |
463 |
const UserModel = new LDBX('jorunal')
464 | .orderBy('key')
465 | .get()
466 |
467 | const UserModel = new LDBX('jorunal')
468 | .orderBy('key', 'desc')
469 | .get()
470 |
471 |
472 | const UserModel = new LDBX('transaction')
473 | .orderBy('date', 'desc', true)
474 | .get()
475 |
476 | - Atenttion : order can only be executed once per query, even if you add multiple 'orderBy', the last 'orderBy' is recognized
477 |
478 |
479 |
belongsTo(tableName, foreignKey, newObjectName?, targetKey?)
480 |
this is method chaining to implementing relation of some data \
481 | this method will be created new single object for every object result data \
482 |
483 | - tableName : name of table
484 | - foreignKey : foreign key object, ex : role_id
485 | - newObjectName : object name for the relation , ex : role
486 | - targetKey : target key object of source data, default is "id"
487 |
488 |
const UserModel = new LDBX('users')
489 | .belongsTo('roles', 'role_id', 'role') // simply version
490 | .first()
491 |
492 | /* return
493 | {
494 | id: 1
495 | name: 'John',
496 | role_id: 1,
497 | roles: {
498 | id: 1,
499 | name: 'Admin',
500 | },
501 | }
502 | */
503 |
504 | const UserModel = new LDBX('jorunal')
505 | .belongsTo('coa', 'coa_revenue_code', 'coa_revenue', 'code') // full version
506 | .get()
507 |
508 | /* return
509 | [
510 | {
511 | id: 1
512 | name: 'TRX Forex',
513 | coa_revenue_code: '101020230'
514 | coa_revenue: {
515 | code: '101020230',
516 | name: 'Fix Revenue',
517 | }
518 | },
519 | {
520 | id: 2
521 | name: 'TRX others',
522 | coa_revenue_code: '4305353353'
523 | coa_revenue: {
524 | code: '4305353353',
525 | name: 'Other Revenue',
526 | }
527 | }
528 | ]
529 | */
530 |
531 |
hasMany(tableName, foreignKey, newObjectName?, targetKey?)
532 |
this is method chaining to implementing relation of some data\
533 | this method will be created new single object with array result for every object in result data\
534 |
535 | - tableName : name of table
536 | - foreignKey : foreign key object, ex : role_id
537 | - newObjectName : object name for the relation , ex : role
538 | - targetKey : target key object of source data, default is "id"
539 |
540 |
const UserModel = new LDBX('users')
541 | .hasMany('roles', 'role_id', 'roles') // simply version
542 | .first()
543 | /* return
544 | {
545 | id: 1
546 | name: 'John',
547 | roles: [
548 | {
549 | id: 1,
550 | name: 'Admin',
551 | },
552 | {
553 | id: 2,
554 | name: 'Staff',
555 | }
556 | ],
557 | }
558 | */
559 |
560 | const UserModel = new LDBX('jorunal')
561 | .hasMany('coa', 'coa_revenue_code', 'coa_revenues', 'code') // full version
562 | .get()
563 |
564 | /* return
565 | [
566 | {
567 | id: 1
568 | name: 'transaction',
569 | coa_revenues: [
570 | {
571 | code: '101020230',
572 | name: 'Fix Reveneu',
573 | },
574 | {
575 | code: '105020230',
576 | name: 'Other Revenue
577 | ],
578 | }
579 | ]
580 | */
581 |
582 |
583 |