Skip to content

feat: teliox abstract storage layer and add postgre backend#78

Open
zdravko61 wants to merge 13 commits intoTHCLab:masterfrom
VereignAG:feat/teliox-abstact-storage
Open

feat: teliox abstract storage layer and add postgre backend#78
zdravko61 wants to merge 13 commits intoTHCLab:masterfrom
VereignAG:feat/teliox-abstact-storage

Conversation

@zdravko61
Copy link
Copy Markdown

Introduces TelEventDatabase and TelEscrowDatabase traits to decouple teliox from redb. Escrow structs and default_escrow_bus are now generic over these traits.

Adds a PostgresTelDatabase + PostgresTelEscrowDatabase backend behind storage-postgres, sharing a single pool and migrations with keriox_core's PostgresDatabase.

Changes

  • New storage traits in database/mod.rs
  • Redb refactored to implement the traits (default unchanged)
  • New database/postgres.rs with integration tests
  • TEL escrow tables added to `keriox_core/001_initial_schema.sql

seriouscoderone and others added 13 commits February 18, 2026 17:47
…tecture

Gate redb behind `storage-redb` feature flag (default ON) in keri-core and
teliox so the core protocol logic can compile and run without redb. This
enables future alternative storage backends (e.g., DynamoDB for serverless).

Key changes:
- Split EventStorage constructors: generic `new()` (no mailbox) vs
  `new_redb()` (RedbDatabase with mailbox) vs `new_with_mailbox()` (inject)
- Make mailbox_data an Option<MailboxData> to support non-redb backends
- Remove Any bound from EventValidator
- Gate TelLogDatabase, teliox EscrowDatabase, and escrow module behind
  storage-redb feature
- Genericize teliox escrow structs over K: EventDatabase for KEL storage
- Add in-memory MemoryDatabase implementing all database traits for
  validation and testing
- Move rkyv_adapter to database::rkyv_adapter (not under database::redb)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Introduce `storage-postgres` feature and dependencies
- Implement PostgresDatabase, log, escrow, and KSN log modules
- Add SQL migrations for all KERI tables
- Integrate with existing database traits and event flows

Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
storage

Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
- Replace dual cfg-gated OobiManager struct definitions with a single
  generic struct and per-backend type aliases (RedbOobiManager,
  PostgresOobiManager)
- Make process_reply and process_signed_oobi generic over
  OobiStorageBackend
- Propagate CBOR deserialization errors instead of silently dropping
  corrupted rows
- Replace unwrap() on serde_json/serde_cbor serialization with ? via
  new Cbor/Json variants on PostgresError

Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
- Split EndRoleAdd and EndRoleCut into separate arms (was incorrectly
  merged)
- Add TODO comment on EndRoleCut matching redb's pending delete
  semantics
- Replace silent _ => {} catch-all with explicit Ksn => todo!()
- Add Cbor and Json error variants to PostgresError and propagate
  serialization/deserialization errors instead of panicking or silently
  dropping failures

Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
Extract TelEventDatabase and TelEscrowDatabase traits to decouple
teliox from redb. Make escrow structs and default_escrow_bus generic
over the new traits. Implement PostgresTelDatabase and
PostgresTelEscrowDatabase backed by sqlx/PgPool, sharing the schema
and migrations from keriox_core. Add postgres integration tests.

Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
- Refactor get_events_from_index to return Result, propagating SQL and
  CBOR deserialization errors instead of silently returning empty
  results
- Replace unwrap() in escrow error branches with map_err(...)? in
  missing_issuer and missing_registry processors

Signed-off-by: Zdravko Iliev <zdravko.iliev@vereign.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants