From 52025bf75fa63253ddebe560b949062c05ddeb5c Mon Sep 17 00:00:00 2001 From: Sunli Date: Mon, 2 May 2022 16:20:45 +0800 Subject: [PATCH] Update connection type --- examples | 2 +- src/types/connection/connection_type.rs | 49 +++++++++++++------------ src/types/connection/edge.rs | 16 ++++---- src/types/connection/mod.rs | 4 +- 4 files changed, 37 insertions(+), 34 deletions(-) diff --git a/examples b/examples index 22bc2e58..d359d0ea 160000 --- a/examples +++ b/examples @@ -1 +1 @@ -Subproject commit 22bc2e58689a2d5d76fbea687f008d134d45e660 +Subproject commit d359d0ea3116326daf753f08233219530b8ec10b diff --git a/src/types/connection/connection_type.rs b/src/types/connection/connection_type.rs index 1be0f889..cf831f2d 100644 --- a/src/types/connection/connection_type.rs +++ b/src/types/connection/connection_type.rs @@ -1,7 +1,10 @@ use std::{borrow::Cow, marker::PhantomData}; use crate::{ - connection::{edge::Edge, ConnectionNameType, EdgeNameType, PageInfo}, + connection::{ + edge::Edge, ConnectionNameType, DefaultConnectionName, DefaultEdgeName, EdgeNameType, + PageInfo, + }, types::connection::{CursorType, EmptyFields}, Object, ObjectType, OutputType, TypeName, }; @@ -10,24 +13,24 @@ use crate::{ /// /// Connection is the result of a query for `connection::query`. pub struct Connection< - Name, - EdgeName, Cursor, Node, ConnectionFields = EmptyFields, EdgeFields = EmptyFields, + Name = DefaultConnectionName, + EdgeName = DefaultEdgeName, > where - Name: ConnectionNameType, - EdgeName: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, ConnectionFields: ObjectType, EdgeFields: ObjectType, + Name: ConnectionNameType, + EdgeName: EdgeNameType, { _mark1: PhantomData, _mark2: PhantomData, /// All edges of the current page. - pub edges: Vec>, + pub edges: Vec>, /// Additional fields for connection object. pub additional_fields: ConnectionFields, /// If `true` means has previous page. @@ -36,14 +39,14 @@ pub struct Connection< pub has_next_page: bool, } -impl - Connection +impl + Connection where - Name: ConnectionNameType, - EdgeName: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, EdgeFields: ObjectType, + Name: ConnectionNameType, + EdgeName: EdgeNameType, { /// Create a new connection. #[inline] @@ -59,15 +62,15 @@ where } } -impl - Connection +impl + Connection where - Name: ConnectionNameType, - EdgeName: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, ConnectionFields: ObjectType, EdgeFields: ObjectType, + Name: ConnectionNameType, + EdgeName: EdgeNameType, { /// Create a new connection, it can have some additional fields. #[inline] @@ -88,15 +91,15 @@ where } #[Object(internal, name_type)] -impl - Connection +impl + Connection where - Name: ConnectionNameType, - EdgeName: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, ConnectionFields: ObjectType, EdgeFields: ObjectType, + Name: ConnectionNameType, + EdgeName: EdgeNameType, { /// Information to aid in pagination. async fn page_info(&self) -> PageInfo { @@ -110,7 +113,7 @@ where /// A list of edges. #[inline] - async fn edges(&self) -> &[Edge] { + async fn edges(&self) -> &[Edge] { &self.edges } @@ -121,15 +124,15 @@ where } } -impl TypeName - for Connection +impl TypeName + for Connection where - Name: ConnectionNameType, - EdgeName: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, ConnectionFields: ObjectType, EdgeFields: ObjectType, + Name: ConnectionNameType, + EdgeName: EdgeNameType, { #[inline] fn type_name() -> Cow<'static, str> { diff --git a/src/types/connection/edge.rs b/src/types/connection/edge.rs index 59b08a7d..6ed9df31 100644 --- a/src/types/connection/edge.rs +++ b/src/types/connection/edge.rs @@ -1,7 +1,7 @@ use std::{borrow::Cow, marker::PhantomData}; use crate::{ - connection::EmptyFields, + connection::{DefaultEdgeName, EmptyFields}, types::connection::{CursorType, EdgeNameType}, InputValueError, InputValueResult, ObjectType, OutputType, Scalar, ScalarType, SimpleObject, TypeName, Value, @@ -32,12 +32,12 @@ impl ScalarType for CursorScalar { /// An edge in a connection. #[derive(SimpleObject)] #[graphql(internal, name_type)] -pub struct Edge +pub struct Edge where - Name: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, EdgeFields: ObjectType, + Name: EdgeNameType, { #[graphql(skip)] _mark: PhantomData, @@ -49,12 +49,12 @@ where pub(crate) additional_fields: EdgeFields, } -impl TypeName for Edge +impl TypeName for Edge where - Name: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, EdgeFields: ObjectType, + Name: EdgeNameType, { #[inline] fn type_name() -> Cow<'static, str> { @@ -62,7 +62,7 @@ where } } -impl Edge +impl Edge where Name: EdgeNameType, Cursor: CursorType + Send + Sync, @@ -85,11 +85,11 @@ where } } -impl Edge +impl Edge where - Name: EdgeNameType, Cursor: CursorType + Send + Sync, Node: OutputType, + Name: EdgeNameType, { /// Create a new edge. #[inline] diff --git a/src/types/connection/mod.rs b/src/types/connection/mod.rs index bfebd798..718b39e0 100644 --- a/src/types/connection/mod.rs +++ b/src/types/connection/mod.rs @@ -194,7 +194,7 @@ pub async fn query, last: Option, f: F, -) -> Result> +) -> Result> where Name: ConnectionNameType, EdgeName: EdgeNameType, @@ -205,7 +205,7 @@ where EdgeFields: ObjectType, F: FnOnce(Option, Option, Option, Option) -> R, R: Future< - Output = Result, E>, + Output = Result, E>, >, E: Into, {