|
3 | 3 | first_solution_query = <<~SQL |
4 | 4 | SELECT post_id, user_id, created_at AS granted_at |
5 | 5 | FROM ( |
6 | | - SELECT p.id AS post_id, p.user_id, pcf.created_at, |
7 | | - ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY pcf.created_at) AS row_number |
8 | | - FROM post_custom_fields pcf |
9 | | - JOIN badge_posts p ON pcf.post_id = p.id |
10 | | - JOIN topics t ON p.topic_id = t.id |
11 | | - WHERE pcf.name = 'is_accepted_answer' |
12 | | - AND p.user_id <> t.user_id -- ignore topics solved by OP |
13 | | - AND (:backfill OR p.id IN (:post_ids)) |
| 6 | + SELECT p.id AS post_id, p.user_id, dss.created_at, |
| 7 | + ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY dss.created_at) AS row_number |
| 8 | + FROM discourse_solved_solutions dss |
| 9 | + JOIN badge_posts p ON dss.answer_post_id = p.id |
| 10 | + JOIN topics t ON p.topic_id = t.id |
| 11 | + WHERE p.user_id <> t.user_id -- ignore topics solved by OP |
| 12 | + AND (:backfill OR p.id IN (:post_ids)) |
14 | 13 | ) x |
15 | 14 | WHERE row_number = 1 |
16 | 15 | SQL |
|
32 | 31 |
|
33 | 32 | def solved_query_with_count(min_count) |
34 | 33 | <<~SQL |
35 | | - SELECT p.user_id, MAX(pcf.created_at) AS granted_at |
36 | | - FROM post_custom_fields pcf |
37 | | - JOIN badge_posts p ON pcf.post_id = p.id |
| 34 | + SELECT p.user_id, MAX(dss.created_at) AS granted_at |
| 35 | + FROM discourse_solved_solutions dss |
| 36 | + JOIN badge_posts p ON dss.answer_post_id = p.id |
38 | 37 | JOIN topics t ON p.topic_id = t.id |
39 | | - WHERE pcf.name = 'is_accepted_answer' |
40 | | - AND p.user_id <> t.user_id -- ignore topics solved by OP |
| 38 | + WHERE p.user_id <> t.user_id -- ignore topics solved by OP |
41 | 39 | AND (:backfill OR p.id IN (:post_ids)) |
42 | 40 | GROUP BY p.user_id |
43 | 41 | HAVING COUNT(*) >= #{min_count} |
|
0 commit comments