Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## The purpose of this method is to replace the GODOT SQLite [method update_rows] method.[br]
- ## It allows for NULL entries into the database by leaving strings empty or by making values [code]null[/code].
- ## And unlike the [method update_rows] method, you do not have to wrap anything in quotation marks yourself.
- func update_values(table : String, criteria : Dictionary, values_to_change : Dictionary, verbose : bool = true):
- var _wrap := func(a : Array, allow_null : bool = false) -> Array:
- for i in range(a.size()):
- if a[i] is String:
- a[i] = "\"%s\"" % a[i]
- if allow_null and ((a[i] is String and a[i] == "") or a[i] == null):
- a[i] = "NULL" # This intentionally leaves off escaped quotation marks to make the value actually NULL in the database.
- return a
- var _string := func(keys : Array, vals : Array, separator : String) -> String:
- var out : String = ""
- for i in range(keys.size()):
- out += "%s = %s" % [keys[i], str(vals[i]) + separator]
- out = out.rstrip(separator)
- return out
- if " " in table: table = "'%s'" % table
- var criteria_keys : Array = criteria.keys()
- var criteria_vals : Array
- for i in criteria_keys: criteria_vals.append(criteria[i])
- criteria_keys = _wrap.call(criteria_keys)
- criteria_vals = _wrap.call(criteria_vals)
- var changes_keys : Array = values_to_change.keys()
- var changes_vals : Array
- for i in changes_keys: changes_vals.append(values_to_change[i])
- changes_keys = _wrap.call(changes_keys)
- changes_vals = _wrap.call(changes_vals, true)
- var criteria_string : String = _string.call(criteria_keys, criteria_vals, " AND ")
- var valchange_string : String = _string.call(changes_keys, changes_vals, ", ")
- var q = "UPDATE %s SET %s WHERE %s;" % [table, valchange_string, criteria_string]
- if verbose: I.say(q)
- db.query(q)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement