@@ -3,6 +3,7 @@ package container
33import (
44 "context"
55
6+ "github.com/specterops/dawgs/cardinality"
67 "github.com/specterops/dawgs/cypher/models/cypher"
78 "github.com/specterops/dawgs/database"
89 "github.com/specterops/dawgs/graph"
@@ -14,13 +15,9 @@ const (
1415 channelBufferLen = 4096
1516)
1617
17- type anonymousEdge struct {
18- EdgeID uint64
19- StartID uint64
20- EndID uint64
21- }
22-
2318func FetchAdjacencyGraph (ctx context.Context , graphDB database.Instance , relationshipFilter cypher.SyntaxNode ) (DirectedGraph , error ) {
19+ defer util .SLogMeasure ("FetchAdjacencyGraph" )()
20+
2421 digraph := NewAdjacencyMapGraph ()
2522
2623 return digraph , graphDB .Session (ctx , func (ctx context.Context , driver database.Driver ) error {
@@ -31,7 +28,6 @@ func FetchAdjacencyGraph(ctx context.Context, graphDB database.Instance, relatio
3128 }
3229
3330 builder .Return (
34- query .Relationship ().ID (),
3531 query .Start ().ID (),
3632 query .End ().ID (),
3733 )
@@ -44,16 +40,15 @@ func FetchAdjacencyGraph(ctx context.Context, graphDB database.Instance, relatio
4440
4541 for result .HasNext (ctx ) {
4642 var (
47- edgeID uint64
4843 startID uint64
4944 endID uint64
5045 )
5146
52- if err := result .Scan (& edgeID , & startID , & endID ); err != nil {
47+ if err := result .Scan (& startID , & endID ); err != nil {
5348 return err
5449 }
5550
56- digraph .AddEdge (edgeID , startID , endID )
51+ digraph .AddEdge (startID , endID )
5752 }
5853
5954 return result .Error ()
@@ -100,22 +95,36 @@ func FetchKindDatabase(ctx context.Context, graphDB database.Instance) (KindData
10095}
10196
10297type TSDB struct {
103- Triplestore Triplestore
104- EdgeKinds KindMap
98+ Store Triplestore
99+ EdgeKinds KindMap
105100}
106101
107- func NewTSDB ( ) TSDB {
102+ func ( s TSDB ) Projection ( deletedNodes , deletedEdges cardinality. Duplex [ uint64 ] ) TSDB {
108103 return TSDB {
109- Triplestore : NewTriplestore ( ),
110- EdgeKinds : KindMap {} ,
104+ Store : s . Store . Projection ( deletedNodes , deletedEdges ),
105+ EdgeKinds : s . EdgeKinds ,
111106 }
112107}
113108
114- func FetchTriplestore ( ctx context. Context , graphDB database. Instance , filter cypher. SyntaxNode ) ( TSDB , error ) {
115- tsdb := TSDB {
116- Triplestore : NewTriplestore () ,
117- EdgeKinds : KindMap {} ,
109+ func NewTSDB ( ts Triplestore , edgeKinds KindMap ) TSDB {
110+ return TSDB {
111+ Store : ts ,
112+ EdgeKinds : edgeKinds ,
118113 }
114+ }
115+
116+ func EmptyTSDB () TSDB {
117+ return NewTSDB (NewTriplestore (), KindMap {})
118+ }
119+
120+ func FetchTSDB (ctx context.Context , graphDB database.Instance , filter cypher.SyntaxNode ) (TSDB , error ) {
121+ var (
122+ store = NewTriplestore ()
123+ tsdb = TSDB {
124+ Store : store ,
125+ EdgeKinds : KindMap {},
126+ }
127+ )
119128
120129 defer util .SLogMeasure ("FetchTriplestore" )()
121130
@@ -149,7 +158,7 @@ func FetchTriplestore(ctx context.Context, graphDB database.Instance, filter cyp
149158 return err
150159 }
151160
152- tsdb . Triplestore . AddEdge (relationshipID , startID , endID )
161+ store . AddTriple (relationshipID , startID , endID )
153162 tsdb .EdgeKinds .Add (relationshipKind , relationshipID )
154163 }
155164
0 commit comments