use std::collections::HashSet;
use miden_node_db::sqlite::{InList, ReadTx};
use miden_node_utils::limiter::{QueryParamLimiter, QueryParamNoteCommitmentLimit};
use miden_protocol::block::BlockNumber;
use miden_protocol::note::NoteId;
use crate::errors::DatabaseError;
const SQL: &str = include_str!("select_existing_note_ids.sql");
pub(crate) fn select_existing_note_ids(
tx: &ReadTx<'_>,
note_ids: &[NoteId],
up_to_block: BlockNumber,
) -> Result<HashSet<NoteId>, DatabaseError> {
QueryParamNoteCommitmentLimit::check(note_ids.len())?;
let note_ids = InList::from_values(note_ids);
Ok(tx
.query(SQL, &[¬e_ids, &up_to_block], |row| row.get::<NoteId>(0))?
.into_iter()
.collect())
}