Commit 605449b023dcef3ea0b7261c1d7d120e000d006e

Authored by totoro
1 parent 988ad097

put the real content of the function for creating INSERT or UPDATE query argumen…

…ts with the given list of fields
Showing 1 changed file with 25 additions and 8 deletions   Show diff stats
database/db_update_fields.anubis
... ... @@ -12,33 +12,50 @@ public type SQLite3_update_field:
12 12 field(String column, SQLite3Bind bind).
13 13  
14 14 public define (List(SQLite3Bind), String)
15   - make_update_clause_and_binds
  15 + _make_update_clause_and_binds
16 16 (
17 17 List(SQLite3_update_field) fields,
18 18 List(SQLite3Bind) so_far,
19   - List(String) clause
  19 + List(String) set_clause
20 20 )=
21 21 if fields is
22 22 {
23   - [] then (so_far, join(", ",clause)),
  23 + [] then (so_far, join(", ",set_clause)),
24 24 [ h . t ] then
25 25 if h is field(column, bind) then
26   - make_update_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . clause])
  26 + _make_update_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . set_clause])
27 27 }
28 28 .
29 29  
30 30 public define (List(SQLite3Bind), String)
31   - make_insert_clause_and_binds
  31 + make_update_clause_and_binds
  32 + (
  33 + List(SQLite3_update_field) fields
  34 + )=
  35 + _make_update_clause_and_binds(fields, [], [])
  36 +.
  37 +
  38 +public define (List(SQLite3Bind), String, String)
  39 + _make_insert_clause_and_binds
32 40 (
33 41 List(SQLite3_update_field) fields,
34 42 List(SQLite3Bind) so_far,
35   - List(String) clause
  43 + List(String) insert_columns,
  44 + List(String) insert_values
36 45 )=
37 46 if fields is
38 47 {
39   - [] then (so_far, join(", ",clause)),
  48 + [] then (so_far, "("+join(", ",insert_columns)+")", "("+join(", ",insert_values)+")"),
40 49 [ h . t ] then
41 50 if h is field(column, bind) then
42   - make_insert_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . clause])
  51 + _make_insert_clause_and_binds(t, [bind . so_far], ["\""+column+"\"" . insert_columns], [":v_"+column . insert_values])
43 52 }
44 53 .
  54 +
  55 +public define (List(SQLite3Bind), String, String)
  56 + make_insert_clause_and_binds
  57 + (
  58 + List(SQLite3_update_field) fields
  59 + )=
  60 + _make_insert_clause_and_binds(fields, [], [], [])
  61 +.
... ...