From 688b9a22b6ed6d56a4980c6784330e0d4b9572af Mon Sep 17 00:00:00 2001 From: narawat Date: Sun, 7 Jun 2026 13:43:47 +0700 Subject: [PATCH 1/3] 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 From 947580a2ecb382362040972d61adfb9fc593a978 Mon Sep 17 00:00:00 2001 From: narawat Date: Sun, 7 Jun 2026 13:46:04 +0700 Subject: [PATCH 2/3] update --- src/dbUtil.jl | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/dbUtil.jl b/src/dbUtil.jl index 1edd187..5fc1e39 100644 --- a/src/dbUtil.jl +++ b/src/dbUtil.jl @@ -190,10 +190,8 @@ function generateUpdateSQL(table_name::String, pk_dict::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 + value_str = isa(value, AbstractString) ? "'$value'" : "$value" + push!(set_parts, "$(string(key)) = $value_str") end set_clause = join(set_parts, ", ") @@ -201,8 +199,8 @@ function generateUpdateSQL(table_name::String, pk_dict::AbstractDict{String, Any # 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") + val_str = isa(val, AbstractString) ? "'$val'" : "$val" + push!(where_parts, "$(string(col)) = $val_str") end where_clause = join(where_parts, " AND ") From 919800da4221e3c1cbc6c3bbdc2aa90bbe9eccf8 Mon Sep 17 00:00:00 2001 From: narawat Date: Sun, 7 Jun 2026 13:56:07 +0700 Subject: [PATCH 3/3] add generateUpdateSQL --- src/dbUtil.jl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/dbUtil.jl b/src/dbUtil.jl index 5fc1e39..50074a6 100644 --- a/src/dbUtil.jl +++ b/src/dbUtil.jl @@ -190,8 +190,10 @@ function generateUpdateSQL(table_name::String, pk_dict::AbstractDict{String, Any # Build SET clause set_parts = String[] for (key, value) in data - value_str = isa(value, AbstractString) ? "'$value'" : "$value" - push!(set_parts, "$(string(key)) = $value_str") + if key ∉ keys(data) + value_str = isa(value, AbstractString) ? "'$value'" : "$value" + push!(set_parts, "$(string(key)) = $value_str") + end end set_clause = join(set_parts, ", ") @@ -199,8 +201,8 @@ function generateUpdateSQL(table_name::String, pk_dict::AbstractDict{String, Any # 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") + val_str = isa(val, AbstractString) ? "'$val'" : "$val" + push!(where_parts, "$(string(col)) = $val_str") end where_clause = join(where_parts, " AND ")