|
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, dsst.created_at, |
| 7 | + ROW_NUMBER() OVER (PARTITION BY p.user_id ORDER BY dsst.created_at) AS row_number |
| 8 | + FROM discourse_solved_solved_topics dsst |
| 9 | + JOIN badge_posts p ON dsst.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(dsst.created_at) AS granted_at |
| 35 | + FROM discourse_solved_solved_topics dsst |
| 36 | + JOIN badge_posts p ON dsst.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