From 605449b023dcef3ea0b7261c1d7d120e000d006e Mon Sep 17 00:00:00 2001 From: totoro Date: Sat, 18 Mar 2017 03:25:30 +0100 Subject: [PATCH] put the real content of the function for creating INSERT or UPDATE query arguments with the given list of fields --- database/db_update_fields.anubis | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/database/db_update_fields.anubis b/database/db_update_fields.anubis index 5dde64d..cfdb6ed 100644 --- a/database/db_update_fields.anubis +++ b/database/db_update_fields.anubis @@ -12,33 +12,50 @@ public type SQLite3_update_field: field(String column, SQLite3Bind bind). public define (List(SQLite3Bind), String) - make_update_clause_and_binds + _make_update_clause_and_binds ( List(SQLite3_update_field) fields, List(SQLite3Bind) so_far, - List(String) clause + List(String) set_clause )= if fields is { - [] then (so_far, join(", ",clause)), + [] then (so_far, join(", ",set_clause)), [ h . t ] then if h is field(column, bind) then - make_update_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . clause]) + _make_update_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . set_clause]) } . public define (List(SQLite3Bind), String) - make_insert_clause_and_binds + make_update_clause_and_binds + ( + List(SQLite3_update_field) fields + )= + _make_update_clause_and_binds(fields, [], []) +. + +public define (List(SQLite3Bind), String, String) + _make_insert_clause_and_binds ( List(SQLite3_update_field) fields, List(SQLite3Bind) so_far, - List(String) clause + List(String) insert_columns, + List(String) insert_values )= if fields is { - [] then (so_far, join(", ",clause)), + [] then (so_far, "("+join(", ",insert_columns)+")", "("+join(", ",insert_values)+")"), [ h . t ] then if h is field(column, bind) then - make_insert_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . clause]) + _make_insert_clause_and_binds(t, [bind . so_far], ["\""+column+"\"" . insert_columns], [":v_"+column . insert_values]) } . + +public define (List(SQLite3Bind), String, String) + make_insert_clause_and_binds + ( + List(SQLite3_update_field) fields + )= + _make_insert_clause_and_binds(fields, [], [], []) +. -- libgit2 0.21.4