v0.1.0-pre.010

This commit is contained in:
2026-07-23 21:41:09 +02:00
parent 51ed3d11cf
commit 62bc0ffb44
25 changed files with 3863 additions and 214 deletions

View File

@@ -0,0 +1,42 @@
// file: kb-lib/tests/external_materializer_api.rs
// version: 1
//! Downstream-style compilation contract for externally implemented materializers.
const ACCEPTED_FAMILIES: &[kb_lib::EventFamily] = &[kb_lib::EventFamily::Audit];
struct ExternalAuditMaterializer;
impl kb_lib::EventMaterializer for ExternalAuditMaterializer {
fn identity(&self) -> kb_lib::MaterializerIdentity {
return kb_lib::MaterializerIdentity {
name: "external_audit_materializer".to_string(),
version: "1".to_string(),
};
}
fn accepted_families(&self) -> &'static [kb_lib::EventFamily] {
return ACCEPTED_FAMILIES;
}
fn transaction_policy(
&self,
_family: kb_lib::EventFamily,
) -> kb_lib::MaterializationTransactionPolicy {
return kb_lib::MaterializationTransactionPolicy::SuccessfulOrFailedAudit;
}
fn materialize(
&self,
_observation: &kb_lib::DecodedObservation,
) -> kb_lib::MaterializerExecutionResult {
return kb_lib::MaterializerExecutionResult::ignored();
}
}
#[test]
fn external_materializer_uses_only_the_public_kb_lib_contract() {
let materializer: &dyn kb_lib::EventMaterializer = &ExternalAuditMaterializer;
assert_eq!(materializer.identity().name, "external_audit_materializer");
assert_eq!(materializer.accepted_families(), ACCEPTED_FAMILIES);
}