matrix-sdk-sql

Crates.iomatrix-sdk-sql
lib.rsmatrix-sdk-sql
version0.1.0-beta.2
sourcesrc
created_at2022-05-12 20:28:42.488301
updated_at2022-05-23 15:52:06.963215
descriptionSQL-Based State Storage for matrix-sdk
homepage
repositoryhttps://github.com/DarkKirb/matrix-sdk-statestore-sql
max_upload_size
id585464
size194,200
Jonas Platte (jplatte)

documentation

README

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

  • rustls: Enables the rustls TLS backend in sqlx and matrix-sdk
  • native-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 databases
  • e2e-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: Arc<sqlx::Pool<DB>> = /* ... */;
// Create the  store config
let store_config = matrix_sdk_sql::store_config(sql_pool, Some(std::env::var("MYAPP_SECRET_KEY")?)).await?;

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

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:

let mut state_store = /* as above */;

state_store.unlock_with_passphrase(std::env::var("MYAPP_SECRET_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
Commit count: 116

cargo fmt