G30
e69ce6e1c6
perf(channels): batch N+1 queries for reactions and thread replies ( #25831 )
...
Replace per-message database queries with batch IN-clause queries in
channel message handlers. This eliminates the N+1 query pattern that
caused ~102 queries per channel page load (50 messages × 2 queries each).
Changes:
- Add get_reactions_by_message_ids() to MessageTable: single query
fetches all reactions for multiple messages using IN clause with
User JOIN, returns dict[message_id, list[Reactions]]
- Add get_thread_reply_counts_by_message_ids() to MessageTable: single
GROUP BY aggregate query returns (count, max_created_at) per parent,
replacing full object loads just to call len()
- Refactor get_channel_messages(): 102 → 4 queries per page
- Refactor get_pinned_channel_messages(): 22 → 3 queries per page
- Refactor get_channel_thread_messages(): 53 → 4 queries per page
- Refactor send_notification(): N+1 membership check → batch set lookup
2026-06-29 02:05:16 -05:00
Timothy Jaeryang Baek
6d0295588e
refac: modernize type annotations (PEP 604 / PEP 585)
2026-05-12 17:10:15 +09:00
Timothy Jaeryang Baek
25898116ea
chore: format
2026-04-12 18:12:59 -05:00
Timothy Jaeryang Baek
27169124f2
refac: async db
2026-04-12 14:22:11 -05:00
Timothy Jaeryang Baek
de3317e26b
refac
2026-03-17 17:58:01 -05:00
Timothy Jaeryang Baek
cd296fcf0d
feat: channel webhooks
2026-01-09 02:30:15 +04:00
Timothy Jaeryang Baek
700349064d
chore: format
2026-01-08 01:55:56 +04:00
Timothy Jaeryang Baek
646835d767
feat: builtin native tools
2026-01-05 17:45:39 +04:00
Timothy Jaeryang Baek
c144122f60
refac/fix: reply to message recursion issue
2026-01-01 03:10:09 +04:00
Timothy Jaeryang Baek
2041ab483e
refac/enh: db session sharing
2025-12-28 22:00:44 +04:00
Timothy Jaeryang Baek
39f778c275
refac
2025-12-03 18:22:00 -05:00
Timothy Jaeryang Baek
f3c8c7045d
refac
2025-11-29 14:19:55 -05:00
Timothy Jaeryang Baek
05e79bdd0c
enh: message reaction user names
2025-11-29 13:54:52 -05:00
Timothy Jaeryang Baek
25994dd3da
refac/enh: channel message
2025-11-28 10:45:48 -05:00
Timothy Jaeryang Baek
aae2fce173
feat/enh: pinned messages in channels
2025-11-28 09:58:44 -05:00
Timothy Jaeryang Baek
99a7823e01
refac: db
2025-11-28 01:17:43 -05:00
Timothy Jaeryang Baek
64b4d5d9c2
feat/enh: channels unread messages count
2025-11-27 04:31:04 -05:00
Timothy Jaeryang Baek
4af7cc818e
refac/fix: chat search null byte filter
2025-11-22 20:34:49 -05:00
Timothy Jaeryang Baek
272c6f5ec5
refac
2025-09-27 04:38:54 -05:00
Timothy Jaeryang Baek
86ef57f6c3
refac
2025-09-27 04:33:00 -05:00
Timothy Jaeryang Baek
b4eea78aff
refac
2025-09-27 04:06:42 -05:00
Timothy Jaeryang Baek
1a18928c94
enh: reply to message
2025-09-27 04:05:12 -05:00
Timothy Jaeryang Baek
4fe97d8794
feat: channel/thread @ model
2025-09-17 00:49:44 -05:00
Timothy Jaeryang Baek
b2b56d14cb
fix: channel thread
2025-01-02 20:48:50 -08:00
Timothy Jaeryang Baek
a5627d4226
refac
2024-12-31 13:09:17 -08:00
Timothy Jaeryang Baek
d905202afb
refac
2024-12-31 13:04:27 -08:00
Timothy Jaeryang Baek
9c337552e6
enh: reply count
2024-12-31 02:05:11 -08:00
Timothy Jaeryang Baek
584e9e6da5
refac: threads
2024-12-31 00:51:43 -08:00
Timothy Jaeryang Baek
f93c2e4a8d
feat: reactions
2024-12-30 23:06:34 -08:00
Timothy Jaeryang Baek
ed44b21a78
enh: edited indicator
2024-12-23 01:19:30 -07:00
Timothy Jaeryang Baek
0d29f31846
refacx
2024-12-22 20:28:15 -07:00
Timothy Jaeryang Baek
f1d21fc59a
feat: channel socket integration
2024-12-22 19:40:01 -07:00
Timothy Jaeryang Baek
7c8de9e221
feat: channels backend
2024-12-22 03:42:19 -07:00