fix(query): Properly escape single quotes in SQLite

This commit is contained in:
Ben Gotow 2015-08-03 17:36:49 -07:00
parent 763e42d974
commit 6e11f3d5b4
2 changed files with 11 additions and 2 deletions

View file

@ -115,6 +115,16 @@ describe "ModelQuery", ->
sql: "SELECT `Namespace`.`data` FROM `Namespace` \
WHERE `Namespace`.`email_address` = 'ben@nylas.com' AND `Namespace`.`id` = 2"
it "should correctly escape single quotes with more double single quotes (LIKE)", ->
@runScenario Namespace,
builder: (q) -> q.where(Namespace.attributes.emailAddress.like("you're"))
sql: "SELECT `Namespace`.`data` FROM `Namespace` WHERE `Namespace`.`email_address` like '%you''re%'"
it "should correctly escape single quotes with more double single quotes (equal)", ->
@runScenario Namespace,
builder: (q) -> q.where(Namespace.attributes.emailAddress.equal("you're"))
sql: "SELECT `Namespace`.`data` FROM `Namespace` WHERE `Namespace`.`email_address` = 'you''re'"
it "should correctly generate COUNT queries", ->
@runScenario Thread,
builder: (q) -> q.where({namespaceId: 'abcd'}).count()

View file

@ -73,14 +73,13 @@ class Matcher
return false
whereSQL: (klass) ->
if @comparator is "like"
val = "%#{@val}%"
else
val = @val
if _.isString(val)
escaped = "'#{val.replace(/'/g, '\\\'')}'"
escaped = "'#{val.replace(/'/g, "''")}'"
else if val is true
escaped = 1
else if val is false