SQL StateStore for matrix-sdk
This crate allows you to use your postgres/sqlite database as a state and crypto store for matrix-sdk.
Crate Features
rustls
: Enables the rustls TLS backend in sqlx and matrix-sdknative-tls
: Enables the native-tls TLS backend in sqlx and matrix-sdk (enabled by default)postgres
: Enables support for postgres databases (enabled by default)sqlite
: Enables support for sqlite databasese2e-encryption
Enables the CryptoStore
Exactly one of rustls
and native-tls
need to be enabled. At least one of postgres
or sqlite
must be enabled.
Minimum Supported Rust Version
The MSRV is currently 1.60.0.
Increasing the MSRV is a breaking change.
Usage
This crate integrates with your existing SQLx database pool.
let sql_pool: = /* ... */;
// Create the store config
let store_config = store_config.await?;
After that you can pass it into your client builder as follows:
let client_builder = builder
/* ... */
.store_config
CryptoStore
Enabling the e2e-encryption
feature enables cryptostore functionality. To protect encryption session information, the contents of the tables are encrypted in the same manner as in matrix-sdk-sled
.
Before you can use cryptostore functionality, you need to unlock the cryptostore:
let mut state_store = /* as above */;
state_store.unlock_with_passphrase.await?;
If you are using the store_config
function, the store will be automatically unlocked for you.
Authors
License
This project is licensed under the Apache-2.0 License - see the LICENSE.md file for details