From 9377c5cade9859ad9fc16f2b974e9f9d2833ffab Mon Sep 17 00:00:00 2001 From: afterlifepro Date: Wed, 15 Oct 2025 21:01:35 +0100 Subject: [PATCH] upload: add subcrate for lexicon --- upload/Cargo.lock | 50 +++++++++------ upload/Cargo.toml | 16 ++++- upload/lexicons/Cargo.toml | 17 +++++ upload/lexicons/src/dev_atcities.rs | 6 ++ upload/lexicons/src/dev_atcities/route.rs | 77 +++++++++++++++++++++++ upload/lexicons/src/lib.rs | 7 +++ 6 files changed, 153 insertions(+), 20 deletions(-) create mode 100644 upload/lexicons/Cargo.toml create mode 100644 upload/lexicons/src/dev_atcities.rs create mode 100644 upload/lexicons/src/dev_atcities/route.rs create mode 100644 upload/lexicons/src/lib.rs diff --git a/upload/Cargo.lock b/upload/Cargo.lock index 5f9891c..3e6063a 100644 --- a/upload/Cargo.lock +++ b/upload/Cargo.lock @@ -388,9 +388,9 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfg-if" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" @@ -1507,13 +1507,13 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jacquard" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4477374935842a97de2f51f93ef2575a1b9a23567947fe6c1f9542f11edc17" +checksum = "bf257386e29370eb7387093736d59f2aeda3ac692a37481c7201bc5f9cc82fae" dependencies = [ - "async-trait", "bon", "bytes", + "getrandom 0.2.16", "http", "jacquard-api", "jacquard-common", @@ -1533,14 +1533,15 @@ dependencies = [ "smol_str", "thiserror 2.0.17", "tokio", + "trait-variant", "url", ] [[package]] name = "jacquard-api" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17c7c2f4b0e969cab15bba8ed4aac2e5b75a5d9a81fb96263d03c3628d73d15b" +checksum = "e67619aa60467ee687633e5face5743835e5f9d8e57c387a8d830cfd2ba8d2c8" dependencies = [ "bon", "bytes", @@ -1553,16 +1554,16 @@ dependencies = [ [[package]] name = "jacquard-common" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79cbf503a1be52ef18c2c08de74f386c8dc9f181d33d792c9be6b20577aaeb2c" +checksum = "8b1c05d479eee46004ba3ec495e7802b7c02cc429396aeb7296a558b9cb6e6ce" dependencies = [ - "async-trait", "base64 0.22.1", "bon", "bytes", "chrono", "cid", + "getrandom 0.3.4", "http", "ipld-core", "k256", @@ -1583,14 +1584,15 @@ dependencies = [ "smol_str", "thiserror 2.0.17", "tokio", + "trait-variant", "url", ] [[package]] name = "jacquard-derive" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40dc06e43329af02a8b9cea7bbaf1a401cc6b5de1325345e767bf90e0aa60636" +checksum = "aadace50223141e60d16e26a28c8c8a9b647f291814986010234cf1c130367ab" dependencies = [ "proc-macro2", "quote", @@ -1599,11 +1601,10 @@ dependencies = [ [[package]] name = "jacquard-identity" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bc5e8bc22c344d7c8ae2f5d474ef6450d0928dabeaf87c6eb8104f4dd8033c" +checksum = "afafcd8fcc26095789aeefe4f54cda4471f1748ba11fa7886184f515362b6339" dependencies = [ - "async-trait", "bon", "bytes", "hickory-resolver", @@ -1618,17 +1619,17 @@ dependencies = [ "serde_json", "thiserror 2.0.17", "tokio", + "trait-variant", "url", "urlencoding", ] [[package]] name = "jacquard-oauth" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "505c788d716c82e93f91847032b4c1abe397b89941a0dd7f4a354f3f7e76c3e4" +checksum = "597e74c6697a449e834936dde22c30165f0f2da0c38b42ec599173b58d73a098" dependencies = [ - "async-trait", "base64 0.22.1", "bytes", "chrono", @@ -1758,6 +1759,19 @@ dependencies = [ "spin", ] +[[package]] +name = "lexicons" +version = "0.1.0" +dependencies = [ + "bon", + "bytes", + "jacquard-common", + "jacquard-derive", + "miette", + "serde", + "thiserror 2.0.17", +] + [[package]] name = "libc" version = "0.2.177" diff --git a/upload/Cargo.toml b/upload/Cargo.toml index 075bd73..84fecce 100644 --- a/upload/Cargo.toml +++ b/upload/Cargo.toml @@ -1,13 +1,25 @@ +[workspace] +resolver = "3" +members = ["lexicons"] + [package] name = "atcities-upload" version = "0.1.0" edition = "2024" [dependencies] +# lexicons = { path = "./lexicons" } clap = { version = "4.5.49", features = ["derive"] } ignore = "0.4.23" regex = "1.12.2" mime_guess = "2.0.5" tokio = { version = "1.48.0", features = ["full"] } -jacquard = { version = "0.5.2", features = ["api", "api_full", "derive", "dns", "loopback"] } -reqwest = { version = "0.12.24", features = ["__tls", "charset", "default-tls", "h2", "http2", "system-proxy"] } +jacquard = { version = "0.5.2", features = ["api", "dns"] } +reqwest = { version = "0.12.24", features = [ + "__tls", + "charset", + "default-tls", + "h2", + "http2", + "system-proxy", +] } diff --git a/upload/lexicons/Cargo.toml b/upload/lexicons/Cargo.toml new file mode 100644 index 0000000..15dd2bb --- /dev/null +++ b/upload/lexicons/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "lexicons" +version = "0.1.0" +edition = "2024" + +[features] +default = ["dev_atcities"] +dev_atcities = [] + +[dependencies] +bon = "3.8.1" +bytes = { version = "1.10.1", features = ["serde"] } +miette = "7.6.0" +serde = "1.0.228" +thiserror = "2.0.17" +jacquard-common = "0.5.3" +jacquard-derive = "0.5.3" diff --git a/upload/lexicons/src/dev_atcities.rs b/upload/lexicons/src/dev_atcities.rs new file mode 100644 index 0000000..6f48093 --- /dev/null +++ b/upload/lexicons/src/dev_atcities.rs @@ -0,0 +1,6 @@ +// @generated by jacquard-lexicon. DO NOT EDIT. +// +// This file was automatically generated from Lexicon schemas. +// Any manual changes will be overwritten on the next regeneration. + +pub mod route; diff --git a/upload/lexicons/src/dev_atcities/route.rs b/upload/lexicons/src/dev_atcities/route.rs new file mode 100644 index 0000000..7ba9a43 --- /dev/null +++ b/upload/lexicons/src/dev_atcities/route.rs @@ -0,0 +1,77 @@ +// @generated by jacquard-lexicon. DO NOT EDIT. +// +// Lexicon: dev.atcities.route +// +// This file was automatically generated from Lexicon schemas. +// Any manual changes will be overwritten on the next regeneration. + +#[jacquard_derive::lexicon] +#[derive( + serde::Serialize, + serde::Deserialize, + Debug, + Clone, + PartialEq, + Eq, + jacquard_derive::IntoStatic, + bon::Builder, +)] +#[serde(rename_all = "camelCase")] +pub struct Blob<'a> { + #[serde(borrow)] + pub blob: jacquard_common::types::blob::Blob<'a>, +} + +/// Page URL maps directly to a record key +#[jacquard_derive::lexicon] +#[derive( + serde::Serialize, + serde::Deserialize, + Debug, + Clone, + PartialEq, + Eq, + jacquard_derive::IntoStatic, + bon::Builder, +)] +#[serde(rename_all = "camelCase")] +pub struct Route<'a> { + #[serde(borrow)] + pub page: crate::dev_atcities::route::Blob<'a>, +} + +/// Typed wrapper for GetRecord response with this collection's record type. +#[derive( + serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, +)] +#[serde(rename_all = "camelCase")] +pub struct RouteGetRecordOutput<'a> { + #[serde(skip_serializing_if = "std::option::Option::is_none")] + #[serde(borrow)] + pub cid: std::option::Option>, + #[serde(borrow)] + pub uri: jacquard_common::types::string::AtUri<'a>, + #[serde(borrow)] + pub value: Route<'a>, +} + +/// Marker type for deserializing records from this collection. +pub struct RouteRecord; +impl jacquard_common::xrpc::XrpcResp for RouteRecord { + const NSID: &'static str = "dev.atcities.route"; + const ENCODING: &'static str = "application/json"; + type Output<'de> = RouteGetRecordOutput<'de>; + type Err<'de> = jacquard_common::types::collection::RecordError<'de>; +} + +impl jacquard_common::types::collection::Collection for Route<'_> { + const NSID: &'static str = "dev.atcities.route"; + type Record = RouteRecord; +} + +impl From> for Route<'_> { + fn from(output: RouteGetRecordOutput<'_>) -> Self { + use jacquard_common::IntoStatic; + output.value.into_static() + } +} diff --git a/upload/lexicons/src/lib.rs b/upload/lexicons/src/lib.rs new file mode 100644 index 0000000..0cec15d --- /dev/null +++ b/upload/lexicons/src/lib.rs @@ -0,0 +1,7 @@ +// @generated by jacquard-lexicon. DO NOT EDIT. +// +// This file was automatically generated from Lexicon schemas. +// Any manual changes will be overwritten on the next regeneration. + +#[cfg(feature = "dev_atcities")] +pub mod dev_atcities; -- 2.51.2