Skip to content

Instantly share code, notes, and snippets.

@thomasbabuj
Forked from recurrence/snake_naming.ts
Created December 9, 2020 02:11
Show Gist options
  • Save thomasbabuj/8cc78da909abfa449a850771d8e436ab to your computer and use it in GitHub Desktop.
Save thomasbabuj/8cc78da909abfa449a850771d8e436ab to your computer and use it in GitHub Desktop.
TypeORM Snake Case Naming Strategy
import { NamingStrategyInterface, DefaultNamingStrategy } from 'typeorm'
import { snakeCase } from 'typeorm/util/StringUtils'
export class SnakeNamingStrategy extends DefaultNamingStrategy implements NamingStrategyInterface {
tableName(className: string, customName: string): string {
return customName ? customName : snakeCase(className)
}
columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string {
return snakeCase(embeddedPrefixes.join('_')) + (customName ? customName : snakeCase(propertyName))
}
relationName(propertyName: string): string {
return snakeCase(propertyName)
}
joinColumnName(relationName: string, referencedColumnName: string): string {
return snakeCase(relationName + "_" + referencedColumnName)
}
joinTableName(firstTableName: string,
secondTableName: string,
firstPropertyName: string,
secondPropertyName: string): string {
return snakeCase(firstTableName + "_" + firstPropertyName.replace(/\./gi, "_") + "_" + secondTableName)
}
joinTableColumnName(tableName: string, propertyName: string, columnName?: string): string {
return snakeCase(tableName + "_" + (columnName ? columnName : propertyName))
}
classTableInheritanceParentColumnName(parentTableName: any, parentTableIdPropertyName: any): string {
return snakeCase(parentTableName + "_" + parentTableIdPropertyName)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment