1
1
import { Graph , LinkedList , GraphEdge , GraphVertex , VertexKeyExtractor } from '../index' ;
2
+ import { EdgeKeyExtractor } from '../data-structures' ;
2
3
interface User {
3
4
age : number ;
4
5
}
@@ -18,24 +19,29 @@ enum LinkKind {
18
19
Parent = 'parent'
19
20
}
20
21
interface UserLink {
22
+ id : string ;
21
23
kind : LinkKind ;
22
24
}
23
25
const keyExtractor : VertexKeyExtractor < User > = user => user . age ;
26
+ const edgeKeyExtractor : EdgeKeyExtractor < GraphEdge < User , UserLink > > = edge => edge . value . id ;
27
+
24
28
const graph = new Graph < User , UserLink > ( true ) ;
25
29
const vertex1 = new GraphVertex < User , UserLink > ( { age : 10 } , keyExtractor ) ;
26
30
const vertex2 = new GraphVertex < User , UserLink > ( { age : 22 } , keyExtractor ) ;
27
- const edge = new GraphEdge < User , UserLink > ( vertex1 , vertex2 , { kind : LinkKind . Friend } ) ;
31
+ const edge = new GraphEdge < User , UserLink > ( vertex1 , vertex2 , { id : '1' , kind : LinkKind . Friend } , edgeKeyExtractor ) ;
28
32
29
33
const vertex3 = new GraphVertex < User , UserLink > ( { age : 30 } , keyExtractor ) ;
30
34
const vertex4 = new GraphVertex < User , UserLink > ( { age : 35 } , keyExtractor ) ;
31
- const edge2 = new GraphEdge < User , UserLink > ( vertex3 , vertex4 , { kind : LinkKind . Parent } ) ;
35
+ const edge2 = new GraphEdge < User , UserLink > ( vertex3 , vertex4 , { id : '2' , kind : LinkKind . Parent } , edgeKeyExtractor ) ;
36
+ const edge3 = new GraphEdge < User , UserLink > ( vertex3 , vertex4 , { id : '3' , kind : LinkKind . Parent } , edgeKeyExtractor ) ;
32
37
33
38
graph
34
39
. addVertex ( vertex1 )
35
40
. addVertex ( vertex2 )
36
41
. addEdge ( edge )
37
42
. addVertex ( vertex3 )
38
43
. addVertex ( vertex4 )
39
- . addEdge ( edge2 ) ;
44
+ . addEdge ( edge2 )
45
+ . addEdge ( edge3 ) ;
40
46
console . log ( 'grah vertices =>' , graph . getAllVertices ( ) ) ;
41
47
console . log ( 'grah edges =>' , graph . getAllEdges ( ) ) ;
0 commit comments