Skip to content

Commit ec3be41

Browse files
authored
feat: names of extra columns for specific tree types moved to NamingStrategy (#5737)
1 parent c5a22f5 commit ec3be41

File tree

3 files changed

+21
-5
lines changed

3 files changed

+21
-5
lines changed

src/metadata-builder/EntityMetadataBuilder.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,8 @@ export class EntityMetadataBuilder {
403403
}
404404
}
405405

406+
const { namingStrategy } = this.connection;
407+
406408
// check if tree is used then we need to add extra columns for specific tree types
407409
if (entityMetadata.treeType === "materialized-path") {
408410
entityMetadata.ownColumns.push(new ColumnMetadata({
@@ -414,7 +416,7 @@ export class EntityMetadataBuilder {
414416
mode: "virtual",
415417
propertyName: "mpath",
416418
options: /*tree.column || */ {
417-
name: "mpath",
419+
name: namingStrategy.materializedPathColumnName,
418420
type: "varchar",
419421
nullable: true,
420422
default: ""
@@ -423,16 +425,17 @@ export class EntityMetadataBuilder {
423425
}));
424426

425427
} else if (entityMetadata.treeType === "nested-set") {
428+
const { left, right } = namingStrategy.nestedSetColumnNames;
426429
entityMetadata.ownColumns.push(new ColumnMetadata({
427430
connection: this.connection,
428431
entityMetadata: entityMetadata,
429432
nestedSetLeft: true,
430433
args: {
431434
target: entityMetadata.target,
432435
mode: "virtual",
433-
propertyName: "nsleft",
436+
propertyName: left,
434437
options: /*tree.column || */ {
435-
name: "nsleft",
438+
name: left,
436439
type: "integer",
437440
nullable: false,
438441
default: 1
@@ -446,9 +449,9 @@ export class EntityMetadataBuilder {
446449
args: {
447450
target: entityMetadata.target,
448451
mode: "virtual",
449-
propertyName: "nsright",
452+
propertyName: right,
450453
options: /*tree.column || */ {
451-
name: "nsright",
454+
name: right,
452455
type: "integer",
453456
nullable: false,
454457
default: 2

src/naming-strategy/DefaultNamingStrategy.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,7 @@ export class DefaultNamingStrategy implements NamingStrategyInterface {
153153
eagerJoinRelationAlias(alias: string, propertyPath: string): string {
154154
return alias + "_" + propertyPath.replace(".", "_");
155155
}
156+
157+
nestedSetColumnNames = { left: "nsleft", right: "nsright" };
158+
materializedPathColumnName = "mpath";
156159
}

src/naming-strategy/NamingStrategyInterface.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,14 @@ export interface NamingStrategyInterface {
121121
* Gets the name of the alias used for relation joins.
122122
*/
123123
eagerJoinRelationAlias(alias: string, propertyPath: string): string;
124+
125+
/**
126+
* Column names for nested sets.
127+
*/
128+
nestedSetColumnNames: { left: string, right: string };
129+
130+
/**
131+
* Column name for materialized paths.
132+
*/
133+
materializedPathColumnName: string;
124134
}

0 commit comments

Comments
 (0)