-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add Dataset #set_defaults and #set_overrides, used for scoping the va…
…lues used in insert/update statements Sequel has long been known for its chainable filters. Before this commit, it was not possible to chain the values used in insert or update statements. This commit adds two methods, with slightly different features, to accomplish this. set_defaults is used to set the default values used in insert or update statements, which can be overriden by the values passed to insert or update: DB[:t].set_defaults(:x=>1).insert_sql # => INSERT INTO t (x) VALUES (1) DB[:t].set_defaults(:x=>1).insert_sql(:x=>2) # => INSERT INTO t (x) VALUES (2) DB[:t].set_defaults(:x=>1).insert_sql(:y=>2) # => INSERT INTO t (x, y) VALUES (1, 2) set_overrides is used to set default values that override the values given to insert or update statements: DB[:t].set_overrides(:x=>1).insert_sql(:x=>2) # => INSERT INTO t (x) VALUES (1) In addition, chaining calls to set_default and set_overrides operate slightly differently: DB[:t].set_defaults(:x=>1).set_defaults(:x=>2).insert_sql # => INSERT INTO t (x) VALUES (2) DB[:t].set_overrides(:x=>1).set_overrides(:x=>2).insert_sql # => INSERT INTO t (x) VALUES (1) As show above, with set_default, the last call takes precedence, whereas with set_overrides, the first call takes precedence. Note that set_defaults and set_overrides only are used when insert or update is called with a hash. Dataset#insert had to go through some significant refactoring for this to work. All the specs still pass, so hopefully nothing broke because of it.
- Loading branch information
1 parent
7350715
commit ec6619e
Showing
4 changed files
with
92 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters