From 5333fe7c3a069294d535e9dd60c61607e526b033 Mon Sep 17 00:00:00 2001 From: Hampus Date: Sun, 30 Aug 2026 22:16:23 +0200 Subject: [PATCH] perf(guild): unlog the audit log index batch (#2151) --- .../repositories/GuildModerationRepository.ts | 2 +- .../api/guild/tests/GuildAuditLogs.test.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/fluxer_api/src/api/guild/repositories/GuildModerationRepository.ts b/fluxer_api/src/api/guild/repositories/GuildModerationRepository.ts index bc7de5fef..7032a16fd 100644 --- a/fluxer_api/src/api/guild/repositories/GuildModerationRepository.ts +++ b/fluxer_api/src/api/guild/repositories/GuildModerationRepository.ts @@ -135,7 +135,7 @@ export class GuildModerationRepository extends IGuildModerationRepository { batch.addPrepared(GuildAuditLogsByUser.insertWithTtl(payload, AUDIT_LOG_TTL_SECONDS)); batch.addPrepared(GuildAuditLogsByAction.insertWithTtl(payload, AUDIT_LOG_TTL_SECONDS)); batch.addPrepared(GuildAuditLogsByUserAction.insertWithTtl(payload, AUDIT_LOG_TTL_SECONDS)); - await batch.execute(); + await batch.execute(false); return this.mapRowToGuildAuditLog(data); } diff --git a/fluxer_api/src/api/guild/tests/GuildAuditLogs.test.ts b/fluxer_api/src/api/guild/tests/GuildAuditLogs.test.ts index 4b23876fb..856b440c5 100644 --- a/fluxer_api/src/api/guild/tests/GuildAuditLogs.test.ts +++ b/fluxer_api/src/api/guild/tests/GuildAuditLogs.test.ts @@ -179,6 +179,30 @@ describe('Guild audit log endpoint', () => { expect(entry.action_type).toBe(AuditLogActionType.ROLE_CREATE); } }); + test('serves a created entry through every audit log index', async () => { + const {owner, guild} = await setupTestGuildWithMembers(harness, 1); + const role = await createRole(harness, owner.token, guild.id, { + name: 'Index Role', + permissions: Permissions.VIEW_CHANNEL.toString(), + }); + const queries = [ + '', + `?user_id=${owner.userId}`, + `?action_type=${AuditLogActionType.ROLE_CREATE}`, + `?user_id=${owner.userId}&action_type=${AuditLogActionType.ROLE_CREATE}`, + ]; + for (const query of queries) { + const response = await createBuilder(harness, owner.token) + .get(`/guilds/${guild.id}/audit-logs${query}`) + .execute(); + const entry = response.audit_log_entries.find((log) => log.target_id === role.id); + expect(entry, `missing entry for query "${query}"`).toBeDefined(); + expect(entry?.action_type).toBe(AuditLogActionType.ROLE_CREATE); + expect(entry?.user_id).toBe(owner.userId); + const nameChange = entry?.changes?.find((change) => change.key === 'name'); + expect(nameChange?.new_value).toBe('Index Role'); + } + }); test('includes target users for user-target audit log entries', async () => { const {owner, members, guild} = await setupTestGuildWithMembers(harness, 1); const member = members[0];