Update connection type
This commit is contained in:
parent
9f6efa3902
commit
52025bf75f
2
examples
2
examples
|
@ -1 +1 @@
|
|||
Subproject commit 22bc2e58689a2d5d76fbea687f008d134d45e660
|
||||
Subproject commit d359d0ea3116326daf753f08233219530b8ec10b
|
|
@ -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<Name>,
|
||||
_mark2: PhantomData<EdgeName>,
|
||||
/// All edges of the current page.
|
||||
pub edges: Vec<Edge<EdgeName, Cursor, Node, EdgeFields>>,
|
||||
pub edges: Vec<Edge<Cursor, Node, EdgeFields, EdgeName>>,
|
||||
/// 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<Name, EdgeName, Cursor, Node, EdgeFields>
|
||||
Connection<Name, EdgeName, Cursor, Node, EmptyFields, EdgeFields>
|
||||
impl<Cursor, Node, EdgeFields, Name, EdgeName>
|
||||
Connection<Cursor, Node, EmptyFields, EdgeFields, Name, EdgeName>
|
||||
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<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>
|
||||
Connection<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>
|
||||
impl<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>
|
||||
Connection<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>
|
||||
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<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>
|
||||
Connection<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>
|
||||
impl<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>
|
||||
Connection<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>
|
||||
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<EdgeName, Cursor, Node, EdgeFields>] {
|
||||
async fn edges(&self) -> &[Edge<Cursor, Node, EdgeFields, EdgeName>] {
|
||||
&self.edges
|
||||
}
|
||||
|
||||
|
@ -121,15 +124,15 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields> TypeName
|
||||
for Connection<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>
|
||||
impl<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName> TypeName
|
||||
for Connection<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>
|
||||
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> {
|
||||
|
|
|
@ -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<T: CursorType + Send + Sync> ScalarType for CursorScalar<T> {
|
|||
/// An edge in a connection.
|
||||
#[derive(SimpleObject)]
|
||||
#[graphql(internal, name_type)]
|
||||
pub struct Edge<Name, Cursor, Node, EdgeFields>
|
||||
pub struct Edge<Cursor, Node, EdgeFields, Name = DefaultEdgeName>
|
||||
where
|
||||
Name: EdgeNameType,
|
||||
Cursor: CursorType + Send + Sync,
|
||||
Node: OutputType,
|
||||
EdgeFields: ObjectType,
|
||||
Name: EdgeNameType,
|
||||
{
|
||||
#[graphql(skip)]
|
||||
_mark: PhantomData<Name>,
|
||||
|
@ -49,12 +49,12 @@ where
|
|||
pub(crate) additional_fields: EdgeFields,
|
||||
}
|
||||
|
||||
impl<Name, Cursor, Node, EdgeFields> TypeName for Edge<Name, Cursor, Node, EdgeFields>
|
||||
impl<Cursor, Node, EdgeFields, Name> TypeName for Edge<Cursor, Node, EdgeFields, Name>
|
||||
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<Name, Cursor, Node, EdgeFields> Edge<Name, Cursor, Node, EdgeFields>
|
||||
impl<Cursor, Node, EdgeFields, Name> Edge<Cursor, Node, EdgeFields, Name>
|
||||
where
|
||||
Name: EdgeNameType,
|
||||
Cursor: CursorType + Send + Sync,
|
||||
|
@ -85,11 +85,11 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
impl<Name, Cursor, Node> Edge<Name, Cursor, Node, EmptyFields>
|
||||
impl<Cursor, Node, Name> Edge<Cursor, Node, EmptyFields, Name>
|
||||
where
|
||||
Name: EdgeNameType,
|
||||
Cursor: CursorType + Send + Sync,
|
||||
Node: OutputType,
|
||||
Name: EdgeNameType,
|
||||
{
|
||||
/// Create a new edge.
|
||||
#[inline]
|
||||
|
|
|
@ -194,7 +194,7 @@ pub async fn query<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields, F
|
|||
first: Option<i32>,
|
||||
last: Option<i32>,
|
||||
f: F,
|
||||
) -> Result<Connection<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>>
|
||||
) -> Result<Connection<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>>
|
||||
where
|
||||
Name: ConnectionNameType,
|
||||
EdgeName: EdgeNameType,
|
||||
|
@ -205,7 +205,7 @@ where
|
|||
EdgeFields: ObjectType,
|
||||
F: FnOnce(Option<Cursor>, Option<Cursor>, Option<usize>, Option<usize>) -> R,
|
||||
R: Future<
|
||||
Output = Result<Connection<Name, EdgeName, Cursor, Node, ConnectionFields, EdgeFields>, E>,
|
||||
Output = Result<Connection<Cursor, Node, ConnectionFields, EdgeFields, Name, EdgeName>, E>,
|
||||
>,
|
||||
E: Into<Error>,
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue