use miden_node_db::sqlite::{InList, ReadTx};
use miden_node_db::{DatabaseError, SqlTypeConvert};
use miden_protocol::account::AccountId;
use miden_protocol::block::BlockNumber;
const SQL: &str = include_str!("ready_accounts.sql");
#[expect(clippy::cast_possible_wrap)]
pub fn ready_accounts(
tx: &ReadTx<'_>,
max_attempts: usize,
block_num: BlockNumber,
busy: &[AccountId],
priority: &[AccountId],
limit: usize,
) -> Result<Vec<AccountId>, DatabaseError> {
let busy = InList::from_values(busy.iter().copied());
let priority = InList::from_values(priority.iter().copied());
tx.query(
SQL,
&[
&(max_attempts as i64),
&block_num.to_raw_sql(),
&busy,
&priority,
&(limit as i64),
],
|row| row.get::<AccountId>(0),
)
}