From e041ba7ef220e8ac2200f0c2f97fe0307b42e386 Mon Sep 17 00:00:00 2001 From: kooroshh Date: Sun, 1 May 2022 16:24:56 +0430 Subject: [PATCH 1/2] add primary_key, foreign_key, unique, index strategy --- src/snake-naming.strategy.ts | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/snake-naming.strategy.ts b/src/snake-naming.strategy.ts index 4765bc9..df2c6f2 100644 --- a/src/snake-naming.strategy.ts +++ b/src/snake-naming.strategy.ts @@ -3,6 +3,7 @@ import { DefaultNamingStrategy, NamingStrategyInterface } from 'typeorm'; import { snakeCase } from 'typeorm/util/StringUtils'; +import {Table} from "typeorm/schema-builder/table/Table"; export class SnakeNamingStrategy extends DefaultNamingStrategy @@ -62,7 +63,28 @@ export class SnakeNamingStrategy return snakeCase(parentTableName + '_' + parentTableIdPropertyName); } - eagerJoinRelationAlias(alias: string, propertyPath: string): string { - return alias + '__' + propertyPath.replace('.', '_'); + foreignKeyName(tableOrName: Table | string, columnNames: string[], _referencedTablePath?: string, _referencedColumnNames?: string[]): string { + const name = _referencedTablePath + '_' + columnNames.join('_'); + return`fk_${name}` + } + + indexName(tableOrName: Table | string, columnNames: string[], where?: string): string { + const name = tableOrName instanceof Table ? tableOrName.name : tableOrName; + return`index_${name}_${columnNames.join('_')}` + } + + primaryKeyName(tableOrName: Table | string, columnNames: string[]): string { + const name = tableOrName instanceof Table ? tableOrName.name : tableOrName; + return `pk_${name}_${columnNames.join('_')}`; + } + + uniqueConstraintName(tableOrName: Table | string, columnNames: string[]): string { + const name = tableOrName instanceof Table ? tableOrName.name : tableOrName; + return `unique_${name}_${columnNames.join('_')}`; + } + + relationConstraintName(tableOrName: Table | string, columnNames: string[], where?: string): string { + const name = tableOrName instanceof Table ? tableOrName.name : tableOrName; + return `rel_${name}_${columnNames.join('_')}`; } } From cba5b69d2ac43379740ce2e8225f323e2bbb7777 Mon Sep 17 00:00:00 2001 From: kooroshh Date: Sun, 1 May 2022 16:26:28 +0430 Subject: [PATCH 2/2] add eager join alias --- src/snake-naming.strategy.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/snake-naming.strategy.ts b/src/snake-naming.strategy.ts index df2c6f2..3118c8b 100644 --- a/src/snake-naming.strategy.ts +++ b/src/snake-naming.strategy.ts @@ -87,4 +87,8 @@ export class SnakeNamingStrategy const name = tableOrName instanceof Table ? tableOrName.name : tableOrName; return `rel_${name}_${columnNames.join('_')}`; } + + eagerJoinRelationAlias(alias: string, propertyPath: string): string { + return alias + '__' + propertyPath.replace('.', '_'); + } }