#relay #juniper #graphql

juniper_relay_connection

Juniper 的 Relay 风格分页

2 个版本

0.1.1 2022年10月15日
0.1.0 2022年10月15日

#17#juniper

MIT 许可证

18KB
348

Juniper Relay 连接

crates.io Released API docs CI MIT licensed

Juniper 的 Relay 风格分页。

这个库提供了一个名为 RelayConnection 的结构体,它可以返回到 Juniper GraphQL 模式,并实现了 relay 连接接口

示例

#[derive(GraphQLObject)]
struct Foo {
  id: i32,
}

impl RelayConnectionNode for Foo {
    type Cursor = i32;
    fn cursor(&self) -> Self::Cursor {
        self.id
    }
    fn connection_type_name() -> &'static str {
        "FooConnection"
    }
    fn edge_type_name() -> &'static str {
        "FooConnectionEdge"
    }
}

RelayConnection::new(first, after, last, before, |after, before, limit| {
    let sql = format!("SELECT (id) FROM foo WHERE id > {after} AND id < {before} LIMIT {limit}");
    let edges: Vec<Foo> = run_query(sql);
    Ok(edges)
})

依赖关系

~10MB
~217K SLoC