Skip to content

Commit 48d2904

Browse files
committed
[#18] EdgeWriter refactoring
1 parent c7d7837 commit 48d2904

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

src/main/scala/com/bio4j/dynamograph/AnyEdgeTypeWithId.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ trait AnyEdgeTypeWithId extends AnySealedEdgeType {
2020
val idLookup: Lookup[record.Raw, relationId.Rep]
2121
val sourceLookup: Lookup[record.Raw, SourceId#Rep]
2222
val targetLookup: Lookup[record.Raw, TargetId#Rep]
23+
type SourceType <: AnyVertexTypeWithId
24+
type TargetType <: AnyVertexTypeWithId
2325
}
2426

2527
abstract class EdgeTypeWithId[
@@ -40,4 +42,6 @@ abstract class EdgeTypeWithId[
4042
val targetLookup: Lookup[R#Raw, targetId.Rep]
4143
)extends AnyEdgeTypeWithId with From[S] with To[T] {
4244
type Record = R
45+
type SourceType = S
46+
type TargetType = T
4347
}

src/main/scala/com/bio4j/dynamograph/model/edgeTables.scala

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ trait AnyEdgeTables { edgeTables =>
1818
}
1919
val edgeType: EdgeType
2020

21+
type InVertexId = edgeTables.edgeType.targetType.Id
22+
val inVertexId: InVertexId = edgeTables.edgeType.targetType.id
23+
type OutVertexId = edgeTables.edgeType.sourceType.Id
24+
val outVertexId: OutVertexId = edgeTables.edgeType.sourceType.id
25+
26+
2127
type EdgeId = edgeType.Id
2228
val edgeId: EdgeId = edgeType.id
2329
type ContaintEdgeId = EdgeId EdgeRecord#Properties
@@ -43,12 +49,12 @@ trait AnyEdgeTables { edgeTables =>
4349
val region: Region
4450

4551
type OutTable <: Singleton with AnyTable.inRegion[edgeTables.Region] with
46-
AnyCompositeKeyTable.withHashKey[edgeTables.EdgeType#SourceType#Id] with
52+
AnyCompositeKeyTable.withHashKey[OutVertexId] with
4753
AnyCompositeKeyTable.withRangeKey[edgeTables.EdgeId]
4854
val outTable: OutTable
4955

5056
type OutRecord = OutRecord.type; val outRecord = OutRecord
51-
case object OutRecord extends Record(edgeType.sourceType.id :~: edgeId :~: )
57+
case object OutRecord extends Record(outVertexId :~: edgeId :~: )
5258
type OutItem <: Singleton with AnyItem with
5359
AnyItem.ofTable[edgeTables.OutTable] with
5460
AnyItem.withRecord[edgeTables.OutRecord]
@@ -66,12 +72,12 @@ trait AnyEdgeTables { edgeTables =>
6672
val edgeItem : EdgeItem
6773

6874
type InTable <: Singleton with AnyTable.inRegion[edgeTables.Region] with
69-
AnyCompositeKeyTable.withHashKey[edgeType.targetType.Id] with
75+
AnyCompositeKeyTable.withHashKey[edgeTables.InVertexId] with
7076
AnyCompositeKeyTable.withRangeKey[edgeTables.EdgeId]
7177
val inTable: InTable
7278

7379
type InRecord = InRecord.type; val inRecord = InRecord
74-
case object InRecord extends Record(edgeType.targetType.id :~: edgeId :~: )
80+
case object InRecord extends Record(inVertexId :~: edgeId :~: )
7581
type InItem <: Singleton with AnyItem with
7682
AnyItem.ofTable[edgeTables.InTable] with
7783
AnyItem.withRecord[edgeTables.InRecord]
@@ -111,7 +117,7 @@ extends AnyEdgeTables {
111117
val targetIdLookup = edgeType.targetLookup
112118

113119
type OutTable = OutTable.type; val outTable = OutTable
114-
case object OutTable extends CompositeKeyTable(s"${tableName}_OUT", edgeType.sourceType.id, edgeId, region)
120+
case object OutTable extends CompositeKeyTable(s"${tableName}_OUT", outVertexId, edgeId, region)
115121
type OutItem = OutItem.type; val outItem = OutItem
116122
case object OutItem extends Item(outTable, outRecord)
117123

@@ -123,7 +129,7 @@ extends AnyEdgeTables {
123129
case object EdgeItem extends Item(edgeTable, edgeRecord)
124130

125131
type InTable = InTable.type; val inTable = InTable
126-
case object InTable extends CompositeKeyTable(s"{tableName}_IN", edgeType.targetType.id, edgeId, region)
132+
case object InTable extends CompositeKeyTable(s"{tableName}_IN", inVertexId, edgeId, region)
127133
type InItem = InItem.type; val inItem = InItem
128134
case object InItem extends Item(inTable, inRecord)
129135

src/main/scala/com/bio4j/dynamograph/writer/EdgeWriter.scala

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,15 @@ trait AnyEdgeWriter { edgeWriter =>
1717

1818
type EdgeTables <: Singleton with AnyEdgeTables
1919
val edgeTables: EdgeTables
20+
21+
2022
type EdgeType = edgeTables.EdgeType
2123
val edgeType : EdgeType = edgeTables.edgeType
24+
//
25+
type InVertexId = edgeTables.InVertexId
26+
val inVertexId: InVertexId = edgeTables.inVertexId
27+
type OutVertexId = edgeTables.OutVertexId
28+
val outVertexId: OutVertexId= edgeTables.outVertexId
2229

2330
type EdgeTable = edgeTables.EdgeTable
2431
val edgeTable: EdgeTable = edgeTables.edgeTable
@@ -37,7 +44,7 @@ trait AnyEdgeWriter { edgeWriter =>
3744
type InItem = edgeTables.InItem
3845
val inItem: InItem = edgeTables.inItem
3946
type InRecord = edgeTables.InRecord
40-
val inRecord: InRecord = edgeTables.inRecord
47+
val inRecord : InRecord= edgeTables.inRecord
4148

4249
type EdgeId = edgeTables.EdgeId
4350
val edgeId : EdgeId = edgeTables.edgeId
@@ -46,9 +53,7 @@ trait AnyEdgeWriter { edgeWriter =>
4653
type TargetId = edgeTables.TargetId
4754
val tgtId : TargetId = edgeTables.tgtId
4855

49-
type InVertexId = edgeType.targetType.Id
50-
val inVertexId : InVertexId = edgeType.targetType.id
51-
56+
5257
implicit val containId : EdgeId EdgeRecord#Properties = edgeTables.containEdgeId
5358
implicit val edgeIdLookup : Lookup[EdgeRecord#Raw, edgeId.Rep] = edgeTables.edgeIdLookup
5459

@@ -61,31 +66,32 @@ trait AnyEdgeWriter { edgeWriter =>
6166

6267

6368
def write(edgeItemValue: TaggedWith[EdgeRecord])(implicit transf: From.Item[EdgeItem, SDKRep]): List[AnyPutItemAction] = {
64-
val inRep = inItem ->> (
65-
inRecord ->> (
69+
val inRep = edgeTables.inItem ->> (
70+
inRecord ->> (
6671
(inVertexId ->> edgeItemValue.get(srcId)) :~:
6772
(edgeId ->> edgeItemValue.get(edgeId)) :~:
6873
)
6974
)
7075

71-
val outRep = outItem fields (
72-
(outTable.hashKey is edgeItemValue.get(tgtId)) :~:
73-
(outTable.rangeKey is edgeItemValue.get(edgeTables.edgeId)) :~:
74-
76+
val outRep = edgeTables.outItem fields (
77+
edgeTables.outRecord ->> (
78+
(outVertexId is edgeItemValue.get(tgtId)) :~:
79+
(edgeId is edgeItemValue.get(edgeTables.edgeId)) :~:
80+
)
7581
)
7682

7783
val inTableRequest = InCompositeKeyTable(inTable, Active(inTable, ServiceProvider.service.account,
7884
ThroughputStatus(1,1))) putItem inItem withValue inRep
7985
val outTableRequest = InCompositeKeyTable(outTable, Active(outTable, ServiceProvider.service.account,
80-
ThroughputStatus(1,1))) putItem outItem withValue outItem ->> outRep.fields
86+
ThroughputStatus(1,1))) putItem outItem withValue outRep
8187
val tableRequest = InHashKeyTable(edgeTable, Active(edgeTable, ServiceProvider.service.account,
8288
ThroughputStatus(1,1))) putItem edgeItem withValue (edgeItem ->> edgeItemValue)
8389

8490
List(inTableRequest, outTableRequest, tableRequest)
8591
}
8692
}
8793

88-
class EdgeWriter[ET <: AnyEdgeTables](val edgeTables: ET) extends AnyEdgeWriter {
94+
class EdgeWriter[ET <: Singleton with AnyEdgeTables](val edgeTables: ET) extends AnyEdgeWriter {
8995

9096
type EdgeTables = ET
9197

0 commit comments

Comments
 (0)