(in ast.Node)
| 39 | } |
| 40 | |
| 41 | func (v *Stmt) Enter(in ast.Node) (ast.Node, bool) { |
| 42 | if node, ok := in.(*ast.TableName); ok { |
| 43 | v.Schema = node.Schema.String() |
| 44 | v.Table = node.Name.String() |
| 45 | } |
| 46 | |
| 47 | if node, ok := in.(*ast.UpdateStmt); ok { |
| 48 | v.Operation = common.UpdateDML |
| 49 | v.Before = make(map[string]interface{}, 1) |
| 50 | if node.Where != nil { |
| 51 | if err := beforeData(v.logger, node.Where, v.Before); err != nil { |
| 52 | v.Error = errors.Wrap(err, "update sql restore column failed") |
| 53 | return node, true |
| 54 | } |
| 55 | } |
| 56 | } |
| 57 | |
| 58 | if node, ok := in.(*ast.InsertStmt); ok { |
| 59 | v.Operation = common.InsertDML |
| 60 | v.Data = make(map[string]interface{}, 1) |
| 61 | for i, col := range node.Columns { |
| 62 | v.Columns = append(v.Columns, StringsBuilder("`", col.String(), "`")) |
| 63 | for _, lists := range node.Lists { |
| 64 | var columnValue strings.Builder |
| 65 | flags := format.RestoreStringWithoutDefaultCharset |
| 66 | err := lists[i].Restore(format.NewRestoreCtx(flags, &columnValue)) |
| 67 | if err != nil { |
| 68 | v.Error = errors.Wrap(err, "inserl sql restore column value failed") |
| 69 | return in, true |
| 70 | } |
| 71 | v.NewColumnValues = append(v.NewColumnValues, columnsValueConverter(columnValue.String())) |
| 72 | } |
| 73 | } |
| 74 | } |
| 75 | |
| 76 | if node, ok := in.(*ast.DeleteStmt); ok { |
| 77 | v.Operation = common.DeleteDML |
| 78 | v.Before = make(map[string]interface{}, 1) |
| 79 | if node.Where != nil { |
| 80 | if err := beforeData(v.logger, node.Where, v.Before); err != nil { |
| 81 | v.Error = errors.Wrap(err, "delete sql restore column failed") |
| 82 | return in, true |
| 83 | } |
| 84 | } |
| 85 | } |
| 86 | return in, false |
| 87 | } |
| 88 | |
| 89 | func (v *Stmt) Leave(in ast.Node) (ast.Node, bool) { |
| 90 | return in, true |
nothing calls this directly
no test coverage detected