Actualize storages docs

This commit is contained in:
Sergey Levitin 2020-10-24 21:08:14 +03:00
parent e456e525d8
commit 75c7899f2c
4 changed files with 17 additions and 5 deletions

View file

@ -7,7 +7,7 @@ To change the source code, fork the `dev` branch of this repository and work ins
``` ```
cargo clippy --all --all-features --all-targets cargo clippy --all --all-features --all-targets
cargo test --all cargo test --all
cargo doc --open cargo doc --open --all-features
# Using nightly rustfmt # Using nightly rustfmt
cargo +nightly fmt --all -- --check cargo +nightly fmt --all -- --check
``` ```

View file

@ -8,8 +8,11 @@ use tokio::sync::Mutex;
/// ///
/// ## Note /// ## Note
/// All the dialogues will be lost after you restart your bot. If you need to /// All the dialogues will be lost after you restart your bot. If you need to
/// store them somewhere on a drive, you need to implement a storage /// store them somewhere on a drive, should should use [`SqliteStorage`],
/// communicating with a DB. /// [`RedisStorage`] or implement your own.
///
/// [`RedisStorage`]: crate::dispatching::dialogue::RedisStorage
/// [`SqliteStorage`]: crate::dispatching::dialogue::SqliteStorage
#[derive(Debug)] #[derive(Debug)]
pub struct InMemStorage<D> { pub struct InMemStorage<D> {
map: Mutex<HashMap<i64, D>>, map: Mutex<HashMap<i64, D>>,

View file

@ -24,9 +24,15 @@ pub use sqlite_storage::{SqliteStorage, SqliteStorageError};
/// You can implement this trait for a structure that communicates with a DB and /// You can implement this trait for a structure that communicates with a DB and
/// be sure that after you restart your bot, all the dialogues won't be lost. /// be sure that after you restart your bot, all the dialogues won't be lost.
/// ///
/// For a storage based on a simple hash map, see [`InMemStorage`]. /// Currently we support the following storages out of the box:
///
/// - [`InMemStorage`] - a storage based on a simple hash map
/// - [`RedisStorage`] - a Redis-based storage
/// - [`SqliteStorage`] - an SQLite-based persistent storage
/// ///
/// [`InMemStorage`]: crate::dispatching::dialogue::InMemStorage /// [`InMemStorage`]: crate::dispatching::dialogue::InMemStorage
/// [`RedisStorage`]: crate::dispatching::dialogue::RedisStorage
/// [`SqliteStorage`]: crate::dispatching::dialogue::SqliteStorage
pub trait Storage<D> { pub trait Storage<D> {
type Error; type Error;

View file

@ -10,7 +10,9 @@ use std::{
}; };
use thiserror::Error; use thiserror::Error;
// An error returned from [`SqliteStorage`]. /// An error returned from [`SqliteStorage`].
///
/// [`SqliteStorage`]: struct.SqliteStorage.html
#[derive(Debug, Error)] #[derive(Debug, Error)]
pub enum SqliteStorageError<SE> pub enum SqliteStorageError<SE>
where where
@ -22,6 +24,7 @@ where
SqliteError(#[from] sqlx::Error), SqliteError(#[from] sqlx::Error),
} }
/// A persistent storage based on [SQLite](https://www.sqlite.org/).
pub struct SqliteStorage<S> { pub struct SqliteStorage<S> {
pool: SqlitePool, pool: SqlitePool,
serializer: S, serializer: S,