Skip to content

Instantly share code, notes, and snippets.

@recurrence
Created November 21, 2017 16:34
Show Gist options
  • Save recurrence/b6a4cb04a8ddf42eda4e4be520921bd2 to your computer and use it in GitHub Desktop.
Save recurrence/b6a4cb04a8ddf42eda4e4be520921bd2 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)
}
}
@vanhumbeecka
Copy link

Thanks for sharing. Still works perfectly for Postgres.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment