Skip to content

Commit a6772a5

Browse files
authored
Merge pull request #8 from Teajey/v0.6.0
v0.6.0
2 parents cf8c0c2 + a9a2480 commit a6772a5

File tree

18 files changed

+371
-347
lines changed

18 files changed

+371
-347
lines changed

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
[workspace]
22
resolver = "2"
33
members = ["crates/*"]
4+
5+
[workspace.package]
6+
version = "0.6.0"
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "custard"
3-
version = "0.5.1"
3+
version = { workspace = true }
44
edition = "2021"
55
license = "MIT"
66
description = "A frontmatter-querying server"
@@ -10,7 +10,7 @@ repository = "https://github.com/Teajey/custard"
1010
anyhow = "1.0.75"
1111
camino = "1.1.6"
1212
axum = "0.6.20"
13-
custard_lib = { version = "0.2.1", path = "../lib" }
13+
custard_lib = { path = "../lib" }
1414
notify = "5.2.0"
1515
serde = { version = "1.0.188", features = ["serde_derive"] }
1616
serde_json = "1.0.107"

crates/json_http/src/route/collate_strings.rs renamed to crates/http/src/route/collate_strings.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,21 @@ use axum::{
99

1010
use super::lock_keeper;
1111

12-
use custard_lib::{frontmatter_file, frontmatter_query::FrontmatterQuery};
12+
use custard_lib::{frontmatter_file, frontmatter_query::FrontmatterQueryMap};
1313

1414
pub async fn get(
1515
State(markdown_files): State<frontmatter_file::keeper::ArcMutex>,
1616
Path(key): Path<String>,
1717
) -> Result<Json<Vec<String>>, StatusCode> {
1818
let keeper = &*lock_keeper(&markdown_files)?;
1919

20-
let values = custard_lib::collate::get(keeper, custard_lib::collate::Get::new(&key));
20+
let values = custard_lib::collate::collate(
21+
keeper,
22+
custard_lib::collate::Args {
23+
key: key.as_str(),
24+
query: None,
25+
},
26+
);
2127

2228
Ok(Json(values))
2329
}
@@ -26,7 +32,7 @@ pub async fn post(
2632
State(markdown_files): State<frontmatter_file::keeper::ArcMutex>,
2733
params: Query<HashMap<String, String>>,
2834
Path(key): Path<String>,
29-
Json(query): Json<FrontmatterQuery>,
35+
Json(query_map): Json<FrontmatterQueryMap>,
3036
) -> Result<Json<Vec<String>>, StatusCode> {
3137
let keeper = &*lock_keeper(&markdown_files)?;
3238

@@ -37,9 +43,15 @@ pub async fn post(
3743
.map_err(|_| StatusCode::BAD_REQUEST)?
3844
.unwrap_or_default();
3945

40-
let values = custard_lib::collate::query(
46+
let values = custard_lib::collate::collate(
4147
keeper,
42-
custard_lib::collate::Query::new(&key, query, intersect),
48+
custard_lib::collate::Args {
49+
key: key.as_str(),
50+
query: Some(custard_lib::frontmatter_query::FrontmatterQuery {
51+
map: query_map,
52+
intersect,
53+
}),
54+
},
4355
);
4456

4557
Ok(Json(values))

crates/json_http/src/route/frontmatter_file.rs renamed to crates/http/src/route/frontmatter_file.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use axum::{
88
};
99
use custard_lib::{
1010
frontmatter_file::{self, FrontmatterFile},
11-
frontmatter_query::FrontmatterQuery,
11+
frontmatter_query::{FrontmatterQuery, FrontmatterQueryMap},
1212
};
1313

1414
use super::lock_keeper;
@@ -69,7 +69,7 @@ fn post_inner(
6969
files: &frontmatter_file::keeper::ArcMutex,
7070
params: &HashMap<String, String>,
7171
name: &str,
72-
query: FrontmatterQuery,
72+
query_map: FrontmatterQueryMap,
7373
) -> Result<(HeaderMap, String), StatusCode> {
7474
let keeper = &*lock_keeper(files)?;
7575

@@ -82,9 +82,17 @@ fn post_inner(
8282
.map_err(|_| StatusCode::BAD_REQUEST)?
8383
.unwrap_or_default();
8484

85-
let response = custard_lib::single::query(
85+
let response = custard_lib::single::single(
8686
keeper,
87-
custard_lib::single::Query::new(name, query, sort_key, order_desc, intersect),
87+
custard_lib::single::Args {
88+
name,
89+
query: Some(FrontmatterQuery {
90+
map: query_map,
91+
intersect,
92+
}),
93+
sort_key,
94+
order_desc,
95+
},
8896
)
8997
.ok_or(StatusCode::NOT_FOUND)?;
9098

@@ -101,7 +109,7 @@ pub async fn post(
101109
State(markdown_files): State<frontmatter_file::keeper::ArcMutex>,
102110
params: Query<HashMap<String, String>>,
103111
Path(name): Path<String>,
104-
Json(query): Json<FrontmatterQuery>,
112+
Json(query): Json<FrontmatterQueryMap>,
105113
) -> Result<(HeaderMap, String), StatusCode> {
106114
let result = post_inner(&markdown_files, &params, &name, query)?;
107115

@@ -118,9 +126,14 @@ fn get_inner(
118126
let order_desc = "desc" == params.get("order").map_or("desc", Deref::deref);
119127
let sort_key = params.get("sort").map(Deref::deref);
120128

121-
let response = custard_lib::single::get(
129+
let response = custard_lib::single::single(
122130
keeper,
123-
custard_lib::single::Get::new(name, sort_key, order_desc),
131+
custard_lib::single::Args {
132+
name,
133+
query: None,
134+
sort_key,
135+
order_desc,
136+
},
124137
)
125138
.ok_or(StatusCode::NOT_FOUND)?;
126139

crates/json_http/src/route/frontmatter_list.rs renamed to crates/http/src/route/frontmatter_list.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use axum::{
55
http::{HeaderMap, StatusCode},
66
Json,
77
};
8-
use custard_lib::{frontmatter_file, frontmatter_query::FrontmatterQuery};
8+
use custard_lib::{frontmatter_file, frontmatter_query::FrontmatterQueryMap};
99

1010
use super::lock_keeper;
1111

@@ -58,7 +58,7 @@ pub async fn get(
5858
fn post_inner(
5959
params: &HashMap<String, String>,
6060
files: &frontmatter_file::keeper::ArcMutex,
61-
query: FrontmatterQuery,
61+
query: FrontmatterQueryMap,
6262
) -> Result<(HeaderMap, Vec<frontmatter_file::Short>), StatusCode> {
6363
let keeper = &*lock_keeper(files)?;
6464

@@ -83,7 +83,7 @@ fn post_inner(
8383

8484
let response = custard_lib::list::query(
8585
keeper,
86-
custard_lib::list::Query::new(query, sort_key, order_desc, offset, limit, intersect),
86+
custard_lib::list::Args::query(query, sort_key, order_desc, offset, limit, intersect),
8787
);
8888

8989
let headers = assign_headers(response.total);
@@ -94,7 +94,7 @@ fn post_inner(
9494
pub async fn post(
9595
State(markdown_files): State<frontmatter_file::keeper::ArcMutex>,
9696
params: Query<HashMap<String, String>>,
97-
Json(query): Json<FrontmatterQuery>,
97+
Json(query): Json<FrontmatterQueryMap>,
9898
) -> Result<(HeaderMap, Json<Vec<frontmatter_file::Short>>), StatusCode> {
9999
let (headers, files) = post_inner(&params, &markdown_files, query)?;
100100

crates/lib/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "custard_lib"
3-
version = "0.2.1"
3+
version = { workspace = true }
44
edition = "2021"
55
license = "MIT"
66
description = "A core library for Custard"

crates/lib/src/collate.rs

Lines changed: 13 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -31,63 +31,21 @@ fn collate_strings_from_files<'a>(
3131
}
3232

3333
#[derive(Debug, Deserialize)]
34-
pub struct Get<'a> {
34+
pub struct Args<'a> {
3535
pub key: &'a str,
36-
}
37-
38-
impl<'a> Get<'a> {
39-
#[must_use]
40-
pub fn new(key: &'a str) -> Self {
41-
Self { key }
42-
}
43-
}
44-
45-
#[allow(clippy::needless_pass_by_value)]
46-
fn inner_get(keeper: &Keeper, args: Get<'_>) -> Vec<String> {
47-
let files = keeper.files();
48-
49-
let mut values = collate_strings_from_files(files, args.key);
50-
51-
values.sort();
52-
values.dedup();
53-
54-
values
55-
}
56-
57-
#[must_use]
58-
#[allow(clippy::needless_pass_by_value)]
59-
pub fn get(keeper: &Keeper, args: Get<'_>) -> Vec<String> {
60-
debug!("Received get request: {args:?}");
61-
let response = inner_get(keeper, args);
62-
debug!("Sending get response: {response:?}");
63-
response
64-
}
65-
66-
#[derive(Debug, Deserialize)]
67-
pub struct Query<'a> {
68-
pub key: &'a str,
69-
pub query: FrontmatterQuery,
7036
#[serde(default)]
71-
pub intersect: bool,
37+
pub query: Option<FrontmatterQuery>,
7238
}
7339

74-
impl<'a> Query<'a> {
75-
#[must_use]
76-
pub fn new(key: &'a str, query: FrontmatterQuery, intersect: bool) -> Self {
77-
Self {
78-
key,
79-
query,
80-
intersect,
81-
}
82-
}
83-
}
84-
85-
fn inner_query(keeper: &Keeper, args: Query<'_>) -> Vec<String> {
40+
fn inner(keeper: &Keeper, args: Args<'_>) -> Vec<String> {
8641
let files = keeper.files();
8742

88-
let files = query_files(files, args.query, None, args.intersect);
89-
90-
let mut values = collate_strings_from_files(files, args.key);
43+
let mut values = if let Some(query) = args.query {
44+
let files = query_files(files, query, None);
45+
collate_strings_from_files(files, args.key)
46+
} else {
47+
collate_strings_from_files(files, args.key)
48+
};
9149

9250
values.sort();
9351
values.dedup();
@@ -96,9 +54,9 @@ fn inner_query(keeper: &Keeper, args: Query<'_>) -> Vec<String> {
9654
}
9755

9856
#[must_use]
99-
pub fn query(keeper: &Keeper, args: Query<'_>) -> Vec<String> {
100-
debug!("Received query request: {args:?}");
101-
let response = inner_query(keeper, args);
102-
debug!("Sending query response: {response:?}");
57+
pub fn collate(keeper: &Keeper, args: Args<'_>) -> Vec<String> {
58+
debug!("Received collate request: {args:?}");
59+
let response = inner(keeper, args);
60+
debug!("Sending collate response: {response:?}");
10361
response
10462
}

0 commit comments

Comments
 (0)