0.3.2 • Published 3 years ago

gen-sql-type v0.3.2

Weekly downloads
136
License
BSD-2-Clause
Repository
github
Last release
3 years ago

gen-sql-type

Generate Typescript Types from raw SQL statements

npm Package Version

How it works

This library scan the plain sql statements then auto generate Typescript types of the result row and named parameters. (Also supports prepared statement)

Features

  • Extract types from sql statement
    • Support alias column name
    • Support function call (e.g. COUNT(*))
    • Support quoted column name with escape sequence (e.g. treat 'can''t' as "can't")
    • Support named parameters (e.g. :id and @username)
    • Supported statement types:
      • SELECT
      • UPDATE
      • DELETE
      • INSERT
    • Support select from WITH-clause
  • Generate Typescript type for:
    • Row of select result
    • Named parameters for prepared statement

Usage Example

Given user-service.ts:

const sqlTypeFile = SqlTypeFile.withPrefix(__filename)

export class UserService {
  async login(parameters: LoginUserParameters): Promise<LoginUserRow> {
    const sql: string = sqlTypeFile.wrapSql('LoginUser', 'select password_hash from user where id = :id')
    return mockExec(sql, parameters)[0]
  }

  async logout(parameters: LogoutUserParameters) {
    const sql: string = sqlTypeFile.wrapSql('LogoutUser', 'update session set active = false where token = :token')
    return mockExec(sql, parameters)
  }
}

Upon execution, it will auto generate user-service.types.ts:

export type LoginUserParameters = {
  id: any
}
export type LoginUserRow = {
  password_hash: any
}

export type LogoutUserParameters = {
  token: any
}

Complete example refers to ./examples/user-service.ts

License

This is free and open-source software (FOSS) with BSD-2-Clause License

0.3.0

3 years ago

0.3.2

3 years ago

0.3.1

3 years ago

0.2.2

3 years ago

0.2.1

3 years ago

0.2.0

3 years ago

0.1.3

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.0

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago