consolidate API routes, remove lookup_by_filename
parent
f5dd4141b1
commit
c0e1f42533
|
@ -461,26 +461,6 @@ fn _process_directory_entry<P: AsRef<Path>>(
|
|||
})
|
||||
}
|
||||
|
||||
pub fn lookup_by_filename<C: Connection<Backend = Sqlite>>(
|
||||
connection: &C,
|
||||
filename: String,
|
||||
) -> Result<Vec<Entry>> {
|
||||
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};
|
||||
|
|
|
@ -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(
|
||||
"/",
|
||||
|
|
|
@ -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<State>, hash: web::Path<String>) -> Result
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct QueryRequest {
|
||||
query: String,
|
||||
}
|
||||
|
||||
#[get("/api/obj")]
|
||||
pub async fn get_query(
|
||||
state: web::Data<State>,
|
||||
web::Query(info): web::Query<QueryRequest>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
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<State>,
|
||||
|
@ -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<State>,
|
||||
web::Query(info): web::Query<LookupRequest>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
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<State>,
|
||||
web::Query(info): web::Query<QueryRequest>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
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<State>) -> Result<HttpResponse, Error> {
|
||||
let _pool = state.db_pool.clone();
|
||||
|
|
Loading…
Reference in New Issue