From 688b9a22b6ed6d56a4980c6784330e0d4b9572af Mon Sep 17 00:00:00 2001 From: narawat Date: Sun, 7 Jun 2026 13:43:47 +0700 Subject: [PATCH] add generateUpdateSQL --- src/dbUtil.jl | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/dbUtil.jl b/src/dbUtil.jl index ba23453..1edd187 100644 --- a/src/dbUtil.jl +++ b/src/dbUtil.jl @@ -185,5 +185,30 @@ function generateUpdateSQL(table_name::String, pk_column::String, pk_value, return "UPDATE $table_name SET $set_clause WHERE $pk_column = $pk_val_str;" end +function generateUpdateSQL(table_name::String, pk_dict::AbstractDict{String, Any}, + data::AbstractDict{String, Any}) + # Build SET clause + set_parts = String[] + for (key, value) in data + if key ∉ pk_columns + value_str = isa(value, AbstractString) ? "'$value'" : "$value" + push!(set_parts, "$(string(key)) = $value_str") + end + end + + set_clause = join(set_parts, ", ") + + # Build WHERE clause for composite keys + where_parts = String[] + for (col, val) in pk_dict + val_str = isa(val, AbstractString) ? "'$val'" : "$val" + push!(where_parts, "$(string(col)) = $val_str") + end + + where_clause = join(where_parts, " AND ") + + return "UPDATE $table_name SET $set_clause WHERE $where_clause;" +end + end # module \ No newline at end of file