import { Alias } from "./Alias"; import { BaseNode, Keyword } from "./Base"; import { Expr, Identifier, ListExpr, MemberExpr, ParenExpr } from "./Expr"; import { Default, OrAlternateAction } from "./Insert"; import { MysqlModifier } from "./dialects/Mysql"; import { FromClause, LimitClause, OrderByClause, RelationExpr, WhereClause, WithClause } from "./Select"; import { IntoVariablesClause, ReturningClause } from "./OtherClauses"; export type AllUpdateNodes = UpdateStmt | UpdateClause | SetClause | ColumnAssignment; export interface UpdateStmt extends BaseNode { type: "update_stmt"; clauses: (WithClause | UpdateClause | SetClause | WhereClause | FromClause | OrderByClause | LimitClause | ReturningClause | IntoVariablesClause)[]; } export interface UpdateClause extends BaseNode { type: "update_clause"; updateKw: Keyword<"UPDATE">; modifiers: MysqlModifier[]; orAction?: OrAlternateAction; tables: ListExpr>; } export interface SetClause extends BaseNode { type: "set_clause"; setKw: Keyword<"SET">; assignments: ListExpr; } export interface ColumnAssignment extends BaseNode { type: "column_assignment"; column: Identifier | MemberExpr | ParenExpr>; expr: Expr | Default; }