mirror of
https://github.com/codeninjasllc/discourse.git
synced 2025-02-25 07:54:11 -05:00
FIX: preview bust when no params
This commit is contained in:
parent
b0179bd3d2
commit
1baa55fe45
2 changed files with 14 additions and 2 deletions
|
@ -134,8 +134,10 @@ class BadgeGranter
|
||||||
|
|
||||||
def self.preview(sql, opts = {})
|
def self.preview(sql, opts = {})
|
||||||
params = {user_ids: [], post_ids: [], backfill: true}
|
params = {user_ids: [], post_ids: [], backfill: true}
|
||||||
count_sql = "SELECT COUNT(*) count FROM (#{sql}) q"
|
|
||||||
grant_count = SqlBuilder.map_exec(OpenStruct, count_sql, params).first.count
|
# hack to allow for params, otherwise sanitizer will trigger sprintf
|
||||||
|
count_sql = "SELECT COUNT(*) count FROM (#{sql}) q WHERE :backfill = :backfill"
|
||||||
|
grant_count = SqlBuilder.map_exec(OpenStruct, count_sql, params).first.count.to_i
|
||||||
|
|
||||||
grants_sql =
|
grants_sql =
|
||||||
if opts[:target_posts]
|
if opts[:target_posts]
|
||||||
|
@ -144,11 +146,13 @@ class BadgeGranter
|
||||||
JOIN users u on u.id = q.user_id
|
JOIN users u on u.id = q.user_id
|
||||||
LEFT JOIN badge_posts p on p.id = q.post_id
|
LEFT JOIN badge_posts p on p.id = q.post_id
|
||||||
LEFT JOIN topics t on t.id = p.topic_id
|
LEFT JOIN topics t on t.id = p.topic_id
|
||||||
|
WHERE :backfill = :backfill
|
||||||
LIMIT 10"
|
LIMIT 10"
|
||||||
else
|
else
|
||||||
"SELECT u.id, u.username, q.granted_at
|
"SELECT u.id, u.username, q.granted_at
|
||||||
FROM(#{sql}) q
|
FROM(#{sql}) q
|
||||||
JOIN users u on u.id = q.user_id
|
JOIN users u on u.id = q.user_id
|
||||||
|
WHERE :backfill = :backfill
|
||||||
LIMIT 10"
|
LIMIT 10"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,14 @@ describe BadgeGranter do
|
||||||
let(:badge) { Fabricate(:badge) }
|
let(:badge) { Fabricate(:badge) }
|
||||||
let(:user) { Fabricate(:user) }
|
let(:user) { Fabricate(:user) }
|
||||||
|
|
||||||
|
describe 'preview' do
|
||||||
|
it 'can correctly preview' do
|
||||||
|
Fabricate(:user, email: 'sam@gmail.com')
|
||||||
|
result = BadgeGranter.preview('select id user_id, null post_id, created_at granted_at from users where email like \'%gmail.com\'')
|
||||||
|
result[:grant_count].should == 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe 'backfill' do
|
describe 'backfill' do
|
||||||
|
|
||||||
it 'has no broken badge queries' do
|
it 'has no broken badge queries' do
|
||||||
|
|
Loading…
Reference in a new issue