Skip to content

Commit

Permalink
feat(ref): add api for reference
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Dec 21, 2021
1 parent 3e24749 commit 867d1c6
Show file tree
Hide file tree
Showing 7 changed files with 66 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/cli/quake_action.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use quake_core::entry::entry_defines::EntryDefines;
use quake_core::QuakeConfig;

use crate::helper::exec_wrapper::meili_exec;
use crate::usecases::pagelink_usecases::create_entries_refs;
use crate::usecases::reference_usecases::create_entries_refs;
use quake_core::entry::entry_paths::EntryPaths;
use quake_core::errors::QuakeError;
use quake_core::usecases::entry_usecases;
Expand Down
2 changes: 1 addition & 1 deletion src/pagedump.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use quake_core::usecases::entrysets::Entrysets;
use quake_core::usecases::{flow_usecases, layout_usecases};
use quake_core::QuakeConfig;

use crate::usecases::pagelink_usecases::{create_entries_refs, EntryReference};
use crate::usecases::reference_usecases::{create_entries_refs, EntryReference};
use crate::usecases::suggest_usecases;

static DUMP_PATH: &str = "pagedump";
Expand Down
1 change: 1 addition & 0 deletions src/server/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ pub fn quake_rocket() -> Rocket<Build> {
transflow_api::translate
],
)
.mount("/reference", routes![reference_api::reference_by_type])
.mount("/layout", routes![layout_api::dashboard_layout])
.attach(AdHoc::config::<QuakeConfig>())
}
Expand Down
59 changes: 59 additions & 0 deletions src/server/reference_api.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
use std::fs;
use std::path::PathBuf;

use rocket::response::status::NotFound;
use rocket::serde::json::Json;
use rocket::{get, State};

use quake_core::entry::entry_paths::EntryPaths;
use quake_core::QuakeConfig;

use crate::server::ApiError;
use crate::usecases::reference_usecases::EntryReference;

#[get("/<entry_type>")]
pub(crate) async fn reference_by_type(
entry_type: String,
conf: &State<QuakeConfig>,
) -> Result<Json<Vec<EntryReference>>, NotFound<Json<ApiError>>> {
let path = PathBuf::from(&conf.workspace);

let yaml_file = path
.join(EntryPaths::quake())
.join(EntryPaths::references())
.join(format!("{:}.yml", entry_type));

let content = match fs::read_to_string(yaml_file) {
Ok(text) => text,
Err(err) => {
return Err(NotFound(Json(ApiError {
msg: err.to_string(),
})))
}
};

let refs: Vec<EntryReference> = serde_yaml::from_str(&content).unwrap();
Ok(Json(refs))
}

#[cfg(test)]
mod test {
use std::io::Read;

use rocket::http::Status;
use rocket::local::blocking::Client;

use crate::quake_rocket;

#[test]
fn reference() {
let client = Client::tracked(quake_rocket()).expect("valid rocket instance");
let mut response = client.get("/reference/todo").dispatch();

let mut res = "".to_string();
let _ = response.read_to_string(&mut res);

println!("{:}", res);
assert_eq!(response.status(), Status::Ok);
}
}
Empty file removed src/server/reference_api/mod.rs
Empty file.
2 changes: 1 addition & 1 deletion src/usecases/mod.rs
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pub(crate) mod pagelink_usecases;
pub(crate) mod reference_usecases;
pub(crate) mod suggest_usecases;
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ pub fn create_entries_refs(path: &Path) -> Result<(), Box<dyn Error>> {
for define in &defines.entries {
let entry_path = path.join(&define.entry_type);

let entry_links = create_entry_refrence(define, entry_path)?;
let entry_links = create_entry_reference(define, entry_path)?;

let content = serde_yaml::to_string(&entry_links)?;
let path = &path
Expand All @@ -45,7 +45,7 @@ pub fn create_entries_refs(path: &Path) -> Result<(), Box<dyn Error>> {
}

/// create entry type's links
fn create_entry_refrence(
fn create_entry_reference(
define: &EntryDefine,
entry_path: PathBuf,
) -> Result<Vec<EntryReference>, Box<dyn Error>> {
Expand Down Expand Up @@ -75,7 +75,7 @@ mod tests {
use std::fs;
use std::path::PathBuf;

use crate::usecases::pagelink_usecases::{create_entries_refs, EntryReference};
use crate::usecases::reference_usecases::{create_entries_refs, EntryReference};

#[test]
fn should_generate_links() {
Expand Down

0 comments on commit 867d1c6

Please sign in to comment.