Sam Saffron
5f896ae8f7
PERF: Keep track of when a users first unread is
...
This optimisation avoids large scans joining the topics table with the
topic_users table.
Previously when a user carried a lot of read state we would have to join
the entire read state with the topics table. This operation would slow down
home page and every topic page. The more read state you accumulated the
larger the impact.
The optimisation helps people who clean up unread, however if you carry
unread from years ago it will only have minimal impact.
2019-04-05 12:44:45 +11:00
Sam
80ceb57c76
DEV: add API endpoint to destroy_timings only of last post
...
Previously API only allowed you to nuke all timings from a topic,
new API is less punishing and allows you just to remove 1 post.
2018-11-13 16:07:48 +11: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
Sam
b7023da894
PERF: reduce queries required for post timings
...
- also freezes a bunch of strings
- bypass active record for an exists query
2018-01-17 15:50:41 +11:00
Neil Lalonde
87ec11e298
FIX: more accurate counting of posts read. Skipping to the end of a topic does not count all posts as read in user stats.
2017-11-17 16:08:46 -05:00
Guo Xiang Tan
77d4c4d8dc
Fix all the errors to get our tests green on Rails 5.1.
2017-09-25 13:48:58 +08:00
Guo Xiang Tan
5012d46cbd
Add rubocop to our build. ( #5004 )
2017-07-28 10:20:09 +09:00
Neil Lalonde
782dd13e78
FEATURE: track user visits on mobile and display on admin dashboard in a new Mobile section
2015-07-07 14:06:42 -04:00
Sam
5eabf01c29
FIX: don't allow storage of post timings batch larger than 60 secs
2015-06-19 10:35:55 +10:00
Sam
f0c74d7685
PERF: batch update post timings
...
previously we would issue a query per row in post timings,
this batches it
2015-06-18 17:02:10 +10:00
Sam
8dd4aa145c
FIX: don't fail if dupe timings are sent in
2015-05-06 17:33:03 +10:00
Robin Ward
eaf5d21c41
Don't store post timings that are greater than the account lifetime
2015-04-14 11:49:44 -04:00
Sam
cd22b6158c
PERF: stop mucking with user stats every 15 minutes
...
(pushed to twice daily)
2014-08-07 14:20:42 +10:00
Sam
22768a4b68
PERF: refactor incoming links table
2014-08-04 12:35:55 +10:00
Régis Hanol
6373de550f
update annotations
2014-04-08 17:35:44 +02:00
Robin Ward
a07e9f7e71
FEATURE: Bulk `reset read` status.
2014-02-21 15:18:45 -05:00
Sam
5bf26ec34e
large refactor, ship a few columns from the user table into user_stats
2013-10-07 15:04:59 +11:00
Sam
b662cb6c02
If a user read to the end of an auto closing topic, when it is closes just pretend they read the close message.
2013-07-04 11:47:12 +10:00
Stephan Kaag
89b621d31a
Refactor update_all statements in order to prevent deprecation warnings in Rails 4
2013-07-02 18:36:47 +02:00
Sam
ca2dee52db
moved comments to the bottom, they are way less intrusive there
2013-05-24 12:48:32 +10:00
Sam
2cd95bc649
lets try out annotations
2013-05-24 12:35:14 +10:00
Sam
11ff0ccd03
correct logic for tracking the highest seen post number so its always consistent
2013-04-08 11:12:52 +10:00
Gosha Arinich
6e5399d544
minor cleanup, using AR querying DSL over raw SQL in some places
2013-02-28 21:54:12 +03:00
Gosha Arinich
cafc75b238
remove trailing whitespaces ❤️
2013-02-26 07:31:35 +03:00
Sam Saffron
77a2d8ccc4
fixed a pile of notification craziness
...
addes some tests around post timings
2013-02-25 18:42:42 +11:00
Jakub Arnold
61654ab8f0
Fix all the trailing whitespace
2013-02-07 16:45:24 +01:00
Robin Ward
21b5628528
Initial release of Discourse
2013-02-05 14:16:51 -05:00