Commit Graph

40 Commits

Author SHA1 Message Date
Ted Johansson
fc2093fc7e
FIX: Don't error out on nested top topic period param ()
We're expecting the period param to be something that neatly coerces into a symbol. If we receive something like a nested parameter, this will blow up.

This commit raises an InvalidParameters exception in the case of a non-stringy period parameter.
2024-10-21 10:44:43 +08:00
Mark VanLandingham
909264ee75
DEV: Publish DiscourseEvent after top topic period is calculated () 2024-10-10 08:10:39 -05:00
Daniel Waterworth
3030a53819
FIX: Prevent concurrent updates to top_topics ()
to prevent lock timeouts
2023-01-12 14:03:26 -06:00
David Taylor
5a003715d3
DEV: Apply syntax_tree formatting to app/* 2023-01-09 14:14:59 +00:00
Robin Ward
7b45a5ce55 FIX: Better and more secure validation of periods for TopicQuery
Co-authored-by: Martin Brennan <mjrbrennan@gmail.com>
2021-07-23 14:24:44 -04:00
Krzysztof Kotlarek
427d54b2b0 DEV: Upgrading Discourse to Zeitwerk ()
Zeitwerk simplifies working with dependencies in dev and makes it easier reloading class chains. 

We no longer need to use Rails "require_dependency" anywhere and instead can just use standard 
Ruby patterns to require files.

This is a far reaching change and we expect some followups here.
2019-10-02 14:01:53 +10:00
Sam Saffron
30990006a9 DEV: enable frozen string literal on all files
This reduces chances of errors where consumers of strings mutate inputs
and reduces memory usage of the app.

Test suite passes now, but there may be some stuff left, so we will run
a few sites on a branch prior to merging
2019-05-13 09:31:32 +08:00
Guo Xiang Tan
152238b4cf DEV: Prefer public_send over send. 2019-05-07 09:33:21 +08:00
Sam
5f64fd0a21 DEV: remove exec_sql and replace with mini_sql
Introduce new patterns for direct sql that are safe and fast.

MiniSql is not prone to memory bloat that can happen with direct PG usage.
It also has an extremely fast materializer and very a convenient API

- DB.exec(sql, *params) => runs sql returns row count
- DB.query(sql, *params) => runs sql returns usable objects (not a hash)
- DB.query_hash(sql, *params) => runs sql returns an array of hashes
- DB.query_single(sql, *params) => runs sql and returns a flat one dimensional array
- DB.build(sql) => returns a sql builder

See more at: https://github.com/discourse/mini_sql
2018-06-19 16:13:36 +10:00
Guo Xiang Tan
5012d46cbd Add rubocop to our build. () 2017-07-28 10:20:09 +09:00
Guo Xiang Tan
b889bfefbb PERF: Don't calculate the same query twice. 2016-11-24 14:05:26 +08:00
Guo Xiang Tan
857955dd04 Follow our convention of declaring private methods. 2016-11-24 10:26:39 +08:00
Guo Xiang Tan
f812415c52 Update annotations. 2016-11-24 10:13:03 +08:00
Arpit Jalan
1cee914565 FEATURE: make top criteria formula multipliers controlled by site
setting
2016-01-21 10:30:06 +05:30
Arpit Jalan
97e4f7f6d3 Enums that are used in tables need to be stable 2016-01-08 20:43:11 +05:30
Régis Hanol
fe656fb04d FIX: select appropriate period when redirecting to top 2015-09-21 20:28:20 +02:00
Neil Lalonde
7518918b8f FEATURE: add quarterly period to Top page 2015-07-28 12:31:42 -04:00
Sam
2a586d59e9 FEATURE: top topics all time
tweak top algorithm (we will continue next week)
2015-03-06 18:00:29 +11:00
Régis Hanol
7edb88a5a8 FIX: change top score formula
Adds more weight to `likes` (it's now the same weight as `post_count`)
2014-12-03 11:51:49 +01:00
Akshay
378bc6e5dc private methods need to be called as method_name instead of ClassName#method_name 2014-10-04 09:53:46 +05:30
Akshay
9524b514c6 Fix access specifiers with private_class_methods instead of removing directly 2014-10-04 09:20:41 +05:30
Akshay
9d11ccc42e removed usless access modifiers specified in models 2014-08-19 07:28:21 +05:30
Régis Hanol
a62968c846 FIX: actually compute top score for 'older' periods 2014-08-12 19:42:46 +02:00
Sam
cb0ecd9ff1 PERF: store topic views in a topic view table
* cut down on storage of the work Topic, 3 times per row (in 2 indexes)
* only store one view per user per topic
* only store one view per ip per topic
2014-08-04 19:07:55 +10:00
Robin Ward
0a2036a99a OPTIMIZATION: Don't run 12 queries every 15 mins for the Top section.
Instead, run the daily queries once every hour, and the reset of the
queries once a day.
2014-08-01 16:25:20 -04:00
Régis Hanol
f20fba041c BUGFIX: improved top ranking formula (+ filter topics based on their creation date) 2014-05-05 23:05:35 +02:00
Régis Hanol
6373de550f update annotations 2014-04-08 17:35:44 +02:00
Sam
b7ff4173c9 BUGFIX: mitigate unbound table growth on top_topics 2014-03-27 15:43:24 +11:00
Régis Hanol
084f51b013 FEATURE: do not show category definition topic on top pages 2014-03-07 12:02:52 +01:00
Régis Hanol
6b83ed0347 OPTIM: change Top Topic's score computation algorithm
New algorithm will not wipe the entire table anymore and will only remove
invisible topics and add new visible topics.
2014-02-28 20:33:52 +01:00
Sam
be560d4eb6 Update annotations 2014-02-07 11:07:52 +11:00
Régis Hanol
871adc0b0f BUGFIX: Top page wasn't display any topics 2014-01-07 00:37:14 +01:00
Régis Hanol
fd36fa1c2f make sure we do not count system user's posts 2014-01-03 17:27:55 +01:00
Régis Hanol
2cecc0b21f make sure we only count regular posts when calculating Top score 2014-01-03 16:56:03 +01:00
Régis Hanol
28bf78d801 BUGFIX: make sure we only show topics that have a useful score in the Top page 2014-01-03 09:15:10 +01:00
Régis Hanol
edc154251d FEATURE: improve the TOP page scoring formula a bit 2014-01-02 22:38:35 +01:00
Neil Lalonde
1781b290cb Fix top_topic.rb to be compatible with ruby 1.9 2013-12-27 16:16:25 -05:00
Régis Hanol
b5a59c10d5 let's try another formula for the top tab 2013-12-27 19:12:53 +01:00
Régis Hanol
9c8e50351d first stab at calculating the score of a topic for the top tab 2013-12-27 18:10:35 +01:00
Régis Hanol
567d2bd23c add top page 2013-12-24 00:50:36 +01:00