auth/audit_log_queries.ts view source
50 Default limit for audit log listings.
Audit log database queries.
Records and retrieves auth mutation events for security monitoring. All write operations should use audit_log_fire_and_forget to ensure audit logging never blocks or breaks auth flows.
Rollback resilience: audit_log_fire_and_forget writes to background_db
(pool-level), not the handler's transaction-scoped db, so audit entries
persist even when the request transaction rolls back.
8 declarations
auth/audit_log_queries.ts view source
50 Default limit for audit log listings.
auth/audit_log_queries.ts view source
<T extends AuditEventType>(route: Pick<RouteContext, "background_db" | "pending_effects">, input: AuditLogInput<T>, log: Logger, on_event: (event: AuditLogEvent) => void): Promise<...> Log an audit event without blocking the caller.
Errors are logged to console — audit logging never breaks auth flows.
Uses background_db so audit entries persist even if the request transaction rolls back.
Write failures and on_event callback failures are logged separately
so the error message indicates which phase failed.
routebackground_db and pending_effects from the route context
Pick<RouteContext, "background_db" | "pending_effects">inputthe audit event to record
AuditLogInput<T>logthe logger instance
Loggeron_eventcallback invoked with the inserted row after a successful write
(event: AuditLogEvent) => voidPromise<void> the settled promise (callers may ignore it — fire-and-forget semantics preserved)
auth/audit_log_queries.ts view source
<T extends AuditEventType>(deps: QueryDeps, input: AuditLogInput<T>): Promise<AuditLogEvent> Insert an audit log entry.
Uses RETURNING * to return the full inserted row including
DB-assigned fields (id, seq, created_at).
In DEV mode, validates metadata against the per-event-type schema before writing (warns on mismatch, never throws).
depsquery dependencies
inputthe audit event to record
AuditLogInput<T>Promise<AuditLogEvent> the inserted audit log row
auth/audit_log_queries.ts view source
(deps: QueryDeps, before: Date): Promise<number> Delete audit log entries older than the given date.
depsquery dependencies
beforedelete entries created before this date
DatePromise<number> the number of entries deleted
auth/audit_log_queries.ts view source
(deps: QueryDeps, options?: AuditLogListOptions | undefined): Promise<AuditLogEvent[]> List audit log entries, newest first.
depsquery dependencies
options?filters and pagination
AuditLogListOptions | undefinedPromise<AuditLogEvent[]> matching audit log entries
auth/audit_log_queries.ts view source
(deps: QueryDeps, account_id: string, limit?: number): Promise<AuditLogEvent[]> List audit log entries related to an account (as actor or target).
depsquery dependencies
account_idthe account to query for
stringlimitmaximum entries to return
numberAUDIT_LOG_DEFAULT_LIMITPromise<AuditLogEvent[]> auth/audit_log_queries.ts view source
(deps: QueryDeps, limit?: number, offset?: number): Promise<{ id: string; seq: number; event_type: "login" | "logout" | "bootstrap" | "signup" | "password_change" | "session_revoke" | ... 8 more ... | "app_settings_update"; ... 8 more ...; target_username: string | null; }[]> List permit grant/revoke events with resolved usernames.
depsquery dependencies
limitmaximum entries to return
numberAUDIT_LOG_DEFAULT_LIMIToffsetnumber of entries to skip
number0Promise<{ id: string; seq: number; event_type: "login" | "logout" | "bootstrap" | "signup" | "password_change" | "session_revoke" | "session_revoke_all" | "token_create" | "token_revoke" | ... 5 more ... | "app_settings_update"; ... 8 more ...; target_username: string | null; }[]> permit history events with username and target_username
auth/audit_log_queries.ts view source
(deps: QueryDeps, options?: AuditLogListOptions | undefined): Promise<{ id: string; seq: number; event_type: "login" | "logout" | "bootstrap" | "signup" | ... 10 more ... | "app_settings_update"; ... 8 more ...; target_username: string | null; }[]> List audit log entries with resolved usernames, newest first.
depsquery dependencies
options?filters and pagination
AuditLogListOptions | undefinedPromise<{ id: string; seq: number; event_type: "login" | "logout" | "bootstrap" | "signup" | "password_change" | "session_revoke" | "session_revoke_all" | "token_create" | "token_revoke" | ... 5 more ... | "app_settings_update"; ... 8 more ...; target_username: string | null; }[]> matching audit log entries with username and target_username