From 07bd4cca50b1f05db2f26ce38f5ddbe12c880973 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20C=C3=A9sar=20Batista?= Date: Wed, 16 Nov 2022 11:51:55 -0300 Subject: [PATCH] Rename rows to columns and omit empty indices --- d2compiler/compile.go | 15 +++++++++------ d2graph/d2graph.go | 4 ++-- e2etests/stable_test.go | 38 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/d2compiler/compile.go b/d2compiler/compile.go index 506f765f9..570a12908 100644 --- a/d2compiler/compile.go +++ b/d2compiler/compile.go @@ -680,11 +680,12 @@ func (c *compiler) compileSQLTable(obj *d2graph.Object) { continue } if srcID == absID { - // Frontend isn't aware of container IDs. d2Col.Reference = strings.TrimPrefix(dstID, parentID+".") - e.FromTableRowIndex = len(obj.SQLTable.Columns) - } else { - e.ToTableRowIndex = len(obj.SQLTable.Columns) + e.FromTableColumnIndex = new(int) + *e.FromTableColumnIndex = len(obj.SQLTable.Columns) + } else if dstID == absID { + e.ToTableColumnIndex = new(int) + *e.ToTableColumnIndex = len(obj.SQLTable.Columns) } } @@ -745,8 +746,10 @@ func flattenContainer(g *d2graph.Graph, obj *d2graph.Object) { newEdge, _ = g.Root.Connect(e.Src.AbsIDArray(), obj.AbsIDArray(), e.SrcArrow, e.DstArrow, e.Attributes.Label.Value) } // TODO more attributes - newEdge.FromTableRowIndex = e.FromTableRowIndex - newEdge.ToTableRowIndex = e.ToTableRowIndex + newEdge.FromTableColumnIndex = new(int) + *newEdge.FromTableColumnIndex = *e.FromTableColumnIndex + newEdge.ToTableColumnIndex = new(int) + *newEdge.ToTableColumnIndex = *e.ToTableColumnIndex newEdge.Attributes.Label = e.Attributes.Label newEdge.References = e.References } diff --git a/d2graph/d2graph.go b/d2graph/d2graph.go index f1165730e..170aad88d 100644 --- a/d2graph/d2graph.go +++ b/d2graph/d2graph.go @@ -607,8 +607,8 @@ type Edge struct { MinWidth int `json:"minWidth"` MinHeight int `json:"minHeight"` - FromTableRowIndex int `json:"fromTableRowIndex"` - ToTableRowIndex int `json:"toTableRowIndex"` + FromTableColumnIndex *int `json:"fromTableColumnIndex,omitempty"` + ToTableColumnIndex *int `json:"toTableColumnIndex,omitempty"` LabelDimensions d2target.TextDimensions `json:"label_dimensions"` LabelPosition *string `json:"labelPosition,omitempty"` diff --git a/e2etests/stable_test.go b/e2etests/stable_test.go index c9a1a87fc..64d2403bb 100644 --- a/e2etests/stable_test.go +++ b/e2etests/stable_test.go @@ -831,6 +831,44 @@ a -> md -> b +setTimeout(seconds int) } `, + }, { + name: "sql_tables", + script: ` + users: { + shape: sql_table + id: int + name: string + email: string + password: string + last_login: datetime + } + + products: { + shape: sql_table + id: int + price: decimal + sku: string + name: string + } + + orders: { + shape: sql_table + id: int + user_id: int + product_id: int + } + + shipments: { + shape: sql_table + id: int + order_id: int + tracking_number: string + status: string + } + + users.id <-> orders.user_id + products.id <-> orders.product_id + shipments.order_id <-> orders.id`, }, }