diff --git a/src/filesystem.rs b/src/filesystem.rs index 5baac6f..bd6aade 100644 --- a/src/filesystem.rs +++ b/src/filesystem.rs @@ -461,26 +461,6 @@ fn _process_directory_entry>( }) } -pub fn lookup_by_filename>( - connection: &C, - filename: String, -) -> Result> { - let dir_value = EntryValue::Value(Value::String(filename)); - let entity_addresses = query_entries( - connection, - EntryQuery { - entity: QueryComponent::Any, - attribute: QueryComponent::In(vec![DIR_KEY.to_string(), FILENAME_KEY.to_string()]), // ? - value: QueryComponent::Exact(dir_value), // ?? - }, - )?; - - bulk_retrieve_objects( - connection, - entity_addresses.into_iter().map(|e| e.target).collect(), - ) -} - #[cfg(test)] mod tests { use crate::filesystem::{UDirectory, UPath}; diff --git a/src/main.rs b/src/main.rs index 8e51bb2..9928ec9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -83,13 +83,13 @@ fn main() -> Result<()> { App::new() .data(state.clone()) .wrap(middleware::Logger::default()) - .service(routes::get_query) .service(routes::get_raw) + .service(routes::get_query) .service(routes::get_object) .service(routes::put_object) - .service(routes::list_hier) - .service(routes::get_lookup) + .service(routes::delete_object) .service(routes::api_refresh) + .service(routes::list_hier) .service( actix_files::Files::new( "/", diff --git a/src/routes.rs b/src/routes.rs index 127d973..b027357 100644 --- a/src/routes.rs +++ b/src/routes.rs @@ -2,7 +2,7 @@ use crate::addressing::Address; use crate::database::{ insert_entry, query, remove_object, retrieve_file, retrieve_object, DbPool, Entry, Query, }; -use crate::filesystem::{list_directory, lookup_by_filename, UPath}; +use crate::filesystem::{list_directory, UPath}; use crate::hash::{decode, encode, Hashable}; use actix_files::NamedFile; use actix_web::error::{ErrorBadRequest, ErrorInternalServerError, ErrorNotFound}; @@ -42,6 +42,25 @@ pub async fn get_raw(state: web::Data, hash: web::Path) -> Result } } +#[derive(Deserialize)] +pub struct QueryRequest { + query: String, +} + +#[get("/api/obj")] +pub async fn get_query( + state: web::Data, + web::Query(info): web::Query, +) -> Result { + let connection = state.db_pool.get().map_err(ErrorInternalServerError)?; + + let sexp = lexpr::from_str(info.query.as_str()).map_err(ErrorInternalServerError)?; + let in_query = Query::from_sexp(&sexp).map_err(ErrorInternalServerError)?; + let result = query(&connection, in_query).map_err(ErrorInternalServerError)?; + + Ok(HttpResponse::Ok().json(result)) +} + #[get("/api/obj/{address_str}")] pub async fn get_object( state: web::Data, @@ -122,41 +141,6 @@ pub async fn list_hier( Ok(HttpResponse::Ok().json(entries)) } -#[derive(Deserialize)] -pub struct LookupRequest { - query: String, -} - -#[get("/api/lookup")] -pub async fn get_lookup( - state: web::Data, - web::Query(info): web::Query, -) -> Result { - let connection = state.db_pool.get().map_err(ErrorInternalServerError)?; - let response = lookup_by_filename(&connection, info.query).map_err(ErrorInternalServerError)?; - - Ok(HttpResponse::Ok().json(response)) -} - -#[derive(Deserialize)] -pub struct QueryRequest { - query: String, -} - -#[get("/api/query")] -pub async fn get_query( - state: web::Data, - web::Query(info): web::Query, -) -> Result { - let connection = state.db_pool.get().map_err(ErrorInternalServerError)?; - - let sexp = lexpr::from_str(info.query.as_str()).map_err(ErrorInternalServerError)?; - let in_query = Query::from_sexp(&sexp).map_err(ErrorInternalServerError)?; - let result = query(&connection, in_query).map_err(ErrorInternalServerError)?; - - Ok(HttpResponse::Ok().json(result)) -} - #[post("/api/refresh")] pub async fn api_refresh(state: web::Data) -> Result { let _pool = state.db_pool.clone();