import { NamingStrategyInterface } from "../../../src/naming-strategy/NamingStrategyInterface" import { DefaultNamingStrategy } from "../../../src/naming-strategy/DefaultNamingStrategy" import { snakeCase } from "../../../src/util/StringUtils" export class CustomNamingStrategy extends DefaultNamingStrategy implements NamingStrategyInterface { tableName(targetName: string, userSpecifiedName: string): string { return userSpecifiedName ? userSpecifiedName : snakeCase(targetName) } columnName( propertyName: string, customName: string, embeddedPrefixes: string[], ): string { return snakeCase( embeddedPrefixes .concat(customName ? customName : propertyName) .join("_"), ) } columnNameCustomized(customName: string): string { return customName } relationName(propertyName: string): string { return snakeCase(propertyName) } }