pub struct LogEntry<'a> {
pub user_id: i64,
pub action_type: ActionType,
pub model_name: &'a str,
pub object_id: i64,
pub ip_address: Option<&'a str>,
pub summary: String,
pub correlation_id: Option<&'a str>,
pub session_id: Option<i64>,
pub metadata: Option<Value>,
pub event: Option<AuditEvent>,
}Fields§
§user_id: i64§action_type: ActionType§model_name: &'a str§object_id: i64§ip_address: Option<&'a str>§summary: String§correlation_id: Option<&'a str>Per-request UUID (R0). All audit rows written under one HTTP
request share this id so a future /admin/history/<id> page
can reconstruct the chain of events (“admin reset password →
all sessions revoked → security email dispatched”).
session_id: Option<i64>The session that performed the action, when applicable. CLI
emergency actions write None.
metadata: Option<Value>Structured before/after / extra metadata. JSONB column.
event: Option<AuditEvent>When Some, supersedes action_type.as_str() as the
persisted rustio_admin_actions.action_type string. Set via
LogEntry::with_event; the action_type field becomes a
placeholder in that case (the convention is to pass
ActionType::Update). Used by R1+ recovery / authority /
identity emissions that need the richer typed vocabulary —
see DESIGN_AUDIT.md §3 + DESIGN_RECOVERY.md §6.
Implementations§
Source§impl<'a> LogEntry<'a>
impl<'a> LogEntry<'a>
Sourcepub fn new(
user_id: i64,
action_type: ActionType,
model_name: &'a str,
object_id: i64,
) -> Self
pub fn new( user_id: i64, action_type: ActionType, model_name: &'a str, object_id: i64, ) -> Self
Builder helper for the common case (every field that R0
added defaults to None). Existing call sites can migrate
incrementally.
Sourcepub fn with_event(self, event: AuditEvent) -> Self
pub fn with_event(self, event: AuditEvent) -> Self
Promote this entry’s persisted action_type string from the
legacy ActionType (create/update/delete) trio to the
richer typed AuditEvent. The action_type field becomes
a placeholder; the convention is to pass ActionType::Update
to Self::new and chain .with_event(...).
let entry = LogEntry::new(user_id, ActionType::Update, "user", user_id)
.with_event(AuditEvent::PasswordChangedSelf);Use this for framework-internal authority + identity +
recovery audit rows per DESIGN_AUDIT.md §3 +
DESIGN_RECOVERY.md §6. Project code that records generic
CRUD on its own models continues to use Self::new alone
with the legacy ActionType trio.
Auto Trait Implementations§
impl<'a> Freeze for LogEntry<'a>
impl<'a> RefUnwindSafe for LogEntry<'a>
impl<'a> Send for LogEntry<'a>
impl<'a> Sync for LogEntry<'a>
impl<'a> Unpin for LogEntry<'a>
impl<'a> UnsafeUnpin for LogEntry<'a>
impl<'a> UnwindSafe for LogEntry<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more