diff options
Diffstat (limited to 'web/lib/api/v4')
-rw-r--r-- | web/lib/api/v4/key.rb | 4 | ||||
-rw-r--r-- | web/lib/api/v4/keys.rb | 13 | ||||
-rw-r--r-- | web/lib/api/v4/tag.rb | 7 |
3 files changed, 15 insertions, 9 deletions
diff --git a/web/lib/api/v4/key.rb b/web/lib/api/v4/key.rb index 1cbb817..66fae48 100644 --- a/web/lib/api/v4/key.rb +++ b/web/lib/api/v4/key.rb @@ -83,7 +83,7 @@ class Taginfo < Sinatra::Base condition('key = ?', key). get_first_value() || @db.select('SELECT png FROM db.key_distributions'). - condition('key IS NULL'). + is_null('key'). get_first_value() end @@ -101,7 +101,7 @@ class Taginfo < Sinatra::Base condition('key = ?', key). get_first_value() || @db.select('SELECT png FROM db.key_distributions'). - condition('key IS NULL'). + is_null('key'). get_first_value() end diff --git a/web/lib/api/v4/keys.rb b/web/lib/api/v4/keys.rb index 01739f7..6ea2ba8 100644 --- a/web/lib/api/v4/keys.rb +++ b/web/lib/api/v4/keys.rb @@ -76,9 +76,12 @@ class Taginfo < Sinatra::Base row['wikipages'] = Array.new end + key_list = res.map do |row| + "'" + SQLite3::Database.quote(row['key']) + "'" + end + wikipages = @db.select('SELECT key, lang, title, type FROM wiki.wikipages'). - condition("value IS NULL"). - condition("key IN (#{ res.map{ |row| "'" + SQLite3::Database.quote(row['key']) + "'" }.join(',') })"). + condition("key IN (#{ key_list.join(',') }) AND value IS NULL"). order_by([:key, :lang], 'ASC'). execute() @@ -96,8 +99,12 @@ class Taginfo < Sinatra::Base row['prevalent_values'] = Array.new end + key_list = res.map do |row| + "'" + SQLite3::Database.quote(row['key']) + "'" + end + prevvalues = @db.select('SELECT key, value, count, fraction FROM db.prevalent_values'). - condition("key IN (#{ res.map{ |row| "'" + SQLite3::Database.quote(row['key']) + "'" }.join(',') })"). + condition("key IN (#{ key_list.join(',') })"). order_by([:count], 'DESC'). execute() diff --git a/web/lib/api/v4/tag.rb b/web/lib/api/v4/tag.rb index 778fd4a..d05f73f 100644 --- a/web/lib/api/v4/tag.rb +++ b/web/lib/api/v4/tag.rb @@ -100,7 +100,7 @@ class Taginfo < Sinatra::Base condition('value = ?', value). get_first_value() || @db.select('SELECT png FROM db.key_distributions'). - condition('key IS NULL'). + is_null('key'). get_first_value() end @@ -120,7 +120,7 @@ class Taginfo < Sinatra::Base condition('value = ?', value). get_first_value() || @db.select('SELECT png FROM db.key_distributions'). - condition('key IS NULL'). + is_null('key'). get_first_value() end @@ -190,8 +190,7 @@ class Taginfo < Sinatra::Base end @db.select('SELECT * FROM db.tags'). - condition('key = ?', key). - condition('value = ?', value). + condition('key = ? AND value = ?', key, value). execute() do |row| ['all', 'nodes', 'ways', 'relations'].each_with_index do |type, n| out[n] = { |