db_update_fields.anubis 1.6 KB
/*
 * Created by PyramIDE.
 * User: フランスのトトロ aka (David RENÉ) 
 * Date: 17/03/2017
 * Time: 00:11
 * © David RENÉ
 */
read tools/basis.anubis
read system/string.anubis

public type SQLite3_update_field:
  field(String column, SQLite3Bind bind).

public define (List(SQLite3Bind), String)
  _make_update_clause_and_binds
  (
    List(SQLite3_update_field)  fields,
    List(SQLite3Bind)           so_far,
    List(String)                set_clause
  )=
  if fields is
  {
    []        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 . set_clause])
  }
.

public define (List(SQLite3Bind), String)
  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)                insert_columns,
    List(String)                insert_values
  )=
  if fields is
  {
    []        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+"\"" . 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, [], [], [])
.