Skip to content
This repository has been archived by the owner on Nov 21, 2023. It is now read-only.

**unofficial** SQL StateStore/CryptoStore implementation for matrix-rust-sdk

License

Notifications You must be signed in to change notification settings

DarkKirb/matrix-sdk-statestore-sql

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.62.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

About

**unofficial** SQL StateStore/CryptoStore implementation for matrix-rust-sdk

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published