Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

kmore

waitingsong632MIT67.3.0TypeScript support: included

A SQL query builder based on knex with powerful TypeScript type support

knex, typeorm, sql, query, database, postgresql, pg, oracle, AST, ESM, typescript, ts

readme

kmore

A SQL query builder based on Knex with powerful TypeScript type support. Intergrated Tracing of OpenTelemetry. Declarative Transaction via decorator @Transactional

GitHub tag License ci codecov

Features

Install global deps for development

npm i -g c8 lerna madge rollup tsx zx

Installation

npm i kmore && npm i -D kmore-cli
// for Midway.js
npm i @mwcp/kmore && npm i -D kmore-cli

# Then add one of the following:
npm install pg
npm install pg-native
npm install mssql
npm install oracle
npm install sqlite3

pg-native-installation

Basic usage

Build configuration:

Edit the package.json

{
  "script": {
    "build": "tsc -b && npm run db:gen",
    "db:gen": "kmore gen --path src/ test/",
    "db:gen-cjs": "kmore gen --path src/ test/ --format cjs"
  },
}

Create connection

import { KnexConfig, kmoreFactory, genDbDict } from 'kmore'

// connection config
export const config: KnexConfig = {
  client: 'pg',
  connection: {
    host: 'localhost',
    user: 'postgres',
    password: 'foo',
    database: 'db_ci_test',
  },
}

// Define database model
export interface Db {
  tb_user: UserDo
  tb_user_ext: UserExtDo
}

export interface UserDo {
  uid: number
  name: string
  ctime: Date
}
export interface UserExtDo {
  uid: number
  age: number
  address: string
}  

const dict = genDbDict<Db>()
export const km = kmoreFactory({ config, dict })

Create tables with instance of knex

await km.dbh.schema
  .createTable('tb_user', (tb) => {
    tb.increments('uid')
    tb.string('name', 30)
    tb.timestamp('ctime', { useTz: false })
  })
  .createTable('tb_user_ext', (tb) => {
    tb.integer('uid')
    tb.foreign('uid')
      .references('tb_user.uid')
      .onDelete('CASCADE')
      .onUpdate('CASCADE')
    tb.integer('age')
    tb.string('address', 255)
  })
  .catch((err: Error) => {
    assert(false, err.message)
  })

Inert rows via auto generated table accessor

Snake style

// auto generated accessor tb_user() and tb_user_detail()
const { tb_user, tb_user_detail } = km.refTables

await tb_user()
  .insert([
    { user_name: 'user1', ctime: new Date() }, // ms
    { user_name: 'user2', ctime: 'now()' }, // μs
  ])
  .then()

const affectedRows = await tb_user_detail()
  .insert([
    { uid: 1, age: 10, user_address: 'address1' },
    { uid: 2, age: 10, user_address: 'address1' },
  ])
  .returning('*')
  .then()

Camel style

import { RecordCamelKeys } from '@waiting/shared-types'

// auto generated accessors tb_user() and tb_user_detail() 
const { tb_user, tb_user_detail } = km.camelTables

interface UserDO {
  user_name: string
  ctime: date | string
}
type UserDTO = RecordCamelKeys<UserDO>

const users: UserDTO[] = await tb_user()
  .insert([
    { userName: 'user1', ctime: new Date() }, // ms
    { userName: 'user2', ctime: 'now()' }, // μs
  ])
  .returning('*')
  .then()

Smart Join tables with types hint and auto complete

const uid = 1

// tb_user JOIN tb_user_ext ON tb_user_ext.uid = tb_user.uid
const ret = await km.camelTables.tb_user()
  .smartJoin(
    'tb_user_ext.uid',
    'tb_user.uid',
  )
  .select('*')
  .where({ uid }) // <-- has auto-complete with 'uid'
  // .where('uid', uid)   <-- has auto-complete with 'uid'
  // .where('tb_user_ext_uid', uid) <-- has auto-complete with 'tb_user_ext_uid'
  // .where(km.dict.scoped.tb_user.uid, 1)
  .then(rows => rows[0])

assert(ret)
ret.uid
ret.tb_user_ext_uid   // <-- duplicate uid will be converted with table prefix like "<tb_name>_<column>"

More examples of join see joint-table

Auto Paging

  • RawType:

    const options: Partial<PagingOptions> = {
      page: 2,      // default 1
      pageSize: 20, // default 10
    }
    const users = await tables.tb_user().autoPaging(options)
    assert(Array.isArray(users))
    assert(users.length)
    
    // not enumerable properties of pager
    const { 
      total,    // total records
      page,     // current page number, start from 1
      pageSize, // size of items each page
    } = users
    const [ user ] = users
  • WrapType:

    const options: Partial<PagingOptions> = {
      page: 2,      // default 1
      pageSize: 20, // default 10
    }
    const users = await tables.tb_user().autoPaging(options, true)
    assert(! Array.isArray(users))
    assert(Array.isArray(users.rows))
    assert(users.rows.length)
    
    // enumerable properties of pager
    const { 
      total,    // total records
      page,     // current page number, start from 1
      pageSize, // size of items each page
      rows,     // response records
    } = users
    const [ user ] = users.rows

More examples of auto paging see auto-paing

Declarative Transaction

Limitation:

  • not apply on base class
  • apply AsyncFunction only, means every result of query builder must be "await"ed
  • transaction propagation current supports only:
    • PropagationType.REQUIRED
    • PropagationType.SUPPORTS

Usage:

  • Class decorator

    import { Init, Inject, Singleton } from '@midwayjs/core'
    import { Transactional } from '@mwcp/kmore'
    
    @Transactional()  // <-- 
    @Singleton()
    export class UserRepo {
      @Inject() dbManager: DbManager<'master', Db>
    
      tb_user: Kmore<Db>['camelTables']['tb_user']
      tb_user_ext: Kmore<Db>['camelTables']['tb_user_ext']
    
      @Init()
      async init(): Promise<void> {
        const db = this.dbManager.getDataSource('master')
        assert(db)
        this.tb_user = db.camelTables.tb_user
        this.tb_user_ext = db.camelTables.tb_user_ext
      }
    
      async getUsers(): Promise<UserDTO[]> {
        const users = await this.tb_user()
        return users
      }
    
      // will throw error
      wrongUsage() {
        return this.tb_user()
      }
    }
  • Method decorator

    @Singleton()
    export class UserRepo {
      @Inject() dbManager: DbManager<'master', Db>
    
      tb_user: Kmore<Db>['camelTables']['tb_user']
      tb_user_ext: Kmore<Db>['camelTables']['tb_user_ext']
    
      @Init()
      async init(): Promise<void> {
        const db = this.dbManager.getDataSource('master')
        assert(db)
        this.tb_user = db.camelTables.tb_user
        this.tb_user_ext = db.camelTables.tb_user_ext
      }
    
      @Transactional()  // <--
      async getUsers(): Promise<UserDTO[]> {
        const users = await this.tb_user()
        return users
      }
    }

Use instance of knex

// drop table
await km.dbh.raw(`DROP TABLE IF EXISTS "${tb}" CASCADE;`).then()

// disconnect
await km.dbh.destroy()

Midway.js component

Config

// file: src/config/config.{prod | local | unittest}.ts

import { genDbDict } from 'kmore-types'
import { KmoreSourceConfig } from '@mwcp/kmore'
import { TbAppDO, TbMemberDO } from '../do/database.do.js'

export interface Db {
  tb_app: TbAppDO
  tb_user: TbMemberDO
}

export const dbDict = genDbDict<Db>()

const master: DbConfig<Db> = {
  config: {
    client: 'pg',
    connection: {
      host: 'localhost',
      port: 5432,
      database: 'db_test',
      user: 'postgres',
      password: 'password',
    },
  },
  dict: dbDict,
}
export const kmoreConfig: KmoreSourceConfig = {
  dataSource: {
    master,
    // slave,
  },
}  

Usage

import { Init, Inject, Singleton } from '@midwayjs/core'

@Provide()
@Singleton()
export class UserRepo {

  @Inject() dbManager: DbManager<'master' | 'slave', Db>

  protected db: Kmore<Db>

  @Init()
  async init(): Promise<void> {
    this.db = this.dbManager.getDataSource('master')
  }

  async getUser(uid: number): Promise<UserDTO | undefined> {
    const { tb_user } = this.db.camelTables
    const user = await tb_user()
      .where({ uid })
      .then(rows => rows[0])
    return user
  }
}

Demo

Packages

kmore is comprised of many specialized packages. This repository contains all these packages. Below you will find a summary of each package.

Package Version
kmore kmore-svg
kmore-types types-svg
kmore-cli cli-svg
@mwcp/kmore mw-svg

License

MIT

Languages


changelog

Change Log

All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

67.3.0 (2024-11-22)

Bug Fixes

Features

  • kmore: set active trace context (db01c4f)

67.2.2 (2024-10-30)

Note: Version bump only for package npm-mono-base

67.2.1 (2024-10-18)

Note: Version bump only for package npm-mono-base

67.2.0 (2024-10-18)

Features

  • mwcp: remove param useCachedDataSource of createDataSource() (a247747)

67.1.4 (2024-10-18)

Note: Version bump only for package npm-mono-base

67.1.3 (2024-10-18)

Note: Version bump only for package npm-mono-base

67.1.2 (2024-10-16)

Note: Version bump only for package npm-mono-base

67.1.1 (2024-10-10)

Note: Version bump only for package npm-mono-base

67.1.0 (2024-10-05)

Features

  • update enum RowLockLevel (9d9235a)

67.0.1 (2024-10-05)

Note: Version bump only for package npm-mono-base

67.0.0 (2024-09-15)

Note: Version bump only for package npm-mono-base

66.1.0 (2024-09-08)

Features

  • kmore: update auto paging functions with pagingGroupKey (f0704fd)
  • kmore: update genKmoreTrxId() (5a40bdc)
  • kmore: UpdateBuilderProperties() new param scope (fa2533b)
  • mwcp: start new trace span (group) on events when auto paging (bbe3b55)

66.0.4 (2024-09-07)

Performance Improvements

  • kmore: auto-paging limit (716b166)

66.0.3 (2024-09-05)

Note: Version bump only for package npm-mono-base

66.0.2 (2024-09-01)

Note: Version bump only for package npm-mono-base

66.0.1 (2024-08-24)

Note: Version bump only for package npm-mono-base

66.0.0 (2024-08-13)

Features

  • kmore: add transacting hooks (1517f33)
  • kmore: change return type of hooks to void or Promise<void> (ffe9bf4)
  • mwcp: trace log builder.transacting() by builderTransactingPostHooks (298139d)

65.0.2 (2024-08-13)

Note: Version bump only for package npm-mono-base

65.0.1 (2024-08-12)

Note: Version bump only for package npm-mono-base

65.0.0 (2024-08-12)

Note: Version bump only for package npm-mono-base

64.0.0 (2024-07-24)

Note: Version bump only for package npm-mono-base

63.2.0 (2024-07-16)

Note: Version bump only for package npm-mono-base

63.1.0 (2024-07-16)

Features

  • remove prefix "ref_" of refTable, use blank (7ed3329)

63.0.0 (2024-07-15)

Note: Version bump only for package npm-mono-base

62.0.0 (2024-07-15)

Note: Version bump only for package npm-mono-base

61.2.10 (2024-07-12)

Note: Version bump only for package npm-mono-base

61.2.9 (2024-07-12)

Note: Version bump only for package npm-mono-base

61.2.8 (2024-07-12)

Bug Fixes

  • types: TypeScript 5.5 RangeError: Maximum call stack size exceeded (69d145e)

61.2.7 (2024-07-09)

Note: Version bump only for package npm-mono-base

61.2.6 (2024-07-09)

Bug Fixes

61.2.5 (2024-07-09)

Note: Version bump only for package npm-mono-base

61.2.4 (2024-07-09)

Note: Version bump only for package npm-mono-base

61.2.3 (2024-07-07)

Note: Version bump only for package npm-mono-base

61.2.2 (2024-06-03)

Note: Version bump only for package npm-mono-base

61.2.1 (2024-06-03)

Note: Version bump only for package npm-mono-base

61.2.0 (2024-06-02)

Note: Version bump only for package npm-mono-base

61.1.1 (2024-05-29)

Note: Version bump only for package npm-mono-base

61.1.0 (2024-05-28)

Note: Version bump only for package npm-mono-base

61.0.0 (2024-05-28)

Note: Version bump only for package npm-mono-base

60.1.1 (2024-05-23)

Note: Version bump only for package npm-mono-base

60.1.0 (2024-05-23)

Note: Version bump only for package npm-mono-base

60.0.2 (2024-05-22)

Note: Version bump only for package npm-mono-base

60.0.1 (2024-05-21)

Note: Version bump only for package npm-mono-base

60.0.0 (2024-05-06)

Note: Version bump only for package npm-mono-base

59.5.6 (2024-04-08)

Note: Version bump only for package npm-mono-base

59.5.5 (2024-04-06)

Note: Version bump only for package npm-mono-base

59.5.4 (2024-04-05)

Note: Version bump only for package npm-mono-base

59.5.3 (2024-03-22)

Note: Version bump only for package npm-mono-base

59.5.2 (2024-03-16)

Note: Version bump only for package npm-mono-base

59.5.1 (2024-02-26)

Note: Version bump only for package npm-mono-base

59.5.0 (2024-02-25)

Bug Fixes

  • mwcp: var typo fix from @mwcp/cache (63637e7)

Features

  • mwcp: bump deps version (d20dc69)

59.4.1 (2024-02-24)

Note: Version bump only for package npm-mono-base

59.4.0 (2024-02-22)

Features

  • kmove: add wrapIdentifierIgnoreRule of config (2897e21)

59.3.0 (2024-02-20)

Features

  • kmore-types: add property camelColumns of DbDict (7d0d200)

59.2.1 (2024-02-07)

Note: Version bump only for package npm-mono-base

59.2.0 (2024-02-02)

Features

  • kmore: update interface OrderBy (5b65cef)

59.1.2 (2024-01-30)

Note: Version bump only for package npm-mono-base

59.1.1 (2024-01-30)

Note: Version bump only for package npm-mono-base

59.1.0 (2024-01-28)

Note: Version bump only for package npm-mono-base

59.0.0 (2024-01-22)

Note: Version bump only for package npm-mono-base

58.0.2 (2023-09-19)

Note: Version bump only for package kmore

58.0.1 (2023-09-18)

Bug Fixes

  • boilerplate: package.json db:gen (e1b4a74)

58.0.0 (2023-09-18)

Bug Fixes

  • boilerplate: package.json db:gen (e1b4a74)

57.0.1 (2023-09-12)

Bug Fixes

  • boilerplate: package.json db:gen (e1b4a74)

57.0.0 (2023-09-07)

Bug Fixes

  • boilerplate: package.json db:gen (e1b4a74)

56.0.2 (2023-08-21)

Note: Version bump only for package kmore

56.0.1 (2023-08-02)

Bug Fixes

  • kmore-cli: path resolve in transformer.ts (a12ca83)

56.0.0 (2023-08-01)

Features

  • kmore-cli: use Promise instead of Observable (cc9fef6)

55.6.0 (2023-07-31)

Features

55.5.3 (2023-06-27)

Note: Version bump only for package kmore

55.5.2 (2023-05-29)

Note: Version bump only for package kmore

55.5.1 (2023-05-25)

Note: Version bump only for package kmore

55.5.0 (2023-05-16)

Features

  • mwcp: rollback transaction for all entry within DbManager.exceptionHandler() (0c27480)

Performance Improvements

  • mwcp: do not commit transaction within DbManager.builderResultPreProcessor() (83d4bd3)

55.4.0 (2023-05-15)

Features

  • mwcp: trim within genCallerKey() (f56c6a7)

55.3.3 (2023-05-08)

Note: Version bump only for package kmore

55.3.2 (2023-05-04)

Note: Version bump only for package kmore

55.3.1 (2023-04-23)

Note: Version bump only for package kmore

55.3.0 (2023-04-23)

Features

  • mwcp: bump deps version and refactor decorator Transactional (791d228)

55.2.7 (2023-04-13)

Note: Version bump only for package kmore

55.2.6 (2023-04-11)

Note: Version bump only for package kmore

55.2.5 (2023-04-10)

Note: Version bump only for package kmore

55.2.4 (2023-04-06)

Note: Version bump only for package kmore

55.2.3 (2023-03-31)

Note: Version bump only for package kmore

55.2.2 (2023-03-30)

Note: Version bump only for package kmore

55.2.1 (2023-03-29)

Note: Version bump only for package kmore

55.2.0 (2023-03-23)

Bug Fixes

  • boilerplate: define enum without const (37ffd10)
  • boilerplate: devDeps version (2e29b42)

55.1.2 (2023-03-22)

Bug Fixes

  • boilerplate: define enum without const (37ffd10)
  • boilerplate: devDeps version (2e29b42)

55.1.1 (2023-02-23)

Note: Version bump only for package kmore

55.1.0 (2023-02-08)

Features

  • mwcp: wait 2s before stop (855f7e8)

55.0.0 (2023-02-07)

Bug Fixes

  • boilerplate: define enum without const (37ffd10)
  • boilerplate: devDeps version (2e29b42)

54.0.0 (2023-02-07)

Bug Fixes

  • boilerplate: define enum without const (37ffd10)
  • boilerplate: devDeps version (2e29b42)

53.2.3 (2023-01-18)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

53.2.2 (2023-01-18)

Note: Version bump only for package kmore

53.2.1 (2023-01-17)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

53.2.0 (2023-01-10)

Features

  • mwcp: rename const TRX_METHOD_KEY to METHOD_KEY_Transactional c3f86e5

53.1.2 (2023-01-10)

Note: Version bump only for package kmore

53.1.1 (2023-01-10)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

53.1.0 (2023-01-04)

Features

  • mwcp: export consts 0437e7a

53.0.3 (2023-01-04)

Note: Version bump only for package kmore

53.0.2 (2023-01-03)

Bug Fixes

  • mwcp: init CacheManager 597e969

53.0.1 (2023-01-03)

Note: Version bump only for package kmore

53.0.0 (2022-12-30)

Features

  • mwcp: cache via @mwcp/cache ac53e44

52.1.1 (2022-12-28)

Note: Version bump only for package kmore

52.1.0 (2022-12-28)

Bug Fixes

  • mwcp: ensue rollback during Insufficient call stacks by getCallerStack bcaa2df
  • mwcp: entryKey retrieve with transactionalDecoratorExecutor() f146757

Features

  • kmore: add properties of TrxPropagateOptions 5b0b32d
  • mwcp: update TrxPropagateOptions within bindBuilderPropagationData() d927fdc

52.0.3 (2022-12-27)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

52.0.2 (2022-12-22)

Performance Improvements

  • mwcp: update bindBuilderPropagationData() e52416d

52.0.1 (2022-12-21)

Note: Version bump only for package kmore

52.0.0 (2022-12-20)

Features

  • kmore: do not case convert alias via builder.columns() 4137ddd

51.3.4 (2022-12-19)

Note: Version bump only for package kmore

51.3.3 (2022-12-18)

Bug Fixes

  • kmore: call clearHaving() when auto paging eb3ce47

51.3.2 (2022-12-17)

Bug Fixes

  • kmore: defaultGlobalWrapIdentifier() c01f8fa

51.3.1 (2022-12-17)

Bug Fixes

  • kmore: defaultGlobalWrapIdentifier() 78fcf34

51.3.0 (2022-12-17)

Features

  • kmore: update defaultGlobalWrapIdentifier() 4ae8c06

51.2.3 (2022-12-17)

Note: Version bump only for package kmore

51.2.2 (2022-12-17)

Note: Version bump only for package kmore

51.2.1 (2022-12-17)

Note: Version bump only for package kmore

51.2.0 (2022-12-16)

Features

  • kmore: update conversion wrapIdentifier() 8235ac4

51.1.4 (2022-12-15)

Note: Version bump only for package kmore

51.1.3 (2022-12-14)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

51.1.2 (2022-12-07)

Note: Version bump only for package kmore

51.1.1 (2022-12-07)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

51.1.0 (2022-12-06)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • mwcp: log warn if decorator @Transactional before @Cacheable/CacheEvict 00475dd

51.0.0 (2022-11-24)

Features

  • mwcp: propagation type of declarative transaction supports "SUPPORTS" 249d14b

50.2.1 (2022-11-24)

Bug Fixes

  • mwcp: await result within aroundFactory() 69e0974
  • mwcp: trxCommitIfEntryTop() trxRollbackIfEntryTop() e1251f1

50.2.0 (2022-11-23)

Features

  • mwcp: add retrieveMethodDecoratorArgs() 9cf6238
  • mwcp: method decorator args override args by class decorator 21cf290

50.1.0 (2022-11-21)

Features

  • mwcp: change Transactional decorator apply AsyncFunction only 4363a45

50.0.1 (2022-11-21)

Bug Fixes

  • mwcp: webContext.app may undefined a218bf1

50.0.0 (2022-11-20)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • kmore: massive changes ef95f02
  • mwcp: Declarative transaction via decorator @Transactional f6444ac

49.0.3 (2022-11-08)

Note: Version bump only for package kmore

49.0.2 (2022-11-08)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

49.0.1 (2022-11-06)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

49.0.0 (2022-11-04)

Features

  • kmore: breaking change types and wrap response to object PageWrapType 8cc74ec

48.2.0 (2022-11-02)

Features

  • bump deps version caa00c9

48.1.1 (2022-11-02)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

48.1.0 (2022-11-02)

Features

  • mwcp: exports types 88c6ad7

48.0.1 (2022-11-01)

Note: Version bump only for package kmore

48.0.0 (2022-11-01)

Features

  • kmore: auto paging with one builder by builder.autoPaging() 7a60915

47.0.2 (2022-11-01)

Bug Fixes

  • kmore: column conversion of .where() 7c47289

47.0.1 (2022-10-26)

Note: Version bump only for package kmore

47.0.0 (2022-10-26)

Features

  • kmore: breaking change KmoreTransaction['trxActionOnEnd'] only affects on QueryBuilder 52bc21d

46.1.0 (2022-10-26)

Features

  • kmore: refactor error process of proxyGetThen() 58946d8

46.0.2 (2022-10-26)

Note: Version bump only for package kmore

46.0.1 (2022-10-25)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

46.0.0 (2022-10-25)

Features

  • kmore: breaking change trx.savepoint and Kmore:transaction() d572def

45.2.0 (2022-10-24)

Features

  • kmore: add kmore.raw() 104c83a

45.1.0 (2022-10-23)

Features

  • kmore: check properties on trx when calling builder.transacting() 17c5c18

45.0.0 (2022-10-21)

Note: Version bump only for package kmore

44.0.0 (2022-10-21)

Note: Version bump only for package kmore

43.0.0 (2022-10-21)

Note: Version bump only for package kmore

42.0.0 (2022-10-21)

Note: Version bump only for package kmore

41.0.0 (2022-10-21)

Note: Version bump only for package kmore

40.1.0 (2022-10-21)

Bug Fixes

  • kmore: calling order of createQueryBuilderGetProxy() first 1a2f709

Features

  • kmore: add property KmoreProxyKey.getThenProxyProcessed on response data 10cd1d0
  • kmore: define KmoreProxyKey 9ffd394

40.0.0 (2022-10-20)

Features

  • kmore: process query error and re-throw 22d4cf9
  • kmore: validate parameters within setCtxTrxIdMap() and generate default value of ctx 01e5e74

39.0.2 (2022-10-18)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

39.0.1 (2022-10-17)

Note: Version bump only for package kmore

39.0.0 (2022-10-17)

Features

  • kmore: change scope of Object.defineProperty b8173d3
  • mwcp: trace manual commit, rollback 473b4f2

38.0.2 (2022-10-17)

Note: Version bump only for package kmore

38.0.1 (2022-10-17)

Note: Version bump only for package kmore

38.0.0 (2022-10-17)

Features

  • kmore: add property KmoreTransaction['dbId'] dbd9d60
  • kmore: update 4852df2
  • mwcp: trace capture transaction 902c460

37.0.2 (2022-10-14)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

37.0.1 (2022-10-12)

Note: Version bump only for package kmore

37.0.0 (2022-10-10)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

36.2.1 (2022-09-05)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

36.2.0 (2022-09-05)

Features

  • kmore: update getCurrentTime() f1e4da3

36.1.0 (2022-08-31)

Features

  • midway-component-kmore: use new npm scope "@mwcp" b4ae535

36.0.4 (2022-08-30)

Note: Version bump only for package kmore

36.0.3 (2022-08-30)

Note: Version bump only for package kmore

36.0.2 (2022-08-24)

Note: Version bump only for package kmore

36.0.1 (2022-08-22)

Note: Version bump only for package kmore

36.0.0 (2022-08-21)

Features

  • midway-component-kmore: breaking changes variable name and type name bbae4cd

35.0.5 (2022-08-18)

Note: Version bump only for package kmore

35.0.4 (2022-08-18)

Bug Fixes

  • midway-component-kmore: wrong generics type 9717cff

35.0.3 (2022-08-16)

Performance Improvements

  • midway-component-kmore: proxy creation bf116a3

35.0.2 (2022-08-15)

Bug Fixes

  • midway-component-kmore: createRefProxy() 9d94774

35.0.1 (2022-08-15)

Bug Fixes

  • kmore: update extRefTableFnPropertySmartJoin() 262a124

35.0.0 (2022-08-14)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • kmore: extends query builder with smart join methods d93b44f

34.5.0 (2022-08-12)

Features

  • midway-component-kmore: def kmoreDataSourceConfig.default 91c7830

34.4.0 (2022-08-12)

Features

  • midway-component-kmore: change properties of DbConfig to optional 9845251

34.3.2 (2022-08-10)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

34.3.1 (2022-08-10)

Note: Version bump only for package kmore

34.3.0 (2022-08-10)

Bug Fixes

  • midway-component-kmore: getDataSource() with createRefProxy() fc39327

Features

  • midway-component-kmore: change checkConnected() to protected 916d835
  • midway-component-kmore: DbManager.isConnected() a3bcb58

34.2.0 (2022-08-09)

Features

  • kmore: add Kmore.destroy() 04cc3a2

34.1.0 (2022-08-09)

Features

  • midway-component-kmore: createDataSource() accepts 3rd param cacheDataSource e344ea2
  • midway-component-kmore: delete from dataSource within destroyDataSource() 11a2f0e

34.0.0 (2022-08-08)

Features

  • kmore: store context:trx map e3b36e4
  • kmore: transaction auto commit|rollback on error (from db or code inner ref_table) 705ed5b
  • midway-component-kmore: transaction auto action by middle ware, enabled default rollback f462ddb
  • midway-component-kmore: transaction auto action on error via middleware 40ff1d2

33.6.0 (2022-08-08)

Features

  • midway-component-kmore: save config within createDataSource() 768bf36

33.5.0 (2022-08-08)

Features

  • midway-component-kmore: cache instance within createDataSource() faf9668

33.4.0 (2022-08-08)

Features

  • midway-component-kmore: def const kmoreDataSourceConfig 2ca29cc

33.3.1 (2022-08-08)

Bug Fixes

  • midway-component-kmore: config may undefined 74af531

33.3.0 (2022-08-06)

Features

  • kmore: kmore.transaction() accepts 2nd param config 974b725

33.2.0 (2022-08-06)

Features

  • kmore: def Kmore.transaction() edef2bf

33.1.1 (2022-08-06)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

33.1.0 (2022-08-04)

Features

  • kmore: allow dict be undefined when initialize Kmore e1dd5dc

33.0.2 (2022-08-04)

Note: Version bump only for package kmore

33.0.1 (2022-08-03)

Bug Fixes

  • midway-component-kmore: wrong object to bind 8bc8033

33.0.0 (2022-08-02)

Features

  • breaking change remove exports functions 57495d6
  • kmore: add properties of KmoreFactoryOpts 404abd9
  • kmore: breaking change remove exports from ./lib/config.ts f0027ca
  • kmore: breaking change restrict exports from ./lib/helper.ts 410c383
  • kmore: run inner postProcessResponse() always after custom config.postProcessResponse adc5150
  • midway-component-kmore: breaking change remove export initialKnexConfig c050dbb

32.0.1 (2022-08-02)

Bug Fixes

  • kmore: postProcessResponseToSnake() wrong case conversion 4fb2011

32.0.0 (2022-08-02)

Features

  • kmore: change create function of refTable to writable:true 6703b59
  • midway-component-kmore: breaking change exports 5508ea4

31.3.0 (2022-08-01)

Features

  • kmore: change KmoreFactoryOpts.dict optional, but will validation defined a112969

31.2.0 (2022-08-01)

Features

  • midway-component-kmore: change generics of DbConfig to any ce43558

31.1.1 (2022-08-01)

Note: Version bump only for package kmore

31.1.0 (2022-08-01)

Features

  • midway-component-kmore: validate dataSourceconfig when init() 89d709b

31.0.0 (2022-08-01)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • kmore: breaking change structure 7d3eb05
  • midway-component-kmore: breaking change structure suits for DataSource of midway 6d2ee17

30.0.0 (2022-07-15)

Features

  • kmore: auto case conversion via Kmore.{camelTables | snakeTables} 17b993a
  • midway-component-kmore: export const initialKnexConfig 9aea8b0

29.0.2 (2022-07-15)

Note: Version bump only for package kmore

29.0.1 (2022-07-13)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

29.0.0 (2022-07-13)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • breaking change default demo pkg.type to "module" 6deb45e

28.2.1 (2022-07-13)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

28.2.0 (2022-07-08)

Features

  • kmore: change generic type of postProcessResponseToCamel() f5e9568

28.1.0 (2022-07-08)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • kmore: update mergeDoWithInitData() generic types 1821d85

28.0.2 (2022-07-08)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

28.0.1 (2022-07-06)

Note: Version bump only for package kmore

28.0.0 (2022-07-05)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

Features

  • breaking change case conversion of genCamelKeysFrom() 794352b

27.0.0 (2022-06-08)

Note: Version bump only for package kmore

26.0.1 (2022-06-07)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

26.0.0 (2022-05-16)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

25.1.6 (2022-04-28)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

25.1.5 (2022-04-02)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42

25.1.4 (2022-04-01)

Bug Fixes

  • midway-component-kmore: export unsubscribeEventFuncOnResFinish() b5745da

25.1.3 (2022-03-31)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42
  • midway-component-kmore: circular dependency 1a36e79
  • midway-component-kmore: cycle dependency dc2b8d5

25.1.2 (2022-03-31)

Bug Fixes

  • boilerplate: define enum without const 37ffd10
  • boilerplate: devDeps version 2e29b42
  • midway-component-kmore: ConfigKey define 4857e75

25.1.1 (2022-03-24)

Bug Fixes

  • boilerplate: devDeps version 2e29b42

25.1.0 (2022-03-21)

Bug Fixes

  • boilerplate: devDeps version 2e29b42

Features

  • midway-component-kmore: update KmoreComponentFactoryOpts and TracerKmoreComponent 69b57dc

25.0.4 (2022-03-18)

Note: Version bump only for package kmore

25.0.3 (2022-03-17)

Note: Version bump only for package kmore

25.0.2 (2022-03-09)

Note: Version bump only for package kmore

25.0.1 (2022-03-08)

Bug Fixes

  • boilerplate: devDeps version 2e29b42

25.0.0 (2022-03-01)

Features

  • break change bump deps knex version to v1.0.0 dc86041

24.0.3 (2021-11-26)

Note: Version bump only for package kmore

24.0.2 (2021-11-25)

Note: Version bump only for package kmore

24.0.1 (2021-11-25)

Note: Version bump only for package kmore

24.0.0 (2021-11-23)

Bug Fixes

  • kmore: ReturnType of genCamelKeysFrom() d1f7707

23.0.2 (2021-11-15)

Note: Version bump only for package kmore

23.0.1 (2021-11-15)

Note: Version bump only for package kmore

23.0.0 (2021-11-11)

Note: Version bump only for package kmore

22.6.2 (2021-09-02)

Note: Version bump only for package kmore

22.6.1 (2021-08-31)

Note: Version bump only for package kmore

22.6.0 (2021-08-30)

Features

  • midway-component-kmore: DbManager:destroy() accept optional parameter dbId f004782

22.5.0 (2021-08-03)

Features

  • kmore: export createDbh() for event binding 89f0ace

22.4.0 (2021-08-02)

Features

  • kmore: move property queryUidSpanMap onto Kmore instead of TracerKmoreComponent 77b2456

22.3.3 (2021-08-02)

Bug Fixes

  • midway-component-kmore: detect and remove duplicate queryUid from queryUidSpanMap 8ee3e08

22.3.2 (2021-08-02)

Note: Version bump only for package kmore

22.3.1 (2021-08-02)

Note: Version bump only for package kmore

22.3.0 (2021-08-02)

Features

  • midway-component-kmore: trace response only rows instead of all 643df67

22.2.3 (2021-08-02)

Bug Fixes

  • midway-component-kmore: not check ev.identifier within subscribeEvent() 1eb1df6

22.2.2 (2021-08-02)

Bug Fixes

  • midway-component-kmore: not check ev.identifier deb5faf

22.2.1 (2021-07-19)

Note: Version bump only for package kmore

22.2.0 (2021-07-14)

Features

  • kmore: change OnQueryRespRaw['response'] to optional a38d637

22.1.1 (2021-07-14)

Bug Fixes

  • midway-component-kmore: may undefined b35d83f

22.1.0 (2021-07-14)

Features

  • midway-component-kmore: increase EventEmitter.defaultMaxListeners for unit test 589fdea

22.0.2 (2021-07-14)

Note: Version bump only for package kmore

22.0.1 (2021-07-13)

Note: Version bump only for package kmore

22.0.0 (2021-07-13)

Features

  • kmore: export globalEvent instead of subject on instance a11faa8

21.1.0 (2021-07-13)

Features

  • midway-component-kmore: update subscribeEvent() 958c06e

21.0.1 (2021-07-13)

Bug Fixes

  • midway-component-kmore: check this.ctx.tracerManager 303a384

21.0.0 (2021-07-13)

Features

  • midway-component-kmore: generate new Span if current span undefined 0f6892a

20.0.1 (2021-07-09)

Bug Fixes

  • kmore: event bind on this.dbh ed37e72

20.0.0 (2021-07-08)

Note: Version bump only for package kmore

19.0.0 (2021-07-08)

Note: Version bump only for package kmore

18.2.0 (2021-07-08)

Features

  • midway-component-kmore: export unsubscribeEventFuncOnResFinish() 6b3ef63

18.1.0 (2021-07-08)

Features

  • midway-component-kmore: log size of queryUidSpanMap bfb5a2a

18.0.0 (2021-07-08)

Features

  • midway-component-kmore: add param unsubscribeEventFunc for creation 1cdcbf3
  • midway-component-kmore: creation parameter bindUnsubscribeEventFunc() 6ffde85
  • midway-component-kmore: export class KmoreComponent, TracerKmoreComponent 80aba2b

17.2.0 (2021-07-08)

Bug Fixes

  • midway-component-kmore: do not unsubscribe event on request finish 3ff997f

Features

  • kmore: warn log instead of throw error if subject.closed already 303a31a

17.1.0 (2021-07-07)

Features

  • midway-component-kmore: increase defaultMaxListeners to 200 d7820c1

17.0.0 (2021-07-07)

Features

  • midway-component-kmore: breaking change ReturnType to Promise of creation e8d7f2f

16.1.0 (2021-07-07)

Features

  • midway-component-kmore: log queryUid within caseQueryResp() fc27679

16.0.0 (2021-07-07)

Features

  • move kmore-types to devDependencies field of package.json 8c4609c

15.0.0 (2021-07-07)

Features

  • midway-component-kmore: tracing query response with DbConfig['tracingResponse'] e37582d

14.0.0 (2021-07-07)

Features

  • midway-component-kmore: use injected logger instead of parameter of logger 81ae38e

13.0.0 (2021-07-07)

Features

  • midway-component-kmore: breaking change parameter of create f2c23ff

12.0.1 (2021-07-06)

Note: Version bump only for package kmore

12.0.0 (2021-06-30)

Features

  • bump deps 6eea541

11.0.0 (2021-06-29)

Note: Version bump only for package kmore

10.4.0 (2021-06-29)

Features

  • midway-component-kmore: add KmoreComponentConfig['timeoutWhenDestroy'] 1f95766

10.3.0 (2021-06-25)

Features

  • midway-component-kmore: unsubscribe event of instances during destroy ab74cb5

10.2.0 (2021-06-25)

Features

  • midway-component-kmore: set timeout (3s) for db host destroy f0de424

10.1.1 (2021-06-24)

Note: Version bump only for package kmore

10.1.0 (2021-06-24)

Features

  • export mergeDoWithInitData() 6974b59

10.0.0 (2021-06-23)

Note: Version bump only for package kmore

9.0.0 (2021-06-23)

Features

  • midway-component-kmore: breaking change structure of KmoreComponentConfig 6215566

8.0.0 (2021-06-23)

Features

  • kmore-types: add property of DbDict['camelAlias'] 5784999

7.7.2 (2021-06-22)

Note: Version bump only for package kmore

7.7.1 (2021-06-22)

Note: Version bump only for package kmore

7.7.0 (2021-06-22)

Features

  • kmore: export functions 72d0dbd

7.6.1 (2021-06-22)

Bug Fixes

  • midway-component-kmore: logger undefined (b71bd56)

7.6.0 (2021-06-21)

Features

  • midway-component-kmore: skip trace if ctx.tracerManager undefined (348612c)

7.5.0 (2021-06-21)

Features

  • midway-component-kmore: add deps knex (899d419)

7.4.1 (2021-06-21)

Note: Version bump only for package kmore

7.4.0 (2021-06-21)

Features

  • midway-component-kmore: skip createDbh() if some property empty (f881a95)

7.3.1 (2021-06-21)

Bug Fixes

  • midway-component-kmore: pkg.types (c9bfbbb)

7.3.0 (2021-06-20)

Note: Version bump only for package kmore

7.2.0 (2021-06-19)

Note: Version bump only for package kmore

7.1.0 (2021-06-18)

Note: Version bump only for package kmore

7.0.0 (2021-06-18)

Note: Version bump only for package kmore

6.2.2 (2021-06-17)

Note: Version bump only for package kmore

6.2.1 (2021-06-17)

Note: Version bump only for package kmore

6.2.0 (2021-06-17)

Features

  • midway-component-kmore: logging ProcInfo when exception or slow query (fb51caa)

6.1.0 (2021-06-17)

Features

  • midway-component-kmore: update sample (4632c03)

6.0.0 (2021-06-17)

Note: Version bump only for package kmore

5.7.5 (2021-06-17)

Note: Version bump only for package kmore

5.7.4 (2021-06-17)

Note: Version bump only for package kmore

5.7.3 (2021-06-16)

Note: Version bump only for package kmore

5.7.2 (2021-06-10)

Note: Version bump only for package kmore

5.7.1 (2021-06-09)

Note: Version bump only for package kmore

5.7.0 (2021-06-08)

Features

  • midway-component-kmore: rename span name to DbComponent (83fb9fa)

5.6.0 (2021-06-08)

Features

  • midway-component-kmore: change span name to dbComponent (dcfd09d)

5.5.0 (2021-06-08)

Note: Version bump only for package kmore

5.4.0 (2021-06-07)

Note: Version bump only for package kmore

5.3.1 (2021-06-04)

Note: Version bump only for package kmore

5.3.0 (2021-06-04)

Note: Version bump only for package kmore

5.2.0 (2021-06-04)

Features

  • midway-component-kmore: implementation (db4200a)

5.1.0 (2021-05-29)

Note: Version bump only for package kmore

5.0.0 (2021-05-10)

Note: Version bump only for package kmore

4.1.0 (2021-05-07)

Features

  • kmore: add KmoreEvent['timestamp'] (2efde5b)

4.0.0 (2021-04-29)

Note: Version bump only for package kmore

3.3.0 (2021-04-28)

Features

  • kmore: kmore.register() accept optional parameter identifier (67299ca)

3.2.0 (2021-04-28)

Note: Version bump only for package kmore

3.1.0 (2021-04-25)

Features

  • kmore-cli: current path if opts.project is relative file (aaea903)

3.0.0 (2021-04-23)

Note: Version bump only for package kmore

2.0.5 (2021-01-26)

Bug Fixes

  • kmore-types: loading position of source-map-support b5f8c20

2.0.4 (2021-01-26)

Note: Version bump only for package kmore

2.0.3 (2021-01-26)

Note: Version bump only for package kmore

2.0.2 (2021-01-24)

Bug Fixes

2.0.1 (2020-07-16)

Bug Fixes

  • kmore-types: type def of DbDictModel (d2b11d7)

2.0.0 (2020-07-13)

Features

  • kmore-types: refactor types (314c956)

1.1.1 (2020-07-12)

Note: Version bump only for package kmore

1.1.0 (2020-07-12)

Features

  • kmore-types: update type TTables, TableModel, Tables with interface (7f13ceb)

0.21.0 (2020-06-17)

Code Refactoring

  • generation of scopedCols (4852406)

BREAKING CHANGES

    • remove type BaseMultiTableColumns, use MultiTableCols instead
  • remove type MultiTableScopedCols, use MultiTableCols instead

0.20.0 (2020-06-16)

Note: Version bump only for package kmore

0.19.0 (2020-06-16)

Performance Improvements

  • kmore-types: update walkNode() (ab8a0eb)
  • kmore-types: update walkNodeWithPosition() (600b9e8)

0.18.0 (2020-06-15)

Features

  • kmore: param keyArr of genKnexColumnsParam() accept void (0fc73fb)

0.17.1 (2020-06-10)

Note: Version bump only for package kmore

0.17.0 (2020-06-07)

Bug Fixes

Features

  • kmore: define EnumClient for KnexConfig.client (71ff719)
  • kmore: define getCurrentTime() to retrieve time from database (16119fb)

0.16.4 (2020-06-06)

Bug Fixes

  • egg-kmore: check connected only for pg, mysql. #1 (ecf20fb)
  • kmore-types: syntax for test (6058190)

0.16.3 (2020-04-15)

Note: Version bump only for package kmore

0.16.2 (2020-04-15)

Note: Version bump only for package kmore

0.16.1 (2020-04-15)

Bug Fixes

  • kmore-types: loadVarFromFile() (ba21272)

0.16.0 (2020-04-14)

Bug Fixes

  • kmore: genColumnsWithExtProps() (53afed0)
  • kmore: genColumnsWithExtProps() enumerable (d25b2dc)
  • kmore: kTablesBase.columns has no ext props (c4fe945)
  • kmore: loadVarFromFile() (9ec2165)
  • kmore: loadVarFromFile() (1816966)
  • kmore: return types of loadTbListFromJsBuiltFile() (87c69c8)
  • kmore-types: loadVarFromFile() (38f3765)

Features

  • kmore: add lib/build.ts (2a7d838)
  • kmore: add loadVarFromFile() (d1bb283)
  • kmore-types: export all funcs of build.ts (f174de2)
  • joint table alias (7fa9fff)
  • kmore: genAliasColumns() (18f70d4)
  • kmore-types: add tyeps BaseMultiTableColumns (3d4e810)

0.15.0 (2020-03-20)

Features

  • kmore: rb.tb_foo() support generics parameters (58f8e32)
  • add Generics parameters (d730821)
  • types, parameters, scopedColumns (46ef95d)

0.14.0 (2020-01-16)

Features

  • kmore: TbQueryBuilder accept 2nd generics parameter (88672fb)

0.13.1 (2019-11-17)

Note: Version bump only for package kmore

0.13.0 (2019-10-15)

Features

  • default forceLoadTbListJs, forceLoadTbListJsPathReplaceRules (1a758d3)

0.12.0 (2019-10-15)

Features

  • kmore: export genTbListFromType() from lib/tables.ts (bfd8866)

0.11.2 (2019-10-14)

Note: Version bump only for package kmore

0.11.1 (2019-10-08)

Note: Version bump only for package kmore

0.11.0 (2019-09-10)

Note: Version bump only for package kmore