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