0.3.2 • Published 3 years ago
gen-sql-type v0.3.2
gen-sql-type
Generate Typescript Types from raw SQL statements
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