1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
//! SOC2/GDPR-compliant structured audit trail for OxiRS.
//!
//! This module provides a complete audit logging framework suitable for
//! enterprise deployments that require SOC2 Type II or GDPR compliance:
//!
//! - [`AuditEvent`] — the core immutable record type.
//! - [`AuditLogger`] / [`InMemoryAuditLogger`] / [`JsonLineAuditLogger`] /
//! [`CompositeAuditLogger`] — pluggable sinks.
//! - [`AuditFilter`] / [`AuditQuery`] / [`AuditQueryable`] — structured
//! query and pagination over event collections.
//! - [`GdprService`] / [`DataSubjectReport`] — Article 15 (subject access)
//! and Article 17 (right to erasure / pseudonymisation) operations.
//!
//! # Quick Start
//!
//! ```rust
//! use oxirs_core::audit::{
//! AuditEvent, AuditEventKind, AuditOutcome, AuditActor, AuditResource,
//! AuditLogger, InMemoryAuditLogger,
//! };
//! use oxirs_core::audit::event::ActorType;
//!
//! let logger = InMemoryAuditLogger::new();
//!
//! let actor = AuditActor {
//! actor_id: "user-123".to_string(),
//! actor_type: ActorType::User,
//! ip_address: Some("10.0.0.1".to_string()),
//! session_id: Some("sess-abc".to_string()),
//! };
//!
//! let resource = AuditResource {
//! resource_type: "dataset".to_string(),
//! resource_id: "ds-main".to_string(),
//! tenant_id: Some("acme".to_string()),
//! };
//!
//! let event = AuditEvent::new(
//! AuditEventKind::DataAccess,
//! "sparql.select",
//! actor,
//! resource,
//! AuditOutcome::Success,
//! )
//! .with_duration(42)
//! .with_metadata("rows_returned", "150");
//!
//! logger.log(event).expect("log failed");
//! assert_eq!(logger.len(), 1);
//! ```
pub use ;
pub use ;
pub use ;
pub use ;