SQL StateStore for matrix-sdk

Build Status Code Coverage License Docs - Main Version

This crate allows you to use your postgres/sqlite database as a state and crypto store for matrix-sdk.

Crate Features

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.

```rust

let sqlpool: Arc> = /* ... */; // Create the store config let storeconfig = matrixsdksql::storeconfig(sqlpool, Some(std::env::var("MYAPPSECRETKEY")?)).await?;

```

After that you can pass it into your client builder as follows:

rust let client_builder = Client::builder() /* ... */ .store_config(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:

```rust let mut state_store = /* as above */;

statestore.unlockwithpassphrase(std::env::var("MYAPPSECRET_KEY")?).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

Acknowledgments

Contributors

DarkKirb
Charlotte