in pkg/datasource/sql/undo/parser/parser_protobuf.go [62:141]
func ConvertToProto(intreeLog *undo.BranchUndoLog) *BranchUndoLog {
protoLog := &BranchUndoLog{
Xid: intreeLog.Xid,
BranchID: intreeLog.BranchID,
Logs: []*SQLUndoLog{},
}
for _, undolog := range intreeLog.Logs {
protolog := &SQLUndoLog{
SQLType: SQLType(undolog.SQLType),
TableName: undolog.TableName,
}
if undolog.BeforeImage != nil {
protolog.BeforeImage = &RecordImage{
TableName: undolog.BeforeImage.TableName,
SQLType: SQLType(undolog.BeforeImage.SQLType),
Rows: []*RowImage{},
}
for _, row := range undolog.BeforeImage.Rows {
protoRow := &RowImage{
Columns: []*ColumnImage{},
}
for _, col := range row.Columns {
anyValue, err := convertInterfaceToAny(col.GetActualValue())
if err != nil {
continue
}
protoCol := &ColumnImage{
KeyType: IndexType(col.KeyType),
ColumnName: col.ColumnName,
ColumnType: JDBCType(col.ColumnType),
Value: anyValue,
}
protoRow.Columns = append(protoRow.Columns, protoCol)
}
protolog.BeforeImage.Rows = append(protolog.BeforeImage.Rows, protoRow)
}
}
if undolog.AfterImage != nil {
protolog.AfterImage = &RecordImage{
TableName: undolog.AfterImage.TableName,
SQLType: SQLType(undolog.AfterImage.SQLType),
Rows: []*RowImage{},
}
for _, row := range undolog.AfterImage.Rows {
protoRow := &RowImage{
Columns: []*ColumnImage{},
}
for _, col := range row.Columns {
anyValue, err := convertInterfaceToAny(col.Value)
if err != nil {
continue
}
protoCol := &ColumnImage{
KeyType: IndexType(col.KeyType),
ColumnName: col.ColumnName,
ColumnType: JDBCType(col.ColumnType),
Value: anyValue,
}
protoRow.Columns = append(protoRow.Columns, protoCol)
}
protolog.AfterImage.Rows = append(protolog.AfterImage.Rows, protoRow)
}
}
protoLog.Logs = append(protoLog.Logs, protolog)
}
return protoLog
}