diff --git a/src/shard/mod.rs b/src/shard/mod.rs index 1b2eb46..5ac6f90 100644 --- a/src/shard/mod.rs +++ b/src/shard/mod.rs @@ -92,15 +92,19 @@ impl Shard { ) -> AxumJsonResultOf { let sha256 = store_request.sha256.clone(); + // let data = &store_request.data; + self.sqlite.call(move |conn| { let created_at = chrono::Utc::now().to_rfc3339(); let maybe_error = conn.execute( - "INSERT INTO entries (sha256, content_type, size, data, created_at) VALUES (?, ?, ?, ?, ?)", + "INSERT INTO entries (sha256, content_type, compression, uncompressed_size, compressed_size, data, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)", params![ store_request.sha256, store_request.content_type, + 0, store_request.data.len() as i64, - store_request.data.to_vec(), + store_request.data.len() as i64, + &store_request.data[..], created_at, ], ); @@ -170,8 +174,6 @@ impl Shard { ); if *version == 1 { - migrate_to_version_2(conn)?; - } else if *version == 2 { // no-op } else { return Err(tokio_rusqlite::Error::Other(Box::new(ShardError::new( @@ -181,7 +183,6 @@ impl Shard { } else { debug!("shard {}: no schema version found, initializing", shard_id); migrate_to_version_1(conn)?; - migrate_to_version_2(conn)?; } Ok(()) }) @@ -241,7 +242,9 @@ fn migrate_to_version_1(conn: &rusqlite::Connection) -> Result<(), rusqlite::Err "CREATE TABLE IF NOT EXISTS entries ( sha256 BLOB PRIMARY KEY, content_type TEXT NOT NULL, - size INTEGER NOT NULL, + compression INTEGER NOT NULL, + uncompressed_size INTEGER NOT NULL, + compressed_size INTEGER NOT NULL, data BLOB NOT NULL, created_at TEXT NOT NULL )", @@ -256,22 +259,6 @@ fn migrate_to_version_1(conn: &rusqlite::Connection) -> Result<(), rusqlite::Err Ok(()) } -fn migrate_to_version_2(conn: &rusqlite::Connection) -> Result<(), rusqlite::Error> { - debug!("migrating to version 2"); - conn.execute( - "INSERT INTO schema_version (version, created_at) VALUES (2, ?)", - [chrono::Utc::now().to_rfc3339()], - )?; - - // add `compression` column to entries table - conn.execute( - "ALTER TABLE entries ADD COLUMN compression INTEGER NOT NULL DEFAULT 0", - [], - )?; - - Ok(()) -} - async fn get_num_entries(conn: &Connection) -> Result { conn.call(|conn| { let count: usize = conn.query_row("SELECT COUNT(*) FROM entries", [], |row| row.get(0))?;