22 lines
619 B
Rust
22 lines
619 B
Rust
|
use crate::entity::prelude::Account;
|
||
|
use futures::TryStreamExt;
|
||
|
use sea_orm::prelude::*;
|
||
|
use teloxide::types::{KeyboardButton, KeyboardMarkup};
|
||
|
|
||
|
#[inline]
|
||
|
pub async fn account_markup(
|
||
|
user_id: u64,
|
||
|
db: &DatabaseConnection,
|
||
|
) -> crate::Result<KeyboardMarkup> {
|
||
|
let account_names: Vec<Vec<KeyboardButton>> = Account::get_names(user_id, db)
|
||
|
.await?
|
||
|
.map_ok(|account| KeyboardButton::new(account))
|
||
|
.try_chunks(3)
|
||
|
.try_collect()
|
||
|
.await?;
|
||
|
let markup = KeyboardMarkup::new(account_names)
|
||
|
.resize_keyboard(true)
|
||
|
.one_time_keyboard(true);
|
||
|
Ok(markup)
|
||
|
}
|