feat: add support for Item.digest_type and digest_value in database operations
This commit is contained in:
28
src/db.rs
28
src/db.rs
@@ -90,8 +90,8 @@ pub fn open(path: PathBuf) -> Result<Connection, Error> {
|
|||||||
pub fn insert_item(conn: &Connection, item: Item) -> Result<i64> {
|
pub fn insert_item(conn: &Connection, item: Item) -> Result<i64> {
|
||||||
debug!("DB: Inserting item: {:?}", item);
|
debug!("DB: Inserting item: {:?}", item);
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"INSERT INTO items (ts, size, compression) VALUES (?1, ?2, ?3)",
|
"INSERT INTO items (ts, size, compression, digest_type, digest_value) VALUES (?1, ?2, ?3, ?4, ?5)",
|
||||||
(item.ts, item.size, item.compression),
|
(item.ts, item.size, item.compression, item.digest_type, item.digest_value),
|
||||||
)?;
|
)?;
|
||||||
Ok(conn.last_insert_rowid())
|
Ok(conn.last_insert_rowid())
|
||||||
}
|
}
|
||||||
@@ -99,8 +99,8 @@ pub fn insert_item(conn: &Connection, item: Item) -> Result<i64> {
|
|||||||
pub fn update_item(conn: &Connection, item: Item) -> Result<()> {
|
pub fn update_item(conn: &Connection, item: Item) -> Result<()> {
|
||||||
debug!("DB: Updating item: {:?}", item);
|
debug!("DB: Updating item: {:?}", item);
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"UPDATE items SET size=?2, compression=?3 WHERE id=?1",
|
"UPDATE items SET size=?2, compression=?3, digest_type=?4, digest_value=?5 WHERE id=?1",
|
||||||
(item.id, item.size, item.compression),
|
(item.id, item.size, item.compression, item.digest_type, item.digest_value),
|
||||||
)?;
|
)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
@@ -175,7 +175,7 @@ pub fn set_item_tags(conn: &Connection, item: Item, tags: &Vec<String>) -> Resul
|
|||||||
pub fn query_all_items(conn: &Connection) -> Result<Vec<Item>> {
|
pub fn query_all_items(conn: &Connection) -> Result<Vec<Item>> {
|
||||||
debug!("DB: Querying all items");
|
debug!("DB: Querying all items");
|
||||||
let mut statement = conn
|
let mut statement = conn
|
||||||
.prepare("SELECT id, ts, size, compression FROM items ORDER BY id ASC")
|
.prepare("SELECT id, ts, size, compression, digest_type, digest_value FROM items ORDER BY id ASC")
|
||||||
.context("Problem preparing SQL statement")?;
|
.context("Problem preparing SQL statement")?;
|
||||||
let mut rows = statement.query([])?;
|
let mut rows = statement.query([])?;
|
||||||
let mut items = Vec::new();
|
let mut items = Vec::new();
|
||||||
@@ -186,6 +186,8 @@ pub fn query_all_items(conn: &Connection) -> Result<Vec<Item>> {
|
|||||||
ts: row.get(1)?,
|
ts: row.get(1)?,
|
||||||
size: row.get(2)?,
|
size: row.get(2)?,
|
||||||
compression: row.get(3)?,
|
compression: row.get(3)?,
|
||||||
|
digest_type: row.get(4)?,
|
||||||
|
digest_value: row.get(5)?,
|
||||||
};
|
};
|
||||||
items.push(item);
|
items.push(item);
|
||||||
}
|
}
|
||||||
@@ -202,6 +204,8 @@ pub fn query_tagged_items<'a>(conn: &'a Connection, tags: &'a Vec<String>) -> Re
|
|||||||
items.ts,
|
items.ts,
|
||||||
items.size,
|
items.size,
|
||||||
items.compression,
|
items.compression,
|
||||||
|
items.digest_type,
|
||||||
|
items.digest_value,
|
||||||
count(tags_match.id) as tags_score
|
count(tags_match.id) as tags_score
|
||||||
FROM items,
|
FROM items,
|
||||||
(SELECT tags.id FROM tags WHERE tags.name IN rarray(?1)) as tags_match
|
(SELECT tags.id FROM tags WHERE tags.name IN rarray(?1)) as tags_match
|
||||||
@@ -228,6 +232,8 @@ pub fn query_tagged_items<'a>(conn: &'a Connection, tags: &'a Vec<String>) -> Re
|
|||||||
ts: row.get(1)?,
|
ts: row.get(1)?,
|
||||||
size: row.get(2)?,
|
size: row.get(2)?,
|
||||||
compression: row.get(3)?,
|
compression: row.get(3)?,
|
||||||
|
digest_type: row.get(4)?,
|
||||||
|
digest_value: row.get(5)?,
|
||||||
};
|
};
|
||||||
items.push(item);
|
items.push(item);
|
||||||
}
|
}
|
||||||
@@ -302,6 +308,8 @@ pub fn get_item_matching(
|
|||||||
items.ts,
|
items.ts,
|
||||||
items.size,
|
items.size,
|
||||||
items.compression,
|
items.compression,
|
||||||
|
items.digest_type,
|
||||||
|
items.digest_value,
|
||||||
count(sel.id) as score
|
count(sel.id) as score
|
||||||
FROM items,
|
FROM items,
|
||||||
(SELECT tags.id FROM tags WHERE tags.name IN rarray(?1)) as sel
|
(SELECT tags.id FROM tags WHERE tags.name IN rarray(?1)) as sel
|
||||||
@@ -328,6 +336,8 @@ pub fn get_item_matching(
|
|||||||
ts: row.get(1)?,
|
ts: row.get(1)?,
|
||||||
size: row.get(2)?,
|
size: row.get(2)?,
|
||||||
compression: row.get(3)?,
|
compression: row.get(3)?,
|
||||||
|
digest_type: row.get(4)?,
|
||||||
|
digest_value: row.get(5)?,
|
||||||
})),
|
})),
|
||||||
None => Ok(None),
|
None => Ok(None),
|
||||||
}
|
}
|
||||||
@@ -338,7 +348,7 @@ pub fn get_item(conn: &Connection, item_id: i64) -> Result<Option<Item>> {
|
|||||||
let mut statement = conn
|
let mut statement = conn
|
||||||
.prepare_cached(
|
.prepare_cached(
|
||||||
"
|
"
|
||||||
SELECT id, ts, size, compression
|
SELECT id, ts, size, compression, digest_type, digest_value
|
||||||
FROM items
|
FROM items
|
||||||
WHERE items.id = ?1",
|
WHERE items.id = ?1",
|
||||||
)
|
)
|
||||||
@@ -352,6 +362,8 @@ pub fn get_item(conn: &Connection, item_id: i64) -> Result<Option<Item>> {
|
|||||||
ts: row.get(1)?,
|
ts: row.get(1)?,
|
||||||
size: row.get(2)?,
|
size: row.get(2)?,
|
||||||
compression: row.get(3)?,
|
compression: row.get(3)?,
|
||||||
|
digest_type: row.get(4)?,
|
||||||
|
digest_value: row.get(5)?,
|
||||||
})),
|
})),
|
||||||
None => Ok(None),
|
None => Ok(None),
|
||||||
}
|
}
|
||||||
@@ -362,7 +374,7 @@ pub fn get_item_last(conn: &Connection) -> Result<Option<Item>> {
|
|||||||
let mut statement = conn
|
let mut statement = conn
|
||||||
.prepare_cached(
|
.prepare_cached(
|
||||||
"
|
"
|
||||||
SELECT id, ts, size, compression
|
SELECT id, ts, size, compression, digest_type, digest_value
|
||||||
FROM items
|
FROM items
|
||||||
ORDER BY id DESC
|
ORDER BY id DESC
|
||||||
LIMIT 1",
|
LIMIT 1",
|
||||||
@@ -377,6 +389,8 @@ pub fn get_item_last(conn: &Connection) -> Result<Option<Item>> {
|
|||||||
ts: row.get(1)?,
|
ts: row.get(1)?,
|
||||||
size: row.get(2)?,
|
size: row.get(2)?,
|
||||||
compression: row.get(3)?,
|
compression: row.get(3)?,
|
||||||
|
digest_type: row.get(4)?,
|
||||||
|
digest_value: row.get(5)?,
|
||||||
})),
|
})),
|
||||||
None => Ok(None),
|
None => Ok(None),
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user