feat: refactor database access in analyticsStore to use executeAll and executeGet for improved query handling

This commit is contained in:
MythEclipse
2026-05-30 20:40:33 +07:00
parent b19529f135
commit c9e79c8c7c
8 changed files with 326 additions and 342 deletions
@@ -0,0 +1,16 @@
-- Add composite index for analytics queries: every analytics query filters by
-- guild_id + created_at range + deleted_at IS NULL.
-- This single index covers getHourlyStats, getTopicTrends, getUserLeaderboard,
-- getModerationStats, getActiveChannelCount, and getTopViolators.
CREATE INDEX IF NOT EXISTS "idx_messages_guild_created"
ON "messages" USING btree ("guild_id", "created_at");
-- Covering index for analytics queries that also filter by ai_status
-- (flagged/warn/clean counts). This speeds up the GROUP BY ai_status aggregates.
CREATE INDEX IF NOT EXISTS "idx_messages_guild_status_created"
ON "messages" USING btree ("guild_id", "ai_status", "created_at");
-- Composite index for channel-scoped analytics queries
-- Covers channel_id + thread_id OR filters used when a specific channel is selected
CREATE INDEX IF NOT EXISTS "idx_messages_guild_channel_created"
ON "messages" USING btree ("guild_id", "channel_id", "created_at");