MCPcopy Create free account
hub / github.com/ajitpratap0/GoSQLX / formatMergeAction

Method formatMergeAction

cmd/gosqlx/cmd/sql_formatter.go:1351–1411  ·  view source on GitHub ↗

formatMergeAction formats the action part of a WHEN clause (UPDATE/INSERT/DELETE)

(action *ast.MergeAction)

Source from the content-addressed store, hash-verified

1349
1350// formatMergeAction formats the action part of a WHEN clause (UPDATE/INSERT/DELETE)
1351func (f *SQLFormatter) formatMergeAction(action *ast.MergeAction) error {
1352 if action == nil {
1353 return nil
1354 }
1355
1356 switch action.ActionType {
1357 case "UPDATE":
1358 f.writeKeyword("UPDATE SET")
1359 if len(action.SetClauses) > 0 {
1360 f.builder.WriteString(" ")
1361 for i, setClause := range action.SetClauses {
1362 if i > 0 {
1363 f.builder.WriteString(", ")
1364 }
1365 f.builder.WriteString(setClause.Column)
1366 f.builder.WriteString(" = ")
1367 if err := f.formatExpression(setClause.Value); err != nil {
1368 return fmt.Errorf("failed to format SET clause value: %w", err)
1369 }
1370 }
1371 }
1372
1373 case "INSERT":
1374 f.writeKeyword("INSERT")
1375 if action.DefaultValues {
1376 f.builder.WriteString(" ")
1377 f.writeKeyword("DEFAULT VALUES")
1378 } else if len(action.Columns) > 0 {
1379 f.builder.WriteString(" (")
1380 for i, col := range action.Columns {
1381 if i > 0 {
1382 f.builder.WriteString(", ")
1383 }
1384 f.builder.WriteString(col)
1385 }
1386 f.builder.WriteString(")")
1387 if len(action.Values) > 0 {
1388 f.writeNewline()
1389 f.builder.WriteString(f.currentIndent())
1390 f.writeKeyword("VALUES")
1391 f.builder.WriteString(" (")
1392 f.formatExpressionList(action.Values, ", ")
1393 f.builder.WriteString(")")
1394 }
1395 } else if len(action.Values) > 0 {
1396 f.builder.WriteString(" ")
1397 f.writeKeyword("VALUES")
1398 f.builder.WriteString(" (")
1399 f.formatExpressionList(action.Values, ", ")
1400 f.builder.WriteString(")")
1401 }
1402
1403 case "DELETE":
1404 f.writeKeyword("DELETE")
1405
1406 default:
1407 return fmt.Errorf("unsupported merge action type: %s", action.ActionType)
1408 }

Callers 1

formatMergeWhenClauseMethod · 0.95

Calls 6

writeKeywordMethod · 0.95
formatExpressionMethod · 0.95
writeNewlineMethod · 0.95
currentIndentMethod · 0.95
formatExpressionListMethod · 0.95
ErrorfMethod · 0.65

Tested by

no test coverage detected