summaryrefslogtreecommitdiff
path: root/src/generation.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/generation.rs')
-rw-r--r--src/generation.rs27
1 files changed, 17 insertions, 10 deletions
diff --git a/src/generation.rs b/src/generation.rs
index 54c55a7..0055bfe 100644
--- a/src/generation.rs
+++ b/src/generation.rs
@@ -200,7 +200,7 @@ impl LocalGeneration {
sql::files(&self.conn)
}
- pub fn chunkids(&self, fileno: FileId) -> LocalGenerationResult<Vec<ChunkId>> {
+ pub fn chunkids(&self, fileno: FileId) -> LocalGenerationResult<sql::SqlResults<ChunkId>> {
sql::chunkids(&self.conn, fileno)
}
@@ -359,15 +359,22 @@ mod sql {
)
}
- pub fn chunkids(conn: &Connection, fileno: FileId) -> LocalGenerationResult<Vec<ChunkId>> {
- let mut stmt = conn.prepare("SELECT chunkid FROM chunks WHERE fileno = ?1")?;
- let iter = stmt.query_map(params![fileno], |row| row.get(0))?;
- let mut ids: Vec<ChunkId> = vec![];
- for x in iter {
- let fileno: String = x?;
- ids.push(ChunkId::from(&fileno));
- }
- Ok(ids)
+ pub fn chunkids(
+ conn: &Connection,
+ fileno: FileId,
+ ) -> LocalGenerationResult<SqlResults<ChunkId>> {
+ SqlResults::new(
+ conn,
+ "SELECT chunkid FROM chunks WHERE fileno = ?1",
+ Box::new(move |stmt| {
+ let iter = stmt.query_map(params![fileno], |row| row.get(0))?;
+ let iter = iter.map(|x| {
+ let fileno: String = x?;
+ Ok(ChunkId::from(&fileno))
+ });
+ Ok(Box::new(iter))
+ }),
+ )
}
pub fn get_file(