mirror of
https://github.com/SyncrowIOT/backend.git
synced 2026-10-23 08:07:55 +00:00
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import { DefaultNamingStrategy, NamingStrategyInterface } 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: any,
|
|
): string {
|
|
return snakeCase(
|
|
firstTableName +
|
|
'_' +
|
|
firstPropertyName.replaceAll(/\./gi, '_') +
|
|
'_' +
|
|
secondTableName,
|
|
);
|
|
}
|
|
|
|
joinTableColumnName(
|
|
tableName: string,
|
|
propertyName: string,
|
|
columnName?: string,
|
|
): string {
|
|
return snakeCase(
|
|
tableName + '_' + (columnName ? columnName : propertyName),
|
|
);
|
|
}
|
|
|
|
classTableInheritanceParentColumnName(
|
|
parentTableName: string,
|
|
parentTableIdPropertyName: string,
|
|
): string {
|
|
return snakeCase(`${parentTableName}_${parentTableIdPropertyName}`);
|
|
}
|
|
}
|