Skip to content

Latest commit

 

History

History
1371 lines (846 loc) · 32.9 KB

Generator.md

File metadata and controls

1371 lines (846 loc) · 32.9 KB

ts-sql-codegen / Generator

Class: Generator

Generator class for programmatic codegen.

Most common usage involves creating an instance and calling generate function:

const options = {
   schemaPath: './schema.yaml',
   connectionSourcePath: './connection-source.ts'
}
const generator = new Generator(options);
await generator.generate();

See GeneratorOpts for configuration options.

For advanced use-cases, you can extend this class. This enables you to use custom templates, pre/post processing of generated code and custom logic for table/column/field mapping.

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new Generator(opts): Generator

Parameters

Name Type
opts GeneratorOpts

Returns

Generator

Defined in

src/generator.ts:82

Properties

getCompiledTemplate

Protected getCompiledTemplate: () => Promise<HandlebarsTemplateDelegate<any>> & MemoizedFunction

Defined in

src/generator.ts:95


getFieldMappings

Protected getFieldMappings: () => { columnName?: null | string | RegExp ; columnType?: null | string | RegExp ; comment?: null | string ; generatedField: false | { hasDefault?: null | boolean ; isComputed?: null | boolean ; isOptional?: null | boolean ; name?: null | string ; type?: null | { adapter?: null | { importPath?: null | string ; isDefault?: null | boolean ; isRelative?: null | boolean ; name: string } ; dbType?: null | { name: string } ; kind?: null | "custom" | "customComparable" | "enum" | "customInt" | "customDouble" | "customUuid" | "customLocalDate" | "customLocalTime" | "customLocalDateTime" ; tsType?: null | { importPath?: null | string ; isDefault?: null | boolean ; isRelative?: null | boolean ; name: string } } } & undefined | false | { hasDefault?: null | boolean ; isComputed?: null | boolean ; isOptional?: null | boolean ; name?: null | string ; type?: null | { adapter?: null | { importPath?: null | string ; isDefault?: null | boolean ; isRelative?: null | boolean ; name: string } ; dbType?: null | { name: string } ; kind?: null | "custom" | "customComparable" | "enum" | "customInt" | "customDouble" | "customUuid" | "customLocalDate" | "customLocalTime" | "customLocalDateTime" ; tsType?: null | { importPath?: null | string ; isDefault?: null | boolean ; isRelative?: null | boolean ; name: string } } } ; tableName?: null | string | RegExp }[] & MemoizedFunction

Defined in

src/generator.ts:87


getTemplatePath

Protected getTemplatePath: () => string & MemoizedFunction

Defined in

src/generator.ts:91


logger

logger: Logger = console

Defined in

src/generator.ts:80


naming

Protected naming: NamingOptions

Defined in

src/generator.ts:77


opts

Protected opts: GeneratorOpts

Defined in

src/generator.ts:76


writtenFiles

Private writtenFiles: Set<string>

Defined in

src/generator.ts:79

Methods

accumulateImports

accumulateImports(imports, defaultImports): ImportTmplInput[]

Parameters

Name Type
imports Map<string, Set<string>>
defaultImports Map<string, Set<string>>

Returns

ImportTmplInput[]

Defined in

src/generator.ts:370


doesColumnHaveDefault

doesColumnHaveDefault(tableName, col): boolean

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

boolean

Defined in

src/generator.ts:581


extractTableName

extractTableName(configTableName): string

Parameters

Name Type
configTableName string

Returns

string

Defined in

src/generator.ts:709


findPrimaryKey

findPrimaryKey(table): null | { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string

Returns

null | { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }

Defined in

src/generator.ts:679


formatComment

formatComment(comments): null | string[]

Parameters

Name Type
comments (undefined | null | string)[]

Returns

null | string[]

Defined in

src/generator.ts:329


generate

generate(): Promise<void>

Returns

Promise<void>

Defined in

src/generator.ts:102


generateTableMapper

generateTableMapper(table): Promise<void>

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string

Returns

Promise<void>

Defined in

src/generator.ts:293


getAdapterImportPath

getAdapterImportPath(adapter, outputFilePath): string

Parameters

Name Type
adapter ImportedItem
outputFilePath string

Returns

string

Defined in

src/generator.ts:455


getAdapterImports

getAdapterImports(outputFilePath, fields): ImportTmplInput[]

Parameters

Name Type
outputFilePath string
fields FieldTmplInput[]

Returns

ImportTmplInput[]

Defined in

src/generator.ts:351


getCamelCasedTableName

getCamelCasedTableName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:550


getColComment

getColComment(tableName, col): undefined | string

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

undefined | string

Defined in

src/generator.ts:612


getColMappingInput

getColMappingInput(tableName, didGenerateRepo): any

Parameters

Name Type
tableName string
didGenerateRepo boolean

Returns

any

Defined in

src/generator.ts:857


getColMappingObjName

getColMappingObjName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:749


getColSetName

getColSetName(tableName, tableKind): null | string

Parameters

Name Type
tableName string
tableKind TableKind

Returns

null | string

Defined in

src/generator.ts:845


getColumnsObjectName

getColumnsObjectName(tableName, tableKind): string

Parameters

Name Type
tableName string
tableKind TableKind

Returns

string

Defined in

src/generator.ts:524


getConnectionSourceImportPath

getConnectionSourceImportPath(outputFilePath): string

Parameters

Name Type
outputFilePath string

Returns

string

Defined in

src/generator.ts:340


getCrudRepoName

getCrudRepoName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:490


getFieldInput

getFieldInput(col, table, pkCol): Object

Parameters

Name Type
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string
pkCol null | { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }

Returns

Object

Name Type
columnMethod ColumnMethod
columnName string
comment null | string[]
fieldType GeneratedFieldType
hasDefault boolean
includeDBTypeWhenIsOptional boolean
isOptional boolean
isPK boolean
name string

Defined in

src/generator.ts:216


getFieldNameForColumn

getFieldNameForColumn(tableName, col): string

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

string

Defined in

src/generator.ts:623


getFieldType

getFieldType(tableName, col): GeneratedFieldType

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

GeneratedFieldType

Defined in

src/generator.ts:637


getFieldsInput

getFieldsInput(table, pkCol): FieldTmplInput[]

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string
pkCol null | { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }

Returns

FieldTmplInput[]

Defined in

src/generator.ts:208


getIdPrefix

getIdPrefix(table): undefined | null | string

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string

Returns

undefined | null | string

Defined in

src/generator.ts:317


getImportPathForOutputPath

getImportPathForOutputPath(filePath, importPath, importedItem): string

Parameters

Name Type
filePath string
importPath string
importedItem ImportedItem

Returns

string

Defined in

src/generator.ts:438


getInsertableRowTypeName

getInsertableRowTypeName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:719


getInsertableValuesTypeName

getInsertableValuesTypeName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:737


getOutputFileName

getOutputFileName(table, tableKind): string

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string
tableKind TableKind

Returns

string

Defined in

src/generator.ts:675


getOutputFilePath

getOutputFilePath(table, tableKind): string

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string
tableKind TableKind

Returns

string

Defined in

src/generator.ts:670


getPascalCasedTableName

getPascalCasedTableName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:546


getRepoInput

getRepoInput(tableName, tableKind, pkField?): null | RepoInput

Parameters

Name Type
tableName string
tableKind TableKind
pkField? FieldTmplInput

Returns

null | RepoInput

Defined in

src/generator.ts:260


getRowTypeInputs

getRowTypeInputs(tableName, tableKind, mapperClassName, imports): any

Parameters

Name Type
tableName string
tableKind TableKind
mapperClassName string
imports ImportTmplInput[]

Returns

any

Defined in

src/generator.ts:771


getRowTypePrefix

getRowTypePrefix(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:508


getSelectedRowTypeName

getSelectedRowTypeName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:713


getSelectedValuesTypeName

getSelectedValuesTypeName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:731


getTableKind

getTableKind(table): null | TableKind

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string

Returns

null | TableKind

Defined in

src/generator.ts:143


getTableMapperClassName

getTableMapperClassName(tableName, tableKind): string

Parameters

Name Type
tableName string
tableKind TableKind

Returns

string

Defined in

src/generator.ts:496


getTableMapperInstName

getTableMapperInstName(tableName, tableKind): null | string

Parameters

Name Type
tableName string
tableKind TableKind

Returns

null | string

Defined in

src/generator.ts:851


getTableMapperInstanceName

getTableMapperInstanceName(tableName, tableKind): string

Parameters

Name Type
tableName string
tableKind TableKind

Returns

string

Defined in

src/generator.ts:512


getTableTemplateInput

getTableTemplateInput(table, tableKind, filePath): Promise<any>

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string
tableKind TableKind
filePath string

Returns

Promise<any>

Defined in

src/generator.ts:152


getTypeImports

getTypeImports(outputFilePath, fields, generateRepo): ImportTmplInput[]

Parameters

Name Type
outputFilePath string
fields FieldTmplInput[]
generateRepo boolean

Returns

ImportTmplInput[]

Defined in

src/generator.ts:390


getTypeWrapper

getTypeWrapper(typeName): undefined | { importPath?: null | string ; isDefault?: null | boolean ; isRelative?: null | boolean ; name: string }

Parameters

Name Type
typeName string

Returns

undefined | { importPath?: null | string ; isDefault?: null | boolean ; isRelative?: null | boolean ; name: string }

Defined in

src/generator.ts:701


getUpdatableRowTypeName

getUpdatableRowTypeName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:725


getUpdatableValuesTypeName

getUpdatableValuesTypeName(tableName): string

Parameters

Name Type
tableName string

Returns

string

Defined in

src/generator.ts:743


getUtilImports

getUtilImports(colSetName, generateRepo): ImportTmplInput[]

Parameters

Name Type
colSetName null | string
generateRepo boolean

Returns

ImportTmplInput[]

Defined in

src/generator.ts:426


getValuesTypeInputs

getValuesTypeInputs(tableName, tableKind, mapperClassName, imports): any

Parameters

Name Type
tableName string
tableKind TableKind
mapperClassName string
imports ImportTmplInput[]

Returns

any

Defined in

src/generator.ts:811


getWrappedTypeInput

getWrappedTypeInput(name, baseExpr, imports, isInterface?): Object

Parameters

Name Type Default value
name string undefined
baseExpr string undefined
imports ImportTmplInput[] undefined
isInterface boolean false

Returns

Object

Name Type
expr string
isInterface boolean
name string

Defined in

src/generator.ts:753


isColumnComputed

isColumnComputed(tableName, col): boolean

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

boolean

Defined in

src/generator.ts:597


isColumnOmitted

isColumnOmitted(tableName, col): boolean

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

boolean

Defined in

src/generator.ts:554


isColumnOptional

isColumnOptional(tableName, col): boolean

Parameters

Name Type
tableName string
col Object
col.comment? null | string
col.default? any
col.name string
col.nullable? boolean
col.type string

Returns

boolean

Defined in

src/generator.ts:565


postProcessOutput

postProcessOutput(output, _table): Promise<string>

Parameters

Name Type
output string
_table Object
_table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
_table.comment? null | string
_table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
_table.name string
_table.type string

Returns

Promise<string>

Defined in

src/generator.ts:479


preProcessTemplateInput

preProcessTemplateInput(input): Promise<any>

Parameters

Name Type
input any

Returns

Promise<any>

Defined in

src/generator.ts:475


shouldProcess

shouldProcess(table): boolean

Parameters

Name Type
table Object
table.columns { comment?: null | string ; default?: any ; name: string ; nullable?: boolean ; type: string }[]
table.comment? null | string
table.constraints { columns: string[] ; comment?: null | string ; name: string ; referencedColumns?: null | string[] ; referencedTable?: null | string ; table: string ; type: string }[]
table.name string
table.type string

Returns

boolean

Defined in

src/generator.ts:122


wrapType

wrapType(typeExpr, wrapper?): string

Parameters

Name Type
typeExpr string
wrapper? null | string

Returns

string

Defined in

src/generator.ts:696