diff --git a/cli/src/routes.rs b/cli/src/routes.rs index cb1a97d..7cc8a28 100644 --- a/cli/src/routes.rs +++ b/cli/src/routes.rs @@ -855,6 +855,17 @@ pub async fn get_info(state: web::Data) -> Result { }))) } +#[get("/api/migration/user-entries")] +pub async fn get_user_entries(state: web::Data) -> Result { + let connection = state.upend.connection().map_err(ErrorInternalServerError)?; + + let result = web::block(move || connection.get_explicit_entries()) + .await? + .map_err(ErrorInternalServerError)?; + + Ok(HttpResponse::Ok().json(result.as_hash().map_err(ErrorInternalServerError)?)) +} + #[derive(Debug)] enum ExternalFetchError { Status(anyhow::Error), diff --git a/cli/src/serve.rs b/cli/src/serve.rs index f235cb2..55b5fed 100644 --- a/cli/src/serve.rs +++ b/cli/src/serve.rs @@ -63,7 +63,8 @@ where .service(routes::vault_stats) .service(routes::store_stats) .service(routes::get_jobs) - .service(routes::get_info); + .service(routes::get_info) + .service(routes::get_user_entries); if let Some(ui_path) = ui_path { return app diff --git a/src/database/mod.rs b/src/database/mod.rs index 98b2032..c6c1b1f 100644 --- a/src/database/mod.rs +++ b/src/database/mod.rs @@ -409,6 +409,26 @@ impl UpEndConnection { } })) } + + #[deprecated] + pub fn get_explicit_entries(&self) -> Result> { + use crate::database::inner::schema::data::dsl::*; + let _lock = self.lock.read().unwrap(); + let conn = self.pool.get()?; + + let result: Vec = data + .filter( + provenance + .like("API%") + .and(provenance.not_like("%IMPLICIT%")), + ) + .load(&conn)?; + + Ok(result + .iter() + .map(Entry::try_from) + .collect::>>()?) + } } #[cfg(test)]