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

Function AddSetClause

pkg/transform/set.go:60–87  ·  view source on GitHub ↗

AddSetClause returns a Rule that appends a new assignment to the SET clause of an UPDATE statement. If a column with the same name already exists (case- insensitive), its value is overwritten rather than duplicated. Parameters: - column: the column name to set - valueSQL: a SQL expression string fo

(column, valueSQL string)

Source from the content-addressed store, hash-verified

58//
59// transform.Apply(stmt, transform.AddSetClause("updated_at", "NOW()"))
60func AddSetClause(column, valueSQL string) Rule {
61 return RuleFunc(func(stmt ast.Statement) error {
62 upd, ok := stmt.(*ast.UpdateStatement)
63 if !ok {
64 return &ErrUnsupportedStatement{Transform: "AddSetClause", Got: stmtTypeName(stmt)}
65 }
66
67 valueExpr, err := parseValueExpr(valueSQL)
68 if err != nil {
69 return fmt.Errorf("AddSetClause: %w", err)
70 }
71
72 // Replace existing assignment for the same column (case-insensitive).
73 for i, a := range upd.Assignments {
74 if strings.EqualFold(identifierName(a.Column), column) {
75 upd.Assignments[i].Value = valueExpr
76 return nil
77 }
78 }
79
80 // Append a new assignment.
81 upd.Assignments = append(upd.Assignments, ast.UpdateExpression{
82 Column: &ast.Identifier{Name: column},
83 Value: valueExpr,
84 })
85 return nil
86 })
87}
88
89// SetClause is an alias for AddSetClause. It sets the value of a column in the
90// UPDATE SET clause, adding it if not present or replacing it if already there.

Calls 5

RuleFuncFuncType · 0.85
parseValueExprFunction · 0.85
stmtTypeNameFunction · 0.70
identifierNameFunction · 0.70
ErrorfMethod · 0.65