Skip to content

Commit 8fe1137

Browse files
authored
Merge pull request #1 from karol719/feature/build-readable-tree-from-node
build readable tree from node
2 parents 99ee4c4 + 2a54cb6 commit 8fe1137

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/repository/nested-set-subject.repository.ts

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,20 +30,14 @@ export abstract class NestedSetSubjectRepository<T extends NestedSetSubjectAbstr
3030
relationName: string, // 'b.tags'
3131
alias: string // 't'
3232
}[]
33-
} = {}) : Promise<NestedSetSubjectAbstract<T>> {
34-
const rootsQuery = this.createQueryBuilder('root')
35-
.where({
36-
parent: null
37-
})
38-
39-
const rootResult = (await rootsQuery.execute()).map(subject => this.map(subject))
33+
root?: NestedSetSubjectAbstract<T> | T
34+
} = {}) : Promise<NestedSetSubjectAbstract<T>> {
4035

41-
if(rootResult.length === 0) {
42-
return null
36+
let root = options.root;
37+
if(!root) {
38+
root = this.findRoot()
4339
}
44-
45-
const root = rootResult[0]
46-
40+
4741
let query = {
4842
left: {
4943
$gte: root.left
@@ -109,6 +103,19 @@ export abstract class NestedSetSubjectRepository<T extends NestedSetSubjectAbstr
109103
return subjects[0] as NestedSetSubjectAbstract<T>
110104
}
111105

106+
private async findRoot(): Promise<NestedSetSubjectAbstract<T>> {
107+
const rootsQuery = this.createQueryBuilder('root')
108+
.where({
109+
parent: null
110+
})
111+
112+
const rootResult = (await rootsQuery.execute()).map(subject => this.map(subject))
112113

114+
if(rootResult.length === 0) {
115+
return null
116+
}
117+
118+
return rootResult[0] as NestedSetSubjectAbstract<T>;
119+
}
113120

114121
}

0 commit comments

Comments
 (0)