diff --git a/crates/jacquard-api/Cargo.toml b/crates/jacquard-api/Cargo.toml index 24366d1a..9fa7e646 100644 --- a/crates/jacquard-api/Cargo.toml +++ b/crates/jacquard-api/Cargo.toml @@ -24,6 +24,10 @@ serde.workspace = true thiserror.workspace = true +[lints.rust] +# just so that my rust-analyzer shuts up about the module name for 2048.blue's namespace +non_snake_case = "allow" + [features] default = [ "minimal"] minimal = [ "com_atproto", "com_bad_example"] diff --git a/crates/jacquard-api/src/app_blebbit/authr/folder/record.rs b/crates/jacquard-api/src/app_blebbit/authr/folder/record.rs index 725742f2..1ae2e2fe 100644 --- a/crates/jacquard-api/src/app_blebbit/authr/folder/record.rs +++ b/crates/jacquard-api/src/app_blebbit/authr/folder/record.rs @@ -31,6 +31,19 @@ pub struct Record<'a> { pub public: Option, } +impl<'a> Record<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RecordRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_blebbit/authr/group/record.rs b/crates/jacquard-api/src/app_blebbit/authr/group/record.rs index a9283a23..c381e4a8 100644 --- a/crates/jacquard-api/src/app_blebbit/authr/group/record.rs +++ b/crates/jacquard-api/src/app_blebbit/authr/group/record.rs @@ -39,6 +39,19 @@ pub struct Record<'a> { pub public: Option, } +impl<'a> Record<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RecordRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_blebbit/authr/page/record.rs b/crates/jacquard-api/src/app_blebbit/authr/page/record.rs index 85ad1655..4e4eae81 100644 --- a/crates/jacquard-api/src/app_blebbit/authr/page/record.rs +++ b/crates/jacquard-api/src/app_blebbit/authr/page/record.rs @@ -35,6 +35,19 @@ pub struct Record<'a> { pub public: Option, } +impl<'a> Record<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RecordRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/actor/profile.rs b/crates/jacquard-api/src/app_bsky/actor/profile.rs index caf9ffeb..db54bfbf 100644 --- a/crates/jacquard-api/src/app_bsky/actor/profile.rs +++ b/crates/jacquard-api/src/app_bsky/actor/profile.rs @@ -67,6 +67,19 @@ pub struct Profile<'a> { pub website: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/actor/status.rs b/crates/jacquard-api/src/app_bsky/actor/status.rs index 74ba3c6a..86278138 100644 --- a/crates/jacquard-api/src/app_bsky/actor/status.rs +++ b/crates/jacquard-api/src/app_bsky/actor/status.rs @@ -53,6 +53,19 @@ pub struct Status<'a> { pub status: jacquard_common::CowStr<'a>, } +impl<'a> Status<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StatusRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/feed/generator.rs b/crates/jacquard-api/src/app_bsky/feed/generator.rs index c4bba694..4bdddc15 100644 --- a/crates/jacquard-api/src/app_bsky/feed/generator.rs +++ b/crates/jacquard-api/src/app_bsky/feed/generator.rs @@ -52,6 +52,19 @@ pub struct Generator<'a> { pub labels: Option>, } +impl<'a> Generator<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GeneratorRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/feed/like.rs b/crates/jacquard-api/src/app_bsky/feed/like.rs index 745dba47..e1f20b04 100644 --- a/crates/jacquard-api/src/app_bsky/feed/like.rs +++ b/crates/jacquard-api/src/app_bsky/feed/like.rs @@ -28,6 +28,19 @@ pub struct Like<'a> { pub via: Option>, } +impl<'a> Like<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LikeRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/feed/post.rs b/crates/jacquard-api/src/app_bsky/feed/post.rs index 558acbe4..85f1aa77 100644 --- a/crates/jacquard-api/src/app_bsky/feed/post.rs +++ b/crates/jacquard-api/src/app_bsky/feed/post.rs @@ -15,7 +15,7 @@ PartialEq, Eq, jacquard_derive::IntoStatic, - bon::Builder + bon::Builder, )] #[serde(rename_all = "camelCase")] pub struct Entity<'a> { @@ -40,7 +40,7 @@ pub struct Entity<'a> { PartialEq, Eq, jacquard_derive::IntoStatic, - bon::Builder + bon::Builder, )] #[serde(rename_all = "camelCase")] pub struct Post<'a> { @@ -84,15 +84,22 @@ pub struct Post<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + #[jacquard_derive::open_union] #[derive( - serde::Serialize, - serde::Deserialize, - Debug, - Clone, - PartialEq, - Eq, - jacquard_derive::IntoStatic + serde::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, )] #[serde(tag = "$type")] #[serde(bound(deserialize = "'de: 'a"))] @@ -111,13 +118,7 @@ pub enum PostEmbed<'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::Serialize, serde::Deserialize, Debug, Clone, PartialEq, Eq, jacquard_derive::IntoStatic, )] #[serde(rename_all = "camelCase")] pub struct PostGetRecordOutput<'a> { @@ -166,7 +167,7 @@ impl jacquard_common::types::collection::Collection for PostRecord { PartialEq, Eq, jacquard_derive::IntoStatic, - bon::Builder + bon::Builder, )] #[serde(rename_all = "camelCase")] pub struct ReplyRef<'a> { @@ -186,10 +187,10 @@ pub struct ReplyRef<'a> { PartialEq, Eq, jacquard_derive::IntoStatic, - bon::Builder + bon::Builder, )] #[serde(rename_all = "camelCase")] pub struct TextSlice<'a> { pub end: i64, pub start: i64, -} \ No newline at end of file +} diff --git a/crates/jacquard-api/src/app_bsky/feed/postgate.rs b/crates/jacquard-api/src/app_bsky/feed/postgate.rs index 6f98bcfe..1d68b0e5 100644 --- a/crates/jacquard-api/src/app_bsky/feed/postgate.rs +++ b/crates/jacquard-api/src/app_bsky/feed/postgate.rs @@ -49,6 +49,19 @@ pub struct Postgate<'a> { pub post: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Postgate<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostgateRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/feed/repost.rs b/crates/jacquard-api/src/app_bsky/feed/repost.rs index 1be72cb2..80a08cc3 100644 --- a/crates/jacquard-api/src/app_bsky/feed/repost.rs +++ b/crates/jacquard-api/src/app_bsky/feed/repost.rs @@ -28,6 +28,19 @@ pub struct Repost<'a> { pub via: Option>, } +impl<'a> Repost<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RepostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/feed/threadgate.rs b/crates/jacquard-api/src/app_bsky/feed/threadgate.rs index 58ed8251..ae00f09c 100644 --- a/crates/jacquard-api/src/app_bsky/feed/threadgate.rs +++ b/crates/jacquard-api/src/app_bsky/feed/threadgate.rs @@ -81,6 +81,19 @@ pub struct Threadgate<'a> { pub post: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Threadgate<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ThreadgateRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + #[jacquard_derive::open_union] #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/block.rs b/crates/jacquard-api/src/app_bsky/graph/block.rs index a96e769e..3a53c60a 100644 --- a/crates/jacquard-api/src/app_bsky/graph/block.rs +++ b/crates/jacquard-api/src/app_bsky/graph/block.rs @@ -25,6 +25,19 @@ pub struct Block<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Block<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BlockRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/follow.rs b/crates/jacquard-api/src/app_bsky/graph/follow.rs index 833a4ed2..82276ea6 100644 --- a/crates/jacquard-api/src/app_bsky/graph/follow.rs +++ b/crates/jacquard-api/src/app_bsky/graph/follow.rs @@ -24,6 +24,19 @@ pub struct Follow<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Follow<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, FollowRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/list.rs b/crates/jacquard-api/src/app_bsky/graph/list.rs index 47665e1a..b0378129 100644 --- a/crates/jacquard-api/src/app_bsky/graph/list.rs +++ b/crates/jacquard-api/src/app_bsky/graph/list.rs @@ -45,6 +45,19 @@ pub struct List<'a> { pub purpose: crate::app_bsky::graph::ListPurpose<'a>, } +impl<'a> List<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/listblock.rs b/crates/jacquard-api/src/app_bsky/graph/listblock.rs index e78a5636..1d50ba0f 100644 --- a/crates/jacquard-api/src/app_bsky/graph/listblock.rs +++ b/crates/jacquard-api/src/app_bsky/graph/listblock.rs @@ -25,6 +25,19 @@ pub struct Listblock<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Listblock<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListblockRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/listitem.rs b/crates/jacquard-api/src/app_bsky/graph/listitem.rs index 66d6b795..e3469548 100644 --- a/crates/jacquard-api/src/app_bsky/graph/listitem.rs +++ b/crates/jacquard-api/src/app_bsky/graph/listitem.rs @@ -28,6 +28,19 @@ pub struct Listitem<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Listitem<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListitemRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/starterpack.rs b/crates/jacquard-api/src/app_bsky/graph/starterpack.rs index 6f67dc52..14e7b5a5 100644 --- a/crates/jacquard-api/src/app_bsky/graph/starterpack.rs +++ b/crates/jacquard-api/src/app_bsky/graph/starterpack.rs @@ -58,6 +58,19 @@ pub struct Starterpack<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> Starterpack<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StarterpackRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/graph/verification.rs b/crates/jacquard-api/src/app_bsky/graph/verification.rs index f7d0e859..ddfb4f7a 100644 --- a/crates/jacquard-api/src/app_bsky/graph/verification.rs +++ b/crates/jacquard-api/src/app_bsky/graph/verification.rs @@ -33,6 +33,19 @@ pub struct Verification<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Verification<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, VerificationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/labeler/service.rs b/crates/jacquard-api/src/app_bsky/labeler/service.rs index 0195428b..0cb2188b 100644 --- a/crates/jacquard-api/src/app_bsky/labeler/service.rs +++ b/crates/jacquard-api/src/app_bsky/labeler/service.rs @@ -43,6 +43,19 @@ pub struct Service<'a> { pub subject_types: Option>>, } +impl<'a> Service<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ServiceRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_bsky/notification/declaration.rs b/crates/jacquard-api/src/app_bsky/notification/declaration.rs index 5ffed8a7..520ed16a 100644 --- a/crates/jacquard-api/src/app_bsky/notification/declaration.rs +++ b/crates/jacquard-api/src/app_bsky/notification/declaration.rs @@ -25,6 +25,19 @@ pub struct Declaration<'a> { pub allow_subscriptions: jacquard_common::CowStr<'a>, } +impl<'a> Declaration<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, DeclarationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_ocho/edu/verification.rs b/crates/jacquard-api/src/app_ocho/edu/verification.rs index a0885154..8bc2f802 100644 --- a/crates/jacquard-api/src/app_ocho/edu/verification.rs +++ b/crates/jacquard-api/src/app_ocho/edu/verification.rs @@ -30,6 +30,19 @@ pub struct Verification<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Verification<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, VerificationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_ocho/plugin/service.rs b/crates/jacquard-api/src/app_ocho/plugin/service.rs index 29688204..c76d064c 100644 --- a/crates/jacquard-api/src/app_ocho/plugin/service.rs +++ b/crates/jacquard-api/src/app_ocho/plugin/service.rs @@ -28,6 +28,19 @@ pub struct Service<'a> { pub permissions: Vec>, } +impl<'a> Service<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ServiceRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/album.rs b/crates/jacquard-api/src/app_rocksky/album.rs index b9fd9f3b..4764df31 100644 --- a/crates/jacquard-api/src/app_rocksky/album.rs +++ b/crates/jacquard-api/src/app_rocksky/album.rs @@ -82,6 +82,19 @@ pub struct Album<'a> { pub youtube_link: Option>, } +impl<'a> Album<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, AlbumRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/artist.rs b/crates/jacquard-api/src/app_rocksky/artist.rs index 0fddb6d2..f40ef9ce 100644 --- a/crates/jacquard-api/src/app_rocksky/artist.rs +++ b/crates/jacquard-api/src/app_rocksky/artist.rs @@ -60,6 +60,19 @@ pub struct Artist<'a> { pub tags: Option>>, } +impl<'a> Artist<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ArtistRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/like.rs b/crates/jacquard-api/src/app_rocksky/like.rs index d85a35d4..3c196d0c 100644 --- a/crates/jacquard-api/src/app_rocksky/like.rs +++ b/crates/jacquard-api/src/app_rocksky/like.rs @@ -30,6 +30,19 @@ pub struct Like<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Like<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LikeRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/playlist.rs b/crates/jacquard-api/src/app_rocksky/playlist.rs index 1a8991aa..09b2853f 100644 --- a/crates/jacquard-api/src/app_rocksky/playlist.rs +++ b/crates/jacquard-api/src/app_rocksky/playlist.rs @@ -65,6 +65,19 @@ pub struct Playlist<'a> { pub youtube_link: Option>, } +impl<'a> Playlist<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PlaylistRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/radio.rs b/crates/jacquard-api/src/app_rocksky/radio.rs index 6d49d4f4..814ccbc2 100644 --- a/crates/jacquard-api/src/app_rocksky/radio.rs +++ b/crates/jacquard-api/src/app_rocksky/radio.rs @@ -50,6 +50,19 @@ pub struct Radio<'a> { pub website: Option>, } +impl<'a> Radio<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RadioRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/scrobble.rs b/crates/jacquard-api/src/app_rocksky/scrobble.rs index 4c4e21c4..2d0fed03 100644 --- a/crates/jacquard-api/src/app_rocksky/scrobble.rs +++ b/crates/jacquard-api/src/app_rocksky/scrobble.rs @@ -126,6 +126,19 @@ pub struct Scrobble<'a> { pub youtube_link: Option>, } +impl<'a> Scrobble<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ScrobbleRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/shout.rs b/crates/jacquard-api/src/app_rocksky/shout.rs index f4617149..601ee657 100644 --- a/crates/jacquard-api/src/app_rocksky/shout.rs +++ b/crates/jacquard-api/src/app_rocksky/shout.rs @@ -43,6 +43,19 @@ pub struct Shout<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Shout<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ShoutRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/app_rocksky/song.rs b/crates/jacquard-api/src/app_rocksky/song.rs index 84545203..6454c943 100644 --- a/crates/jacquard-api/src/app_rocksky/song.rs +++ b/crates/jacquard-api/src/app_rocksky/song.rs @@ -126,6 +126,19 @@ pub struct Song<'a> { pub youtube_link: Option>, } +impl<'a> Song<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SongRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/beauty_cybernetic/trustcow/review.rs b/crates/jacquard-api/src/beauty_cybernetic/trustcow/review.rs index b9ef8337..f00eec51 100644 --- a/crates/jacquard-api/src/beauty_cybernetic/trustcow/review.rs +++ b/crates/jacquard-api/src/beauty_cybernetic/trustcow/review.rs @@ -44,6 +44,19 @@ pub struct Review<'a> { pub transaction: jacquard_common::CowStr<'a>, } +impl<'a> Review<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ReviewRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/beauty_cybernetic/trustcow/transaction.rs b/crates/jacquard-api/src/beauty_cybernetic/trustcow/transaction.rs index acd0a1e8..59209371 100644 --- a/crates/jacquard-api/src/beauty_cybernetic/trustcow/transaction.rs +++ b/crates/jacquard-api/src/beauty_cybernetic/trustcow/transaction.rs @@ -50,6 +50,19 @@ pub struct Transaction<'a> { pub transaction_id: jacquard_common::CowStr<'a>, } +impl<'a> Transaction<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, TransactionRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/beauty_cybernetic/trustcow/warrant.rs b/crates/jacquard-api/src/beauty_cybernetic/trustcow/warrant.rs index 2699c482..993c9511 100644 --- a/crates/jacquard-api/src/beauty_cybernetic/trustcow/warrant.rs +++ b/crates/jacquard-api/src/beauty_cybernetic/trustcow/warrant.rs @@ -46,6 +46,19 @@ pub struct Warrant<'a> { pub warrant_type: Option>, } +impl<'a> Warrant<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, WarrantRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blog_pckt/blog.rs b/crates/jacquard-api/src/blog_pckt/blog.rs index 455d2eab..efe29bb5 100644 --- a/crates/jacquard-api/src/blog_pckt/blog.rs +++ b/crates/jacquard-api/src/blog_pckt/blog.rs @@ -46,6 +46,19 @@ pub struct Blog<'a> { pub url: Option>, } +impl<'a> Blog<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BlogRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blog_pckt/post.rs b/crates/jacquard-api/src/blog_pckt/post.rs index fab39215..cb8279ef 100644 --- a/crates/jacquard-api/src/blog_pckt/post.rs +++ b/crates/jacquard-api/src/blog_pckt/post.rs @@ -51,6 +51,19 @@ pub struct Post<'a> { pub url: jacquard_common::types::string::Uri<'a>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blog_pckt/publication.rs b/crates/jacquard-api/src/blog_pckt/publication.rs index 90ab8d23..f09d2e8c 100644 --- a/crates/jacquard-api/src/blog_pckt/publication.rs +++ b/crates/jacquard-api/src/blog_pckt/publication.rs @@ -56,6 +56,19 @@ pub struct Publication<'a> { pub updated_at: Option, } +impl<'a> Publication<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PublicationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blog_pckt/theme.rs b/crates/jacquard-api/src/blog_pckt/theme.rs index 676aba3f..8b5c6fe9 100644 --- a/crates/jacquard-api/src/blog_pckt/theme.rs +++ b/crates/jacquard-api/src/blog_pckt/theme.rs @@ -32,6 +32,19 @@ pub struct Theme<'a> { pub light: crate::blog_pckt::theme::Palette<'a>, } +impl<'a> Theme<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ThemeRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/game.rs b/crates/jacquard-api/src/blue__2048/game.rs index 7e779115..1cdbae40 100644 --- a/crates/jacquard-api/src/blue__2048/game.rs +++ b/crates/jacquard-api/src/blue__2048/game.rs @@ -35,6 +35,19 @@ pub struct Game<'a> { pub won: bool, } +impl<'a> Game<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GameRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/key/game.rs b/crates/jacquard-api/src/blue__2048/key/game.rs index ccf93d20..170b9a4f 100644 --- a/crates/jacquard-api/src/blue__2048/key/game.rs +++ b/crates/jacquard-api/src/blue__2048/key/game.rs @@ -25,6 +25,19 @@ pub struct Game<'a> { pub key: crate::blue__2048::key::Key<'a>, } +impl<'a> Game<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GameRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/key/player/stats.rs b/crates/jacquard-api/src/blue__2048/key/player/stats.rs index 87336e84..cfc8dd55 100644 --- a/crates/jacquard-api/src/blue__2048/key/player/stats.rs +++ b/crates/jacquard-api/src/blue__2048/key/player/stats.rs @@ -25,6 +25,19 @@ pub struct Stats<'a> { pub key: crate::blue__2048::key::Key<'a>, } +impl<'a> Stats<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StatsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/player/profile.rs b/crates/jacquard-api/src/blue__2048/player/profile.rs index 3eb515c5..f2d8e97d 100644 --- a/crates/jacquard-api/src/blue__2048/player/profile.rs +++ b/crates/jacquard-api/src/blue__2048/player/profile.rs @@ -27,6 +27,19 @@ pub struct Profile<'a> { pub sync_status: crate::blue__2048::SyncStatus<'a>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/player/stats.rs b/crates/jacquard-api/src/blue__2048/player/stats.rs index 98acc073..c387d978 100644 --- a/crates/jacquard-api/src/blue__2048/player/stats.rs +++ b/crates/jacquard-api/src/blue__2048/player/stats.rs @@ -39,6 +39,19 @@ pub struct Stats<'a> { pub total_score: i64, } +impl<'a> Stats<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StatsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/verification/game.rs b/crates/jacquard-api/src/blue__2048/verification/game.rs index aef749e3..8150cfc5 100644 --- a/crates/jacquard-api/src/blue__2048/verification/game.rs +++ b/crates/jacquard-api/src/blue__2048/verification/game.rs @@ -29,6 +29,19 @@ pub struct Game<'a> { pub verified_ref: Option>, } +impl<'a> Game<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GameRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue__2048/verification/stats.rs b/crates/jacquard-api/src/blue__2048/verification/stats.rs index 10648133..cfb12b31 100644 --- a/crates/jacquard-api/src/blue__2048/verification/stats.rs +++ b/crates/jacquard-api/src/blue__2048/verification/stats.rs @@ -29,6 +29,19 @@ pub struct Stats<'a> { pub verified_ref: Option>, } +impl<'a> Stats<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StatsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue_atplane/fav_client.rs b/crates/jacquard-api/src/blue_atplane/fav_client.rs index 1fa6f5b0..c0ad0cad 100644 --- a/crates/jacquard-api/src/blue_atplane/fav_client.rs +++ b/crates/jacquard-api/src/blue_atplane/fav_client.rs @@ -25,6 +25,19 @@ pub struct FavClient<'a> { pub fav_client: jacquard_common::CowStr<'a>, } +impl<'a> FavClient<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, FavClientRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue_linkat/board.rs b/crates/jacquard-api/src/blue_linkat/board.rs index 6cec6627..7bb12316 100644 --- a/crates/jacquard-api/src/blue_linkat/board.rs +++ b/crates/jacquard-api/src/blue_linkat/board.rs @@ -51,6 +51,19 @@ pub struct Board<'a> { pub cards: Vec>, } +impl<'a> Board<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BoardRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/blue_zio/atfile/lock.rs b/crates/jacquard-api/src/blue_zio/atfile/lock.rs index 9bc6a71a..3fbd55e8 100644 --- a/crates/jacquard-api/src/blue_zio/atfile/lock.rs +++ b/crates/jacquard-api/src/blue_zio/atfile/lock.rs @@ -24,6 +24,19 @@ pub struct Lock<'a> { pub lock: Option, } +impl<'a> Lock<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LockRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/buzz_bookhive/book.rs b/crates/jacquard-api/src/buzz_bookhive/book.rs index 1fe8da69..8942fd61 100644 --- a/crates/jacquard-api/src/buzz_bookhive/book.rs +++ b/crates/jacquard-api/src/buzz_bookhive/book.rs @@ -60,6 +60,19 @@ pub struct Book<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Book<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BookRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/buzz_bookhive/buzz.rs b/crates/jacquard-api/src/buzz_bookhive/buzz.rs index 95f791e6..b19ba301 100644 --- a/crates/jacquard-api/src/buzz_bookhive/buzz.rs +++ b/crates/jacquard-api/src/buzz_bookhive/buzz.rs @@ -31,6 +31,19 @@ pub struct Buzz<'a> { pub parent: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Buzz<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BuzzRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/buzz_bookhive/hive_book.rs b/crates/jacquard-api/src/buzz_bookhive/hive_book.rs index b4ff96a6..bf72858d 100644 --- a/crates/jacquard-api/src/buzz_bookhive/hive_book.rs +++ b/crates/jacquard-api/src/buzz_bookhive/hive_book.rs @@ -72,6 +72,19 @@ pub struct HiveBook<'a> { pub updated_at: jacquard_common::types::string::Datetime, } +impl<'a> HiveBook<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, HiveBookRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/chat_bsky/actor/declaration.rs b/crates/jacquard-api/src/chat_bsky/actor/declaration.rs index 68e225e8..07d37434 100644 --- a/crates/jacquard-api/src/chat_bsky/actor/declaration.rs +++ b/crates/jacquard-api/src/chat_bsky/actor/declaration.rs @@ -24,6 +24,19 @@ pub struct Declaration<'a> { pub allow_incoming: jacquard_common::CowStr<'a>, } +impl<'a> Declaration<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, DeclarationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/com_atproto/lexicon/schema.rs b/crates/jacquard-api/src/com_atproto/lexicon/schema.rs index bec9da20..9106bcf8 100644 --- a/crates/jacquard-api/src/com_atproto/lexicon/schema.rs +++ b/crates/jacquard-api/src/com_atproto/lexicon/schema.rs @@ -23,6 +23,19 @@ pub struct Schema<'a> { pub lexicon: i64, } +impl<'a> Schema<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SchemaRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/com_crabdance/nandi/post.rs b/crates/jacquard-api/src/com_crabdance/nandi/post.rs index c6730a90..3f6b5689 100644 --- a/crates/jacquard-api/src/com_crabdance/nandi/post.rs +++ b/crates/jacquard-api/src/com_crabdance/nandi/post.rs @@ -46,6 +46,19 @@ pub struct Post<'a> { pub updated_at: Option, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/com_shinolabs/pinksea/oekaki.rs b/crates/jacquard-api/src/com_shinolabs/pinksea/oekaki.rs index c577347e..54f447f3 100644 --- a/crates/jacquard-api/src/com_shinolabs/pinksea/oekaki.rs +++ b/crates/jacquard-api/src/com_shinolabs/pinksea/oekaki.rs @@ -79,6 +79,19 @@ pub struct Oekaki<'a> { pub tags: Option>>, } +impl<'a> Oekaki<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, OekakiRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/com_shinolabs/pinksea/profile.rs b/crates/jacquard-api/src/com_shinolabs/pinksea/profile.rs index 6793a856..68f61727 100644 --- a/crates/jacquard-api/src/com_shinolabs/pinksea/profile.rs +++ b/crates/jacquard-api/src/com_shinolabs/pinksea/profile.rs @@ -41,6 +41,19 @@ pub struct Profile<'a> { pub nickname: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/com_whtwnd/blog/entry.rs b/crates/jacquard-api/src/com_whtwnd/blog/entry.rs index b767687e..7be7367c 100644 --- a/crates/jacquard-api/src/com_whtwnd/blog/entry.rs +++ b/crates/jacquard-api/src/com_whtwnd/blog/entry.rs @@ -56,6 +56,19 @@ pub struct Entry<'a> { pub visibility: Option>, } +impl<'a> Entry<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, EntryRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/community_lexicon/bookmarks/bookmark.rs b/crates/jacquard-api/src/community_lexicon/bookmarks/bookmark.rs index e14b4e66..579db7f6 100644 --- a/crates/jacquard-api/src/community_lexicon/bookmarks/bookmark.rs +++ b/crates/jacquard-api/src/community_lexicon/bookmarks/bookmark.rs @@ -29,6 +29,19 @@ pub struct Bookmark<'a> { pub tags: Option>>, } +impl<'a> Bookmark<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BookmarkRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/community_lexicon/calendar/event.rs b/crates/jacquard-api/src/community_lexicon/calendar/event.rs index f5e1ecd8..d637b9fc 100644 --- a/crates/jacquard-api/src/community_lexicon/calendar/event.rs +++ b/crates/jacquard-api/src/community_lexicon/calendar/event.rs @@ -114,6 +114,19 @@ pub struct Event<'a> { pub uris: Option>>, } +impl<'a> Event<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, EventRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + #[jacquard_derive::open_union] #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/community_lexicon/calendar/rsvp.rs b/crates/jacquard-api/src/community_lexicon/calendar/rsvp.rs index 1c857f80..27f194ba 100644 --- a/crates/jacquard-api/src/community_lexicon/calendar/rsvp.rs +++ b/crates/jacquard-api/src/community_lexicon/calendar/rsvp.rs @@ -62,6 +62,19 @@ pub struct Rsvp<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Rsvp<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RsvpRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/community_lexicon/interaction/like.rs b/crates/jacquard-api/src/community_lexicon/interaction/like.rs index f22c8439..a2b9b95e 100644 --- a/crates/jacquard-api/src/community_lexicon/interaction/like.rs +++ b/crates/jacquard-api/src/community_lexicon/interaction/like.rs @@ -24,6 +24,19 @@ pub struct Like<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Like<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LikeRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/community_lexicon/payments/web_monetization.rs b/crates/jacquard-api/src/community_lexicon/payments/web_monetization.rs index 2a1b19f1..9d71ff84 100644 --- a/crates/jacquard-api/src/community_lexicon/payments/web_monetization.rs +++ b/crates/jacquard-api/src/community_lexicon/payments/web_monetization.rs @@ -29,6 +29,19 @@ pub struct WebMonetization<'a> { pub note: Option>, } +impl<'a> WebMonetization<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, WebMonetizationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_baileytownsend/health/calories.rs b/crates/jacquard-api/src/dev_baileytownsend/health/calories.rs index f0d48c83..8ad3b038 100644 --- a/crates/jacquard-api/src/dev_baileytownsend/health/calories.rs +++ b/crates/jacquard-api/src/dev_baileytownsend/health/calories.rs @@ -24,6 +24,19 @@ pub struct Calories<'a> { pub intake: i64, } +impl<'a> Calories<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CaloriesRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_baileytownsend/health/rings.rs b/crates/jacquard-api/src/dev_baileytownsend/health/rings.rs index e231de61..38f2c2f4 100644 --- a/crates/jacquard-api/src/dev_baileytownsend/health/rings.rs +++ b/crates/jacquard-api/src/dev_baileytownsend/health/rings.rs @@ -34,6 +34,19 @@ pub struct Rings<'a> { pub stand_hours: i64, } +impl<'a> Rings<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RingsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_baileytownsend/health/steps.rs b/crates/jacquard-api/src/dev_baileytownsend/health/steps.rs index fbf3e9c6..d0b8e433 100644 --- a/crates/jacquard-api/src/dev_baileytownsend/health/steps.rs +++ b/crates/jacquard-api/src/dev_baileytownsend/health/steps.rs @@ -22,6 +22,19 @@ pub struct Steps<'a> { pub steps: i64, } +impl<'a> Steps<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StepsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_baileytownsend/health/workout.rs b/crates/jacquard-api/src/dev_baileytownsend/health/workout.rs index 24c1efd9..90319718 100644 --- a/crates/jacquard-api/src/dev_baileytownsend/health/workout.rs +++ b/crates/jacquard-api/src/dev_baileytownsend/health/workout.rs @@ -38,6 +38,19 @@ pub struct Workout<'a> { pub start_time: jacquard_common::types::string::Datetime, } +impl<'a> Workout<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, WorkoutRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/post.rs b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/post.rs index 5d3db946..4a800a88 100644 --- a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/post.rs +++ b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/post.rs @@ -41,6 +41,19 @@ pub struct Post<'a> { pub updated_at: Option, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/reply.rs b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/reply.rs index 093bc5b3..7a82115e 100644 --- a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/reply.rs +++ b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/feed/reply.rs @@ -30,6 +30,19 @@ pub struct Reply<'a> { pub updated_at: Option, } +impl<'a> Reply<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ReplyRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/announcement.rs b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/announcement.rs index 96f88814..6421cc67 100644 --- a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/announcement.rs +++ b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/announcement.rs @@ -29,6 +29,19 @@ pub struct Announcement<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Announcement<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, AnnouncementRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/category.rs b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/category.rs index 453c299e..3d6ea65c 100644 --- a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/category.rs +++ b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/category.rs @@ -33,6 +33,19 @@ pub struct Category<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> Category<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CategoryRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/group.rs b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/group.rs index a349c48a..29b11002 100644 --- a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/group.rs +++ b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/group.rs @@ -28,6 +28,19 @@ pub struct Group<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> Group<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GroupRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/identity.rs b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/identity.rs index f1f16e79..7f58b3ec 100644 --- a/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/identity.rs +++ b/crates/jacquard-api/src/dev_fudgeu/experimental/atforumv1/forum/identity.rs @@ -32,6 +32,19 @@ pub struct Identity<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> Identity<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, IdentityRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_ocbwoy3/blueboard/board.rs b/crates/jacquard-api/src/dev_ocbwoy3/blueboard/board.rs index df7d7872..198cf920 100644 --- a/crates/jacquard-api/src/dev_ocbwoy3/blueboard/board.rs +++ b/crates/jacquard-api/src/dev_ocbwoy3/blueboard/board.rs @@ -32,6 +32,19 @@ pub struct Board<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Board<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BoardRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_ocbwoy3/blueboard/post.rs b/crates/jacquard-api/src/dev_ocbwoy3/blueboard/post.rs index 9d69cb40..df61f254 100644 --- a/crates/jacquard-api/src/dev_ocbwoy3/blueboard/post.rs +++ b/crates/jacquard-api/src/dev_ocbwoy3/blueboard/post.rs @@ -34,6 +34,19 @@ pub struct Post<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/dev_regnault/webfishing/savefile.rs b/crates/jacquard-api/src/dev_regnault/webfishing/savefile.rs index c6312ec6..0121ff36 100644 --- a/crates/jacquard-api/src/dev_regnault/webfishing/savefile.rs +++ b/crates/jacquard-api/src/dev_regnault/webfishing/savefile.rs @@ -26,6 +26,19 @@ pub struct Savefile<'a> { pub uri: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Savefile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SavefileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/fyi_unravel/frontpage/comment.rs b/crates/jacquard-api/src/fyi_unravel/frontpage/comment.rs index a6c4f1ee..8a5994dc 100644 --- a/crates/jacquard-api/src/fyi_unravel/frontpage/comment.rs +++ b/crates/jacquard-api/src/fyi_unravel/frontpage/comment.rs @@ -33,6 +33,19 @@ pub struct Comment<'a> { pub post: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Comment<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CommentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/fyi_unravel/frontpage/post.rs b/crates/jacquard-api/src/fyi_unravel/frontpage/post.rs index 1ed9aeec..b2271750 100644 --- a/crates/jacquard-api/src/fyi_unravel/frontpage/post.rs +++ b/crates/jacquard-api/src/fyi_unravel/frontpage/post.rs @@ -30,6 +30,19 @@ pub struct Post<'a> { pub url: jacquard_common::types::string::Uri<'a>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/fyi_unravel/frontpage/vote.rs b/crates/jacquard-api/src/fyi_unravel/frontpage/vote.rs index 2a2c3c00..6232b57a 100644 --- a/crates/jacquard-api/src/fyi_unravel/frontpage/vote.rs +++ b/crates/jacquard-api/src/fyi_unravel/frontpage/vote.rs @@ -25,6 +25,19 @@ pub struct Vote<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Vote<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, VoteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/moe_karashiiro/kpaste/paste.rs b/crates/jacquard-api/src/moe_karashiiro/kpaste/paste.rs index 153827cc..42e7e911 100644 --- a/crates/jacquard-api/src/moe_karashiiro/kpaste/paste.rs +++ b/crates/jacquard-api/src/moe_karashiiro/kpaste/paste.rs @@ -39,6 +39,19 @@ pub struct Paste<'a> { pub updated_at: Option, } +impl<'a> Paste<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PasteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/my_skylights/rel.rs b/crates/jacquard-api/src/my_skylights/rel.rs index 48cf9448..0ba4910d 100644 --- a/crates/jacquard-api/src/my_skylights/rel.rs +++ b/crates/jacquard-api/src/my_skylights/rel.rs @@ -33,6 +33,19 @@ pub struct Rel<'a> { pub rating: Option>, } +impl<'a> Rel<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RelRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_aftertheinter/coolthingtwo.rs b/crates/jacquard-api/src/net_aftertheinter/coolthingtwo.rs index 58c1160d..30f3f8bb 100644 --- a/crates/jacquard-api/src/net_aftertheinter/coolthingtwo.rs +++ b/crates/jacquard-api/src/net_aftertheinter/coolthingtwo.rs @@ -24,6 +24,19 @@ pub struct Coolthingtwo<'a> { pub status: jacquard_common::CowStr<'a>, } +impl<'a> Coolthingtwo<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CoolthingtwoRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_altq/aqfile.rs b/crates/jacquard-api/src/net_altq/aqfile.rs index 53e63404..cb7f0aa7 100644 --- a/crates/jacquard-api/src/net_altq/aqfile.rs +++ b/crates/jacquard-api/src/net_altq/aqfile.rs @@ -92,6 +92,19 @@ pub struct Aqfile<'a> { pub file: crate::net_altq::aqfile::File<'a>, } +impl<'a> Aqfile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, AqfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/beta/game/collection.rs b/crates/jacquard-api/src/net_anisota/beta/game/collection.rs index 00be48e4..f33c2f97 100644 --- a/crates/jacquard-api/src/net_anisota/beta/game/collection.rs +++ b/crates/jacquard-api/src/net_anisota/beta/game/collection.rs @@ -96,6 +96,19 @@ pub struct Collection<'a> { pub status: Option>, } +impl<'a> Collection<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CollectionRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/beta/game/inventory.rs b/crates/jacquard-api/src/net_anisota/beta/game/inventory.rs index 84d15086..41dab1bf 100644 --- a/crates/jacquard-api/src/net_anisota/beta/game/inventory.rs +++ b/crates/jacquard-api/src/net_anisota/beta/game/inventory.rs @@ -83,6 +83,19 @@ pub struct Inventory<'a> { pub stackable: Option, } +impl<'a> Inventory<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, InventoryRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/beta/game/log.rs b/crates/jacquard-api/src/net_anisota/beta/game/log.rs index 070270e5..92f2c044 100644 --- a/crates/jacquard-api/src/net_anisota/beta/game/log.rs +++ b/crates/jacquard-api/src/net_anisota/beta/game/log.rs @@ -257,6 +257,19 @@ pub struct Log<'a> { pub timestamp: jacquard_common::types::string::Datetime, } +impl<'a> Log<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LogRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/beta/game/pack.rs b/crates/jacquard-api/src/net_anisota/beta/game/pack.rs index cac447e5..b0b29fb4 100644 --- a/crates/jacquard-api/src/net_anisota/beta/game/pack.rs +++ b/crates/jacquard-api/src/net_anisota/beta/game/pack.rs @@ -44,6 +44,19 @@ pub struct Pack<'a> { pub total_opens: i64, } +impl<'a> Pack<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PackRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/beta/game/progress.rs b/crates/jacquard-api/src/net_anisota/beta/game/progress.rs index a76b4280..4872e786 100644 --- a/crates/jacquard-api/src/net_anisota/beta/game/progress.rs +++ b/crates/jacquard-api/src/net_anisota/beta/game/progress.rs @@ -79,6 +79,19 @@ pub struct Progress<'a> { pub xp_to_next_level: i64, } +impl<'a> Progress<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProgressRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/beta/game/session.rs b/crates/jacquard-api/src/net_anisota/beta/game/session.rs index 0ca4c0a3..cab2b939 100644 --- a/crates/jacquard-api/src/net_anisota/beta/game/session.rs +++ b/crates/jacquard-api/src/net_anisota/beta/game/session.rs @@ -161,6 +161,19 @@ pub struct Session<'a> { pub updated_at: Option, } +impl<'a> Session<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SessionRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/feed/draft.rs b/crates/jacquard-api/src/net_anisota/feed/draft.rs index 544bc7a0..d2cf8d98 100644 --- a/crates/jacquard-api/src/net_anisota/feed/draft.rs +++ b/crates/jacquard-api/src/net_anisota/feed/draft.rs @@ -58,6 +58,19 @@ pub struct Draft<'a> { pub updated_at: Option, } +impl<'a> Draft<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, DraftRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + #[jacquard_derive::open_union] #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/feed/like.rs b/crates/jacquard-api/src/net_anisota/feed/like.rs index 16681e49..b85fe9a6 100644 --- a/crates/jacquard-api/src/net_anisota/feed/like.rs +++ b/crates/jacquard-api/src/net_anisota/feed/like.rs @@ -26,6 +26,19 @@ pub struct Like<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Like<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LikeRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/feed/list.rs b/crates/jacquard-api/src/net_anisota/feed/list.rs index 69eb357a..0043c7e5 100644 --- a/crates/jacquard-api/src/net_anisota/feed/list.rs +++ b/crates/jacquard-api/src/net_anisota/feed/list.rs @@ -42,6 +42,19 @@ pub struct List<'a> { pub tags: Option>>, } +impl<'a> List<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/feed/list_item.rs b/crates/jacquard-api/src/net_anisota/feed/list_item.rs index 7a38a76e..f7237ea1 100644 --- a/crates/jacquard-api/src/net_anisota/feed/list_item.rs +++ b/crates/jacquard-api/src/net_anisota/feed/list_item.rs @@ -29,6 +29,19 @@ pub struct ListItem<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> ListItem<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListItemRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/feed/post.rs b/crates/jacquard-api/src/net_anisota/feed/post.rs index ef9dec22..517d00f7 100644 --- a/crates/jacquard-api/src/net_anisota/feed/post.rs +++ b/crates/jacquard-api/src/net_anisota/feed/post.rs @@ -54,6 +54,19 @@ pub struct Post<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + #[jacquard_derive::open_union] #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/feed/repost.rs b/crates/jacquard-api/src/net_anisota/feed/repost.rs index 1d5ff853..e4467f02 100644 --- a/crates/jacquard-api/src/net_anisota/feed/repost.rs +++ b/crates/jacquard-api/src/net_anisota/feed/repost.rs @@ -26,6 +26,19 @@ pub struct Repost<'a> { pub subject: crate::com_atproto::repo::strong_ref::StrongRef<'a>, } +impl<'a> Repost<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RepostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/graph/list_mute.rs b/crates/jacquard-api/src/net_anisota/graph/list_mute.rs index 5fa65c00..18fe0b7f 100644 --- a/crates/jacquard-api/src/net_anisota/graph/list_mute.rs +++ b/crates/jacquard-api/src/net_anisota/graph/list_mute.rs @@ -73,6 +73,19 @@ pub struct ListMute<'a> { pub target_feeds: Option>>, } +impl<'a> ListMute<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListMuteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_anisota/graph/mute.rs b/crates/jacquard-api/src/net_anisota/graph/mute.rs index e13d6c11..4950b7ae 100644 --- a/crates/jacquard-api/src/net_anisota/graph/mute.rs +++ b/crates/jacquard-api/src/net_anisota/graph/mute.rs @@ -73,6 +73,19 @@ pub struct Mute<'a> { pub target_feeds: Option>>, } +impl<'a> Mute<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MuteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_bnewbold/demo/mushies.rs b/crates/jacquard-api/src/net_bnewbold/demo/mushies.rs index 76f47a96..b48da86e 100644 --- a/crates/jacquard-api/src/net_bnewbold/demo/mushies.rs +++ b/crates/jacquard-api/src/net_bnewbold/demo/mushies.rs @@ -31,6 +31,19 @@ pub struct Mushies<'a> { pub species: Option>, } +impl<'a> Mushies<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MushiesRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_bnewbold/demo/mushroom.rs b/crates/jacquard-api/src/net_bnewbold/demo/mushroom.rs index 47ba06ed..713d4e18 100644 --- a/crates/jacquard-api/src/net_bnewbold/demo/mushroom.rs +++ b/crates/jacquard-api/src/net_bnewbold/demo/mushroom.rs @@ -31,6 +31,19 @@ pub struct Mushroom<'a> { pub species: Option>, } +impl<'a> Mushroom<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MushroomRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_bnewbold/m.rs b/crates/jacquard-api/src/net_bnewbold/m.rs index cde61d80..8b10fa66 100644 --- a/crates/jacquard-api/src/net_bnewbold/m.rs +++ b/crates/jacquard-api/src/net_bnewbold/m.rs @@ -31,6 +31,19 @@ pub struct M<'a> { pub species: Option>, } +impl<'a> M<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_mmatt/right/now.rs b/crates/jacquard-api/src/net_mmatt/right/now.rs index 2fa51642..2b728bbe 100644 --- a/crates/jacquard-api/src/net_mmatt/right/now.rs +++ b/crates/jacquard-api/src/net_mmatt/right/now.rs @@ -32,6 +32,19 @@ pub struct Now<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Now<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, NowRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/net_mmatt/vitals/car.rs b/crates/jacquard-api/src/net_mmatt/vitals/car.rs index 45708315..b2a0de41 100644 --- a/crates/jacquard-api/src/net_mmatt/vitals/car.rs +++ b/crates/jacquard-api/src/net_mmatt/vitals/car.rs @@ -48,6 +48,19 @@ pub struct Car<'a> { pub created_at: jacquard_common::types::string::Datetime, } +impl<'a> Car<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CarRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/network_slices/actor/profile.rs b/crates/jacquard-api/src/network_slices/actor/profile.rs index b40ce248..ea0393e8 100644 --- a/crates/jacquard-api/src/network_slices/actor/profile.rs +++ b/crates/jacquard-api/src/network_slices/actor/profile.rs @@ -38,6 +38,19 @@ pub struct Profile<'a> { pub display_name: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/network_slices/lexicon.rs b/crates/jacquard-api/src/network_slices/lexicon.rs index 7050b1b5..ecf996da 100644 --- a/crates/jacquard-api/src/network_slices/lexicon.rs +++ b/crates/jacquard-api/src/network_slices/lexicon.rs @@ -46,6 +46,19 @@ pub struct Lexicon<'a> { pub updated_at: Option, } +impl<'a> Lexicon<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LexiconRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/network_slices/slice.rs b/crates/jacquard-api/src/network_slices/slice.rs index 94d10fd1..d27c2d9a 100644 --- a/crates/jacquard-api/src/network_slices/slice.rs +++ b/crates/jacquard-api/src/network_slices/slice.rs @@ -47,6 +47,19 @@ pub struct Slice<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> Slice<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SliceRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/network_slices/waitlist/invite.rs b/crates/jacquard-api/src/network_slices/waitlist/invite.rs index 5e59ace2..72b9b8c4 100644 --- a/crates/jacquard-api/src/network_slices/waitlist/invite.rs +++ b/crates/jacquard-api/src/network_slices/waitlist/invite.rs @@ -33,6 +33,19 @@ pub struct Invite<'a> { pub slice: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Invite<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, InviteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/network_slices/waitlist/request.rs b/crates/jacquard-api/src/network_slices/waitlist/request.rs index 2a6cde09..29d0979d 100644 --- a/crates/jacquard-api/src/network_slices/waitlist/request.rs +++ b/crates/jacquard-api/src/network_slices/waitlist/request.rs @@ -26,6 +26,19 @@ pub struct Request<'a> { pub slice: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Request<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RequestRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/org_devcon/event/test.rs b/crates/jacquard-api/src/org_devcon/event/test.rs index 5997b18b..6e14e0cf 100644 --- a/crates/jacquard-api/src/org_devcon/event/test.rs +++ b/crates/jacquard-api/src/org_devcon/event/test.rs @@ -46,6 +46,19 @@ pub struct Test<'a> { pub url: Option>, } +impl<'a> Test<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, TestRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/org_robocracy/demo/fungus.rs b/crates/jacquard-api/src/org_robocracy/demo/fungus.rs index 55f176a1..bab020a0 100644 --- a/crates/jacquard-api/src/org_robocracy/demo/fungus.rs +++ b/crates/jacquard-api/src/org_robocracy/demo/fungus.rs @@ -31,6 +31,19 @@ pub struct Fungus<'a> { pub species: Option>, } +impl<'a> Fungus<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, FungusRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/org_robocracy/demo/mushies.rs b/crates/jacquard-api/src/org_robocracy/demo/mushies.rs index 3e4ce1d7..e42f9c95 100644 --- a/crates/jacquard-api/src/org_robocracy/demo/mushies.rs +++ b/crates/jacquard-api/src/org_robocracy/demo/mushies.rs @@ -31,6 +31,19 @@ pub struct Mushies<'a> { pub species: Option>, } +impl<'a> Mushies<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MushiesRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_atwork/endorsement.rs b/crates/jacquard-api/src/place_atwork/endorsement.rs index d1906c70..4220ed08 100644 --- a/crates/jacquard-api/src/place_atwork/endorsement.rs +++ b/crates/jacquard-api/src/place_atwork/endorsement.rs @@ -38,6 +38,19 @@ pub struct Endorsement<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Endorsement<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, EndorsementRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_atwork/endorsement_proof.rs b/crates/jacquard-api/src/place_atwork/endorsement_proof.rs index 2ce5eaeb..53861092 100644 --- a/crates/jacquard-api/src/place_atwork/endorsement_proof.rs +++ b/crates/jacquard-api/src/place_atwork/endorsement_proof.rs @@ -24,6 +24,19 @@ pub struct EndorsementProof<'a> { pub cid: jacquard_common::types::string::Cid<'a>, } +impl<'a> EndorsementProof<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, EndorsementProofRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_atwork/listing.rs b/crates/jacquard-api/src/place_atwork/listing.rs index 7e7bcc4d..0935465c 100644 --- a/crates/jacquard-api/src/place_atwork/listing.rs +++ b/crates/jacquard-api/src/place_atwork/listing.rs @@ -53,6 +53,19 @@ pub struct Listing<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Listing<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ListingRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_atwork/profile.rs b/crates/jacquard-api/src/place_atwork/profile.rs index 949ae402..3c929486 100644 --- a/crates/jacquard-api/src/place_atwork/profile.rs +++ b/crates/jacquard-api/src/place_atwork/profile.rs @@ -97,6 +97,19 @@ pub struct Profile<'a> { pub status: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/chat/gate.rs b/crates/jacquard-api/src/place_stream/chat/gate.rs index 0a62c529..5fa929fe 100644 --- a/crates/jacquard-api/src/place_stream/chat/gate.rs +++ b/crates/jacquard-api/src/place_stream/chat/gate.rs @@ -24,6 +24,19 @@ pub struct Gate<'a> { pub hidden_message: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Gate<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GateRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/chat/message.rs b/crates/jacquard-api/src/place_stream/chat/message.rs index 86eaa2da..237d8f1e 100644 --- a/crates/jacquard-api/src/place_stream/chat/message.rs +++ b/crates/jacquard-api/src/place_stream/chat/message.rs @@ -39,6 +39,19 @@ pub struct Message<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Message<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MessageRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/chat/profile.rs b/crates/jacquard-api/src/place_stream/chat/profile.rs index 27720c00..46e129db 100644 --- a/crates/jacquard-api/src/place_stream/chat/profile.rs +++ b/crates/jacquard-api/src/place_stream/chat/profile.rs @@ -44,6 +44,19 @@ pub struct Profile<'a> { pub color: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/key.rs b/crates/jacquard-api/src/place_stream/key.rs index 14fddc02..3de86ca2 100644 --- a/crates/jacquard-api/src/place_stream/key.rs +++ b/crates/jacquard-api/src/place_stream/key.rs @@ -32,6 +32,19 @@ pub struct Key<'a> { pub signing_key: jacquard_common::CowStr<'a>, } +impl<'a> Key<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, KeyRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/livestream.rs b/crates/jacquard-api/src/place_stream/livestream.rs index 5c3cf62a..3f5165e0 100644 --- a/crates/jacquard-api/src/place_stream/livestream.rs +++ b/crates/jacquard-api/src/place_stream/livestream.rs @@ -80,6 +80,19 @@ pub struct Livestream<'a> { pub url: Option>, } +impl<'a> Livestream<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, LivestreamRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/segment.rs b/crates/jacquard-api/src/place_stream/segment.rs index 0e49cb9e..1a2c46c8 100644 --- a/crates/jacquard-api/src/place_stream/segment.rs +++ b/crates/jacquard-api/src/place_stream/segment.rs @@ -86,6 +86,19 @@ pub struct Segment<'a> { pub video: Option>>, } +impl<'a> Segment<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SegmentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/place_stream/server/settings.rs b/crates/jacquard-api/src/place_stream/server/settings.rs index ac05c86a..06c5eab2 100644 --- a/crates/jacquard-api/src/place_stream/server/settings.rs +++ b/crates/jacquard-api/src/place_stream/server/settings.rs @@ -25,6 +25,19 @@ pub struct Settings<'a> { pub debug_recording: Option, } +impl<'a> Settings<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SettingsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/pub_leaflet/comment.rs b/crates/jacquard-api/src/pub_leaflet/comment.rs index 34cb4f7d..bf7d2389 100644 --- a/crates/jacquard-api/src/pub_leaflet/comment.rs +++ b/crates/jacquard-api/src/pub_leaflet/comment.rs @@ -58,6 +58,19 @@ pub struct Comment<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Comment<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CommentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/pub_leaflet/document.rs b/crates/jacquard-api/src/pub_leaflet/document.rs index 10d9ff48..bca4f60a 100644 --- a/crates/jacquard-api/src/pub_leaflet/document.rs +++ b/crates/jacquard-api/src/pub_leaflet/document.rs @@ -41,6 +41,19 @@ pub struct Document<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Document<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, DocumentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/pub_leaflet/graph/subscription.rs b/crates/jacquard-api/src/pub_leaflet/graph/subscription.rs index c6c4c862..4a899479 100644 --- a/crates/jacquard-api/src/pub_leaflet/graph/subscription.rs +++ b/crates/jacquard-api/src/pub_leaflet/graph/subscription.rs @@ -23,6 +23,19 @@ pub struct Subscription<'a> { pub publication: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Subscription<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SubscriptionRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/pub_leaflet/publication.rs b/crates/jacquard-api/src/pub_leaflet/publication.rs index d5d8ffdb..98cd3c02 100644 --- a/crates/jacquard-api/src/pub_leaflet/publication.rs +++ b/crates/jacquard-api/src/pub_leaflet/publication.rs @@ -44,6 +44,19 @@ pub struct Publication<'a> { pub theme: Option>, } +impl<'a> Publication<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PublicationRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/actor/profile.rs b/crates/jacquard-api/src/sh_tangled/actor/profile.rs index f2cc7ce4..8a741847 100644 --- a/crates/jacquard-api/src/sh_tangled/actor/profile.rs +++ b/crates/jacquard-api/src/sh_tangled/actor/profile.rs @@ -46,6 +46,19 @@ pub struct Profile<'a> { pub stats: Option>>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/feed/reaction.rs b/crates/jacquard-api/src/sh_tangled/feed/reaction.rs index 642cac65..08eb2095 100644 --- a/crates/jacquard-api/src/sh_tangled/feed/reaction.rs +++ b/crates/jacquard-api/src/sh_tangled/feed/reaction.rs @@ -26,6 +26,19 @@ pub struct Reaction<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Reaction<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ReactionRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/feed/star.rs b/crates/jacquard-api/src/sh_tangled/feed/star.rs index aa0d4230..d40f347f 100644 --- a/crates/jacquard-api/src/sh_tangled/feed/star.rs +++ b/crates/jacquard-api/src/sh_tangled/feed/star.rs @@ -23,6 +23,19 @@ pub struct Star<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Star<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StarRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/git/ref_update.rs b/crates/jacquard-api/src/sh_tangled/git/ref_update.rs index effcb9d4..5bfca533 100644 --- a/crates/jacquard-api/src/sh_tangled/git/ref_update.rs +++ b/crates/jacquard-api/src/sh_tangled/git/ref_update.rs @@ -123,6 +123,19 @@ pub struct RefUpdate<'a> { pub repo_name: jacquard_common::CowStr<'a>, } +impl<'a> RefUpdate<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RefUpdateRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/graph/follow.rs b/crates/jacquard-api/src/sh_tangled/graph/follow.rs index 55f1d7c5..0dc55904 100644 --- a/crates/jacquard-api/src/sh_tangled/graph/follow.rs +++ b/crates/jacquard-api/src/sh_tangled/graph/follow.rs @@ -23,6 +23,19 @@ pub struct Follow<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Follow<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, FollowRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/knot.rs b/crates/jacquard-api/src/sh_tangled/knot.rs index a0549a98..6cb8509d 100644 --- a/crates/jacquard-api/src/sh_tangled/knot.rs +++ b/crates/jacquard-api/src/sh_tangled/knot.rs @@ -25,6 +25,19 @@ pub struct Knot<'a> { pub created_at: jacquard_common::types::string::Datetime, } +impl<'a> Knot<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, KnotRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/knot/member.rs b/crates/jacquard-api/src/sh_tangled/knot/member.rs index da60daba..b3d451b4 100644 --- a/crates/jacquard-api/src/sh_tangled/knot/member.rs +++ b/crates/jacquard-api/src/sh_tangled/knot/member.rs @@ -27,6 +27,19 @@ pub struct Member<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Member<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MemberRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/label/definition.rs b/crates/jacquard-api/src/sh_tangled/label/definition.rs index 84c9b1dd..87748b5f 100644 --- a/crates/jacquard-api/src/sh_tangled/label/definition.rs +++ b/crates/jacquard-api/src/sh_tangled/label/definition.rs @@ -40,6 +40,19 @@ pub struct Definition<'a> { pub value_type: crate::sh_tangled::label::definition::ValueType<'a>, } +impl<'a> Definition<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, DefinitionRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/label/op.rs b/crates/jacquard-api/src/sh_tangled/label/op.rs index 45534f31..2b30d61d 100644 --- a/crates/jacquard-api/src/sh_tangled/label/op.rs +++ b/crates/jacquard-api/src/sh_tangled/label/op.rs @@ -28,6 +28,19 @@ pub struct Op<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Op<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, OpRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/pipeline.rs b/crates/jacquard-api/src/sh_tangled/pipeline.rs index 43d26a8e..b698180b 100644 --- a/crates/jacquard-api/src/sh_tangled/pipeline.rs +++ b/crates/jacquard-api/src/sh_tangled/pipeline.rs @@ -44,6 +44,19 @@ pub struct Pipeline<'a> { pub workflows: Vec>, } +impl<'a> Pipeline<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PipelineRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/pipeline/status.rs b/crates/jacquard-api/src/sh_tangled/pipeline/status.rs index 3e63f5ee..9e4a48c7 100644 --- a/crates/jacquard-api/src/sh_tangled/pipeline/status.rs +++ b/crates/jacquard-api/src/sh_tangled/pipeline/status.rs @@ -41,6 +41,19 @@ pub struct Status<'a> { pub workflow: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Status<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StatusRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/public_key.rs b/crates/jacquard-api/src/sh_tangled/public_key.rs index 5a99e70f..5f384036 100644 --- a/crates/jacquard-api/src/sh_tangled/public_key.rs +++ b/crates/jacquard-api/src/sh_tangled/public_key.rs @@ -30,6 +30,19 @@ pub struct PublicKey<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> PublicKey<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PublicKeyRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo.rs b/crates/jacquard-api/src/sh_tangled/repo.rs index 774945b3..3e0e6613 100644 --- a/crates/jacquard-api/src/sh_tangled/repo.rs +++ b/crates/jacquard-api/src/sh_tangled/repo.rs @@ -76,6 +76,19 @@ pub struct Repo<'a> { pub spindle: Option>, } +impl<'a> Repo<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RepoRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/artifact.rs b/crates/jacquard-api/src/sh_tangled/repo/artifact.rs index 43444ae3..c1f44434 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/artifact.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/artifact.rs @@ -34,6 +34,19 @@ pub struct Artifact<'a> { pub tag: bytes::Bytes, } +impl<'a> Artifact<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ArtifactRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/collaborator.rs b/crates/jacquard-api/src/sh_tangled/repo/collaborator.rs index 5811100a..51a27b92 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/collaborator.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/collaborator.rs @@ -26,6 +26,19 @@ pub struct Collaborator<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Collaborator<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CollaboratorRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/issue.rs b/crates/jacquard-api/src/sh_tangled/repo/issue.rs index fc4f9c45..505fed1b 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/issue.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/issue.rs @@ -33,6 +33,19 @@ pub struct Issue<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Issue<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, IssueRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/issue/comment.rs b/crates/jacquard-api/src/sh_tangled/repo/issue/comment.rs index c0f2c545..86c0c584 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/issue/comment.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/issue/comment.rs @@ -30,6 +30,19 @@ pub struct Comment<'a> { pub reply_to: Option>, } +impl<'a> Comment<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CommentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/issue/state.rs b/crates/jacquard-api/src/sh_tangled/repo/issue/state.rs index cc06b71c..5dd43572 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/issue/state.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/issue/state.rs @@ -29,6 +29,19 @@ pub struct State<'a> { pub state: jacquard_common::CowStr<'a>, } +impl<'a> State<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StateRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/pull.rs b/crates/jacquard-api/src/sh_tangled/repo/pull.rs index 7898c5d7..e5a8e6ba 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/pull.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/pull.rs @@ -40,6 +40,19 @@ pub struct Pull<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Pull<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PullRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/pull/comment.rs b/crates/jacquard-api/src/sh_tangled/repo/pull/comment.rs index 8aa045e2..06d2c7ef 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/pull/comment.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/pull/comment.rs @@ -26,6 +26,19 @@ pub struct Comment<'a> { pub pull: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Comment<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CommentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/repo/pull/status.rs b/crates/jacquard-api/src/sh_tangled/repo/pull/status.rs index 89c5426b..7f06d000 100644 --- a/crates/jacquard-api/src/sh_tangled/repo/pull/status.rs +++ b/crates/jacquard-api/src/sh_tangled/repo/pull/status.rs @@ -30,6 +30,19 @@ pub struct Status<'a> { pub status: jacquard_common::CowStr<'a>, } +impl<'a> Status<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StatusRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/spindle.rs b/crates/jacquard-api/src/sh_tangled/spindle.rs index 483cf474..9e652248 100644 --- a/crates/jacquard-api/src/sh_tangled/spindle.rs +++ b/crates/jacquard-api/src/sh_tangled/spindle.rs @@ -23,6 +23,19 @@ pub struct Spindle<'a> { pub created_at: jacquard_common::types::string::Datetime, } +impl<'a> Spindle<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, SpindleRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/spindle/member.rs b/crates/jacquard-api/src/sh_tangled/spindle/member.rs index 69dd4914..f747feab 100644 --- a/crates/jacquard-api/src/sh_tangled/spindle/member.rs +++ b/crates/jacquard-api/src/sh_tangled/spindle/member.rs @@ -27,6 +27,19 @@ pub struct Member<'a> { pub subject: jacquard_common::types::string::Did<'a>, } +impl<'a> Member<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MemberRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_tangled/string.rs b/crates/jacquard-api/src/sh_tangled/string.rs index f7e7d98e..8a14b5bb 100644 --- a/crates/jacquard-api/src/sh_tangled/string.rs +++ b/crates/jacquard-api/src/sh_tangled/string.rs @@ -30,6 +30,19 @@ pub struct String<'a> { pub filename: jacquard_common::CowStr<'a>, } +impl<'a> String<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, StringRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/actor/profile.rs b/crates/jacquard-api/src/sh_weaver/actor/profile.rs index ecbf4ba0..508f0a13 100644 --- a/crates/jacquard-api/src/sh_weaver/actor/profile.rs +++ b/crates/jacquard-api/src/sh_weaver/actor/profile.rs @@ -64,6 +64,19 @@ pub struct Profile<'a> { pub tangled: Option, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/edit/cursor.rs b/crates/jacquard-api/src/sh_weaver/edit/cursor.rs index 89b264e5..6afecbfa 100644 --- a/crates/jacquard-api/src/sh_weaver/edit/cursor.rs +++ b/crates/jacquard-api/src/sh_weaver/edit/cursor.rs @@ -101,6 +101,19 @@ pub struct Cursor<'a> { pub side: Option>, } +impl<'a> Cursor<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, CursorRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/edit/diff.rs b/crates/jacquard-api/src/sh_weaver/edit/diff.rs index 19cc563d..6bfe4aa9 100644 --- a/crates/jacquard-api/src/sh_weaver/edit/diff.rs +++ b/crates/jacquard-api/src/sh_weaver/edit/diff.rs @@ -27,6 +27,19 @@ pub struct Diff<'a> { pub snapshot: jacquard_common::types::blob::Blob<'a>, } +impl<'a> Diff<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, DiffRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/edit/root.rs b/crates/jacquard-api/src/sh_weaver/edit/root.rs index 375e8dda..5674b5e9 100644 --- a/crates/jacquard-api/src/sh_weaver/edit/root.rs +++ b/crates/jacquard-api/src/sh_weaver/edit/root.rs @@ -29,6 +29,19 @@ pub struct Root<'a> { pub uri: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Root<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RootRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/notebook/authors.rs b/crates/jacquard-api/src/sh_weaver/notebook/authors.rs index a399c060..aac852c6 100644 --- a/crates/jacquard-api/src/sh_weaver/notebook/authors.rs +++ b/crates/jacquard-api/src/sh_weaver/notebook/authors.rs @@ -68,6 +68,19 @@ pub struct Authors<'a> { pub created_at: Option, } +impl<'a> Authors<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, AuthorsRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/notebook/book.rs b/crates/jacquard-api/src/sh_weaver/notebook/book.rs index e74e49a9..b900376f 100644 --- a/crates/jacquard-api/src/sh_weaver/notebook/book.rs +++ b/crates/jacquard-api/src/sh_weaver/notebook/book.rs @@ -37,6 +37,19 @@ pub struct Book<'a> { pub title: Option>, } +impl<'a> Book<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BookRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/notebook/chapter.rs b/crates/jacquard-api/src/sh_weaver/notebook/chapter.rs index ed6b06b1..e1d4b0a4 100644 --- a/crates/jacquard-api/src/sh_weaver/notebook/chapter.rs +++ b/crates/jacquard-api/src/sh_weaver/notebook/chapter.rs @@ -38,6 +38,19 @@ pub struct Chapter<'a> { pub title: Option>, } +impl<'a> Chapter<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ChapterRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/notebook/entry.rs b/crates/jacquard-api/src/sh_weaver/notebook/entry.rs index b95d9d4b..3c10e2af 100644 --- a/crates/jacquard-api/src/sh_weaver/notebook/entry.rs +++ b/crates/jacquard-api/src/sh_weaver/notebook/entry.rs @@ -38,6 +38,19 @@ pub struct Entry<'a> { pub title: crate::sh_weaver::notebook::Title<'a>, } +impl<'a> Entry<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, EntryRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/sh_weaver/publish/blob.rs b/crates/jacquard-api/src/sh_weaver/publish/blob.rs index f4d74102..d52b0925 100644 --- a/crates/jacquard-api/src/sh_weaver/publish/blob.rs +++ b/crates/jacquard-api/src/sh_weaver/publish/blob.rs @@ -24,6 +24,19 @@ pub struct Blob<'a> { pub upload: jacquard_common::types::blob::Blob<'a>, } +impl<'a> Blob<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, BlobRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_clippr/actor/profile.rs b/crates/jacquard-api/src/social_clippr/actor/profile.rs index 35524661..fd539ea4 100644 --- a/crates/jacquard-api/src/social_clippr/actor/profile.rs +++ b/crates/jacquard-api/src/social_clippr/actor/profile.rs @@ -37,6 +37,19 @@ pub struct Profile<'a> { pub display_name: jacquard_common::CowStr<'a>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_clippr/feed/clip.rs b/crates/jacquard-api/src/social_clippr/feed/clip.rs index 1aa8e8e8..76ba6222 100644 --- a/crates/jacquard-api/src/social_clippr/feed/clip.rs +++ b/crates/jacquard-api/src/social_clippr/feed/clip.rs @@ -54,6 +54,19 @@ pub struct Clip<'a> { pub url: jacquard_common::types::string::Uri<'a>, } +impl<'a> Clip<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ClipRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_clippr/feed/tag.rs b/crates/jacquard-api/src/social_clippr/feed/tag.rs index 4930e6be..fe627ef8 100644 --- a/crates/jacquard-api/src/social_clippr/feed/tag.rs +++ b/crates/jacquard-api/src/social_clippr/feed/tag.rs @@ -37,6 +37,19 @@ pub struct Tag<'a> { pub name: jacquard_common::CowStr<'a>, } +impl<'a> Tag<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, TagRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_grain/actor/profile.rs b/crates/jacquard-api/src/social_grain/actor/profile.rs index 1ac5ba5e..a8b6688c 100644 --- a/crates/jacquard-api/src/social_grain/actor/profile.rs +++ b/crates/jacquard-api/src/social_grain/actor/profile.rs @@ -38,6 +38,19 @@ pub struct Profile<'a> { pub display_name: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_grain/favorite.rs b/crates/jacquard-api/src/social_grain/favorite.rs index 18978c7f..f114bf8e 100644 --- a/crates/jacquard-api/src/social_grain/favorite.rs +++ b/crates/jacquard-api/src/social_grain/favorite.rs @@ -23,6 +23,19 @@ pub struct Favorite<'a> { pub subject: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Favorite<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, FavoriteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_grain/gallery.rs b/crates/jacquard-api/src/social_grain/gallery.rs index f196d77f..e8789e09 100644 --- a/crates/jacquard-api/src/social_grain/gallery.rs +++ b/crates/jacquard-api/src/social_grain/gallery.rs @@ -35,6 +35,19 @@ pub struct Gallery<'a> { pub title: jacquard_common::CowStr<'a>, } +impl<'a> Gallery<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, GalleryRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_grain/gallery/item.rs b/crates/jacquard-api/src/social_grain/gallery/item.rs index a2c7c3e4..f0731ba4 100644 --- a/crates/jacquard-api/src/social_grain/gallery/item.rs +++ b/crates/jacquard-api/src/social_grain/gallery/item.rs @@ -28,6 +28,19 @@ pub struct Item<'a> { pub position: Option, } +impl<'a> Item<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ItemRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_grain/photo.rs b/crates/jacquard-api/src/social_grain/photo.rs index cfcb09d0..c46811fa 100644 --- a/crates/jacquard-api/src/social_grain/photo.rs +++ b/crates/jacquard-api/src/social_grain/photo.rs @@ -35,6 +35,19 @@ pub struct Photo<'a> { pub photo: jacquard_common::types::blob::Blob<'a>, } +impl<'a> Photo<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PhotoRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_grain/photo/exif.rs b/crates/jacquard-api/src/social_grain/photo/exif.rs index fc20125a..00f7c7e4 100644 --- a/crates/jacquard-api/src/social_grain/photo/exif.rs +++ b/crates/jacquard-api/src/social_grain/photo/exif.rs @@ -59,6 +59,19 @@ pub struct Exif<'a> { pub photo: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Exif<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ExifRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_pmsky/proposal.rs b/crates/jacquard-api/src/social_pmsky/proposal.rs index 5a502227..2dc7ccea 100644 --- a/crates/jacquard-api/src/social_pmsky/proposal.rs +++ b/crates/jacquard-api/src/social_pmsky/proposal.rs @@ -64,6 +64,19 @@ pub struct Proposal<'a> { pub ver: Option, } +impl<'a> Proposal<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProposalRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_pmsky/vote.rs b/crates/jacquard-api/src/social_pmsky/vote.rs index 590cb908..402c60af 100644 --- a/crates/jacquard-api/src/social_pmsky/vote.rs +++ b/crates/jacquard-api/src/social_pmsky/vote.rs @@ -49,6 +49,19 @@ pub struct Vote<'a> { pub val: i64, } +impl<'a> Vote<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, VoteRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_psky/actor/profile.rs b/crates/jacquard-api/src/social_psky/actor/profile.rs index e3c81719..0e9eef30 100644 --- a/crates/jacquard-api/src/social_psky/actor/profile.rs +++ b/crates/jacquard-api/src/social_psky/actor/profile.rs @@ -25,6 +25,19 @@ pub struct Profile<'a> { pub nickname: Option>, } +impl<'a> Profile<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ProfileRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_psky/chat/message.rs b/crates/jacquard-api/src/social_psky/chat/message.rs index 5995a178..7f60c3b1 100644 --- a/crates/jacquard-api/src/social_psky/chat/message.rs +++ b/crates/jacquard-api/src/social_psky/chat/message.rs @@ -36,6 +36,19 @@ pub struct Message<'a> { pub room: jacquard_common::types::string::AtUri<'a>, } +impl<'a> Message<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, MessageRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/social_psky/chat/room.rs b/crates/jacquard-api/src/social_psky/chat/room.rs index 4a651fa8..b3b13874 100644 --- a/crates/jacquard-api/src/social_psky/chat/room.rs +++ b/crates/jacquard-api/src/social_psky/chat/room.rs @@ -46,6 +46,19 @@ pub struct Room<'a> { pub topic: Option>, } +impl<'a> Room<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, RoomRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/tools_smokesignal/blahg/content/post.rs b/crates/jacquard-api/src/tools_smokesignal/blahg/content/post.rs index 48b8856a..113647c3 100644 --- a/crates/jacquard-api/src/tools_smokesignal/blahg/content/post.rs +++ b/crates/jacquard-api/src/tools_smokesignal/blahg/content/post.rs @@ -65,6 +65,19 @@ pub struct Post<'a> { pub title: Option>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/uk_ewancroft/now.rs b/crates/jacquard-api/src/uk_ewancroft/now.rs index 771800d6..e19959f2 100644 --- a/crates/jacquard-api/src/uk_ewancroft/now.rs +++ b/crates/jacquard-api/src/uk_ewancroft/now.rs @@ -26,6 +26,19 @@ pub struct Now<'a> { pub text: jacquard_common::CowStr<'a>, } +impl<'a> Now<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, NowRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/uk_skyblur/post.rs b/crates/jacquard-api/src/uk_skyblur/post.rs index cbb5cdd0..fd1a3d9f 100644 --- a/crates/jacquard-api/src/uk_skyblur/post.rs +++ b/crates/jacquard-api/src/uk_skyblur/post.rs @@ -47,6 +47,19 @@ pub struct Post<'a> { pub visibility: jacquard_common::CowStr<'a>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/uk_skyblur/preference.rs b/crates/jacquard-api/src/uk_skyblur/preference.rs index 1e63a9d9..eeb8f223 100644 --- a/crates/jacquard-api/src/uk_skyblur/preference.rs +++ b/crates/jacquard-api/src/uk_skyblur/preference.rs @@ -23,6 +23,19 @@ pub struct Preference<'a> { pub my_page: crate::uk_skyblur::preference::MyPage<'a>, } +impl<'a> Preference<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PreferenceRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/us_polhem/blog/content.rs b/crates/jacquard-api/src/us_polhem/blog/content.rs index 70558329..9d8c3e5f 100644 --- a/crates/jacquard-api/src/us_polhem/blog/content.rs +++ b/crates/jacquard-api/src/us_polhem/blog/content.rs @@ -32,6 +32,19 @@ pub struct Content<'a> { pub slug: jacquard_common::CowStr<'a>, } +impl<'a> Content<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, ContentRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/us_polhem/blog/post.rs b/crates/jacquard-api/src/us_polhem/blog/post.rs index 96f0f447..41800b5b 100644 --- a/crates/jacquard-api/src/us_polhem/blog/post.rs +++ b/crates/jacquard-api/src/us_polhem/blog/post.rs @@ -52,6 +52,19 @@ pub struct Post<'a> { pub visibility: Option>, } +impl<'a> Post<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, PostRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/us_polhem/blog/tag.rs b/crates/jacquard-api/src/us_polhem/blog/tag.rs index 96107def..6fc7d399 100644 --- a/crates/jacquard-api/src/us_polhem/blog/tag.rs +++ b/crates/jacquard-api/src/us_polhem/blog/tag.rs @@ -31,6 +31,19 @@ pub struct Tag<'a> { pub slug: jacquard_common::CowStr<'a>, } +impl<'a> Tag<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, TagRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-api/src/win_tomo_x/pushat/allow.rs b/crates/jacquard-api/src/win_tomo_x/pushat/allow.rs index 06a948ea..a1f5ff59 100644 --- a/crates/jacquard-api/src/win_tomo_x/pushat/allow.rs +++ b/crates/jacquard-api/src/win_tomo_x/pushat/allow.rs @@ -26,6 +26,19 @@ pub struct Allow<'a> { pub created_at: jacquard_common::types::string::Datetime, } +impl<'a> Allow<'a> { + pub fn uri( + uri: impl Into>, + ) -> Result< + jacquard_common::types::uri::RecordUri<'a, AllowRecord>, + jacquard_common::types::uri::UriError, + > { + jacquard_common::types::uri::RecordUri::try_from_uri( + jacquard_common::types::string::AtUri::new_cow(uri.into())?, + ) + } +} + /// Typed wrapper for GetRecord response with this collection's record type. #[derive( serde::Serialize, diff --git a/crates/jacquard-common/src/types/uri.rs b/crates/jacquard-common/src/types/uri.rs index c7c56bbf..a3e81f21 100644 --- a/crates/jacquard-common/src/types/uri.rs +++ b/crates/jacquard-common/src/types/uri.rs @@ -1,10 +1,12 @@ use crate::{ CowStr, IntoStatic, - types::{aturi::AtUri, cid::Cid, did::Did, string::AtStrError}, + types::{ + aturi::AtUri, cid::Cid, collection::Collection, did::Did, nsid::Nsid, string::AtStrError, + }, }; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use smol_str::ToSmolStr; -use std::str::FromStr; +use std::{fmt::Display, marker::PhantomData, str::FromStr}; use url::Url; /// Generic URI with type-specific parsing @@ -165,3 +167,56 @@ impl IntoStatic for Uri<'_> { } } } + +#[repr(transparent)] +/// Collection type-annotated at:// URI +/// +/// Carries the corresponding collection type for fetching records easily +pub struct RecordUri<'a, R: Collection>(AtUri<'a>, PhantomData); + +impl<'a, R: Collection> RecordUri<'a, R> { + /// attepts to parse an at-uri as the corresponding collection + pub fn try_from_uri(uri: AtUri<'a>) -> Result { + if let Some(collection) = uri.collection() { + if collection.as_str() == R::NSID { + return Ok(Self(uri, PhantomData)); + } + } + Err(UriError::CollectionMismatch { + expected: R::NSID, + found: uri.collection().map(|c| c.clone().into_static()), + }) + } + + /// Spits out the internal un-typed AtUri + pub fn into_inner(self) -> AtUri<'a> { + self.0 + } + + /// Accesses the internal AtUri for use + pub fn as_uri(&self) -> &AtUri<'a> { + &self.0 + } +} + +impl Display for RecordUri<'_, R> { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + self.0.fmt(f) + } +} + +#[derive(Debug, Clone, PartialEq, thiserror::Error, miette::Diagnostic)] +/// Errors that can occur when parsing or validating collection type-annotated URIs +pub enum UriError { + /// Given at-uri didn't have the matching collection for the record + #[error("Collection mismatch: expected {expected}, found {found:?}")] + CollectionMismatch { + /// The collection of the record + expected: &'static str, + /// What the at-uri had + found: Option>, + }, + /// Couldn't parse the string as an AtUri + #[error("Invalid URI: {0}")] + InvalidUri(#[from] AtStrError), +} diff --git a/crates/jacquard-lexicon/src/codegen/structs.rs b/crates/jacquard-lexicon/src/codegen/structs.rs index ad70c210..177717f9 100644 --- a/crates/jacquard-lexicon/src/codegen/structs.rs +++ b/crates/jacquard-lexicon/src/codegen/structs.rs @@ -216,6 +216,12 @@ impl<'c> CodeGenerator<'c> { Ok(quote! { #struct_def + + impl<'a> #ident<'a> { + pub fn uri(uri: impl Into>) -> Result, jacquard_common::types::uri::UriError> { + jacquard_common::types::uri::RecordUri::try_from_uri(jacquard_common::types::string::AtUri::new_cow(uri.into())?) + } + } #(#unions)* #output_wrapper #from_impl diff --git a/crates/jacquard/src/client.rs b/crates/jacquard/src/client.rs index e62f8720..6b144074 100644 --- a/crates/jacquard/src/client.rs +++ b/crates/jacquard/src/client.rs @@ -32,6 +32,8 @@ use jacquard_common::types::blob::{Blob, MimeType}; use jacquard_common::types::collection::Collection; use jacquard_common::types::recordkey::{RecordKey, Rkey}; use jacquard_common::types::string::AtUri; +#[cfg(feature = "api")] +use jacquard_common::types::uri::RecordUri; use jacquard_common::xrpc::{ CallOptions, Response, XrpcClient, XrpcError, XrpcExt, XrpcRequest, XrpcResp, }; @@ -47,6 +49,7 @@ use jacquard_oauth::authstore::ClientAuthStore; use jacquard_oauth::client::OAuthSession; use jacquard_oauth::dpop::DpopExt; use jacquard_oauth::resolver::OAuthResolver; +use std::marker::PhantomData; use serde::Serialize; pub use token::FileAuthStore; @@ -484,7 +487,7 @@ pub trait AgentSessionExt: AgentSession + IdentityResolver { /// ``` fn get_record( &self, - uri: AtUri<'_>, + uri: &AtUri<'_>, ) -> impl Future, ClientError>> where R: Collection, @@ -555,21 +558,20 @@ pub trait AgentSessionExt: AgentSession + IdentityResolver { /// Fetches a record from the PDS. Returns an owned, parsed response. /// - /// `record_type` parameter should be the marker struct for the record (e.g. `PostRecord` for `Post`), rather than the Post itself (though it will intuit things correctly regardless). - /// This allows the compiler to better intuit the output type without turbofishing. + /// Takes an at:// URI annotated with the collection type, which be constructed with `R::uri(uri)` + /// where `R` is the type of record you want (e.g. `app_bsky::feed::post::Post::uri(uri)` for Bluesky posts). fn fetch_record( &self, - record_type: R, - uri: AtUri<'_>, + uri: &RecordUri<'_, R>, ) -> impl Future, ClientError>> where R: Collection, for<'a> CollectionOutput<'a, R>: IntoStatic>, for<'a> CollectionErr<'a, R>: IntoStatic>, { - let _ = record_type; + let uri = uri.as_uri(); async move { - let response = self.get_record::(uri.clone()).await?; + let response = self.get_record::(uri).await?; let response: Response = response.transmute(); let output = response .into_output() @@ -607,7 +609,7 @@ pub trait AgentSessionExt: AgentSession + IdentityResolver { /// ``` fn update_record( &self, - uri: AtUri<'_>, + uri: &AtUri<'_>, f: impl FnOnce(&mut R), ) -> impl Future, AgentError>> where @@ -620,7 +622,7 @@ pub trait AgentSessionExt: AgentSession + IdentityResolver { .entered(); // Fetch the record - Response where R::Record::Output<'de> = R<'de> - let response = self.get_record::(uri.clone()).await?; + let response = self.get_record::(uri).await?; // Parse to get R<'_> borrowing from response buffer let record = response.parse().map_err(|e| match e { diff --git a/examples/read_tangled_repo.rs b/examples/read_tangled_repo.rs index 13c87bd0..76711b7f 100644 --- a/examples/read_tangled_repo.rs +++ b/examples/read_tangled_repo.rs @@ -1,7 +1,6 @@ use clap::Parser; use jacquard::client::{AgentSessionExt, BasicClient}; -use jacquard::types::string::AtUri; -use jacquard_api::sh_tangled::repo::RepoRecord; +use jacquard_api::sh_tangled::repo::Repo; #[derive(Parser, Debug)] #[command(author, version, about = "Read a Tangled git repository record")] @@ -18,34 +17,34 @@ async fn main() -> miette::Result<()> { let args = Args::parse(); // Parse the at:// URI - let uri = AtUri::new(&args.uri)?; + let uri = Repo::uri(args.uri)?; // Create an unauthenticated agent for public record access let agent = BasicClient::unauthenticated(); - // Use Agent's fetch_record helper with the at:// URI & marker struct - let output = agent.fetch_record(RepoRecord, uri).await?; + // Use Agent's fetch_record helper with typed record URI + let output: Repo<'_> = agent.fetch_record(&uri).await?.into(); println!("Tangled Repository\n"); - println!("URI: {}", output.uri); - println!("Name: {}", output.value.name); + println!("URI: {}", uri); + println!("Name: {}", output.name); - if let Some(desc) = &output.value.description { + if let Some(desc) = &output.description { println!("Description: {}", desc); } - println!("Knot: {}", output.value.knot); - println!("Created: {}", output.value.created_at); + println!("Knot: {}", output.knot); + println!("Created: {}", output.created_at); - if let Some(source) = &output.value.source { + if let Some(source) = &output.source { println!("Source: {}", source.as_str()); } - if let Some(spindle) = &output.value.spindle { + if let Some(spindle) = &output.spindle { println!("CI Spindle: {}", spindle); } - if let Some(labels) = &output.value.labels { + if let Some(labels) = &output.labels { if !labels.is_empty() { println!( "Labels available: {}",