Rename the parent pointer to root, as the pointer often references expression multiple layers above the current expression.

This commit is contained in:
go-jet 2025-03-09 19:06:17 +01:00
parent 1f3215c879
commit cfc264221b
41 changed files with 390 additions and 390 deletions

View file

@ -77,7 +77,7 @@ func newSelectStatement(table ReadableTable, projections []Projection) SelectSta
newSelect.ShareLock.Name = "LOCK IN SHARE MODE"
newSelect.ShareLock.InNewLine = true
newSelect.setOperatorsImpl.parent = newSelect
newSelect.setOperatorsImpl.root = newSelect
return newSelect
}

View file

@ -18,7 +18,7 @@ func newSelectTable(selectStmt jet.SerializerHasProjections, alias string, colum
SelectTable: jet.NewSelectTable(selectStmt, alias, columnAliases),
}
subQuery.readableTableInterfaceImpl.parent = subQuery
subQuery.readableTableInterfaceImpl.root = subQuery
return subQuery
}

View file

@ -35,15 +35,15 @@ type setOperators interface {
}
type setOperatorsImpl struct {
parent setOperators
root setOperators
}
func (s *setOperatorsImpl) UNION(rhs SelectStatement) setStatement {
return UNION(s.parent, rhs)
return UNION(s.root, rhs)
}
func (s *setOperatorsImpl) UNION_ALL(rhs SelectStatement) setStatement {
return UNION_ALL(s.parent, rhs)
return UNION_ALL(s.root, rhs)
}
type setStatementImpl struct {
@ -65,7 +65,7 @@ func newSetStatementImpl(operator string, all bool, selects []jet.SerializerStat
newSetStatement.setOperator.Limit.Count = -1
newSetStatement.setOperator.SkipSelectWrap = true
newSetStatement.setOperatorsImpl.parent = newSetStatement
newSetStatement.setOperatorsImpl.root = newSetStatement
return newSetStatement
}

View file

@ -44,35 +44,35 @@ type ReadableTable interface {
}
type readableTableInterfaceImpl struct {
parent ReadableTable
root ReadableTable
}
// Generates a select query on the current tableName.
func (r readableTableInterfaceImpl) SELECT(projection1 Projection, projections ...Projection) SelectStatement {
return newSelectStatement(r.parent, append([]Projection{projection1}, projections...))
return newSelectStatement(r.root, append([]Projection{projection1}, projections...))
}
// Creates a inner join tableName Expression using onCondition.
func (r readableTableInterfaceImpl) INNER_JOIN(table ReadableTable, onCondition BoolExpression) joinSelectUpdateTable {
return newJoinTable(r.parent, table, jet.InnerJoin, onCondition)
return newJoinTable(r.root, table, jet.InnerJoin, onCondition)
}
// Creates a left join tableName Expression using onCondition.
func (r readableTableInterfaceImpl) LEFT_JOIN(table ReadableTable, onCondition BoolExpression) joinSelectUpdateTable {
return newJoinTable(r.parent, table, jet.LeftJoin, onCondition)
return newJoinTable(r.root, table, jet.LeftJoin, onCondition)
}
// Creates a right join tableName Expression using onCondition.
func (r readableTableInterfaceImpl) RIGHT_JOIN(table ReadableTable, onCondition BoolExpression) joinSelectUpdateTable {
return newJoinTable(r.parent, table, jet.RightJoin, onCondition)
return newJoinTable(r.root, table, jet.RightJoin, onCondition)
}
func (r readableTableInterfaceImpl) FULL_JOIN(table ReadableTable, onCondition BoolExpression) joinSelectUpdateTable {
return newJoinTable(r.parent, table, jet.FullJoin, onCondition)
return newJoinTable(r.root, table, jet.FullJoin, onCondition)
}
func (r readableTableInterfaceImpl) CROSS_JOIN(table ReadableTable) joinSelectUpdateTable {
return newJoinTable(r.parent, table, jet.CrossJoin, nil)
return newJoinTable(r.root, table, jet.CrossJoin, nil)
}
// NewTable creates new table with schema Name, table Name and list of columns
@ -81,8 +81,8 @@ func NewTable(schemaName, name, alias string, columns ...jet.ColumnExpression) T
SerializerTable: jet.NewTable(schemaName, name, alias, columns...),
}
t.readableTableInterfaceImpl.parent = t
t.parent = t
t.readableTableInterfaceImpl.root = t
t.root = t
return t
}
@ -90,19 +90,19 @@ func NewTable(schemaName, name, alias string, columns ...jet.ColumnExpression) T
type tableImpl struct {
jet.SerializerTable
readableTableInterfaceImpl
parent Table
root Table
}
func (t *tableImpl) INSERT(columns ...jet.Column) InsertStatement {
return newInsertStatement(t.parent, jet.UnwidColumnList(columns))
return newInsertStatement(t.root, jet.UnwidColumnList(columns))
}
func (t *tableImpl) UPDATE(columns ...jet.Column) UpdateStatement {
return newUpdateStatement(t.parent, jet.UnwidColumnList(columns))
return newUpdateStatement(t.root, jet.UnwidColumnList(columns))
}
func (t *tableImpl) DELETE() DeleteStatement {
return newDeleteStatement(t.parent)
return newDeleteStatement(t.root)
}
type joinTable struct {
@ -115,8 +115,8 @@ func newJoinTable(lhs jet.Serializer, rhs jet.Serializer, joinType jet.JoinType,
JoinTable: jet.NewJoinTable(lhs, rhs, joinType, onCondition),
}
newJoinTable.readableTableInterfaceImpl.parent = newJoinTable
newJoinTable.parent = newJoinTable
newJoinTable.readableTableInterfaceImpl.root = newJoinTable
newJoinTable.root = newJoinTable
return newJoinTable
}

View file

@ -36,7 +36,7 @@ func CTE(name string, columns ...jet.ColumnExpression) CommonTableExpression {
CommonTableExpression: jet.CTE(name, columns...),
}
cte.parent = cte
cte.root = cte
return cte
}