Skip to content

Commit adcf8ac

Browse files
committed
fix TableGoSchema, add more precise typing
1 parent 643399e commit adcf8ac

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

src/main/scala/com/bio4j/dynamograph/model/go/TableGoSchema.scala

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,46 @@ import ohnosequences.scarph.AnySealedVertexType
1414

1515
object TableGoSchema {
1616

17+
trait AnyVertexTable { vertexTable =>
18+
19+
type VertexTpe <: Singleton with AnySealedVertexType
20+
val vt: VertexTpe
21+
22+
type Region <: AnyRegion
23+
val region: Region
24+
25+
type Table <: AnyHashKeyTable { type Region = vertexTable.Region }
26+
val table: Table
27+
28+
// provided implicitly at construction
29+
val recordValuesAreOK: everyElementOf[VertexTpe#Record#Values]#isOneOf[ValidValues]
30+
31+
type VertexItem <: AnyItem.ofTable[Table] with AnyItem { type Record = VertexTpe#Record }
32+
val vertexItem: VertexItem
33+
}
1734

1835
class VertexTable[
19-
VT <: AnySealedVertexType,
36+
VT <: Singleton with AnySealedVertexType,
2037
R <: AnyRegion
2138
](
2239
val vt : VT,
2340
val tableName : String,
2441
val region: R
25-
){
26-
case object table extends HashKeyTable(tableName, id, region)
42+
)(
43+
implicit val recordValuesAreOK: everyElementOf[VT#Record#Values]#isOneOf[ValidValues]
44+
)
45+
extends AnyVertexTable {
46+
2747
type VertexTpe = VT
28-
case object vertexItem extends Item(table, vt.record)
48+
type Region = R
49+
50+
type Table = Table.type
51+
val table = Table
52+
case object Table extends HashKeyTable(tableName, id, region)
53+
54+
type VertexItem = VertexItem.type
55+
val vertexItem = VertexItem
56+
case object VertexItem extends Item[Table, VertexTpe#Record](table, vt.record)
2957
}
3058

3159

0 commit comments

Comments
 (0)