af_iperps/graphql/registry.rs
1// use af_move_type::MoveInstance;
2// use af_sui_types::{Address, TypeTag, Version};
3// use futures::{Stream, StreamExt};
4// use sui_gql_client::GraphQlClient;
5// use sui_gql_client::queries::GraphQlClientExt as _;
6// use sui_gql_client::queries::outputs::DynamicField;
7
8// use super::Result as QResult;
9
10// pub(super) async fn query<C>(
11// client: &C,
12// registry_address: Address,
13// version: Option<Version>,
14// ) -> Result<impl Stream<Item = QResult<Address, C>> + '_, C::Error>
15// where
16// C: GraphQlClient,
17// {
18// let dfs = std::pin::pin!(client.object_dfs(registry_address, version, None).await);
19// let res = vec
20
21// while let Some(df) = dfs.next().await {
22// let (name, raw) = df?;
23
24// let DynamicField::Field(_raw) = raw else {
25// continue;
26// };
27// let TypeTag::Struct(name_type) = name.type_ else {
28// continue;
29// };
30// if let Ok(key) =
31// MoveInstance::<crate::keys::RegistryMarketInfo>::from_raw_struct(*name_type, &name.bcs)
32// {
33// yield key.value.ch_id.bytes;
34// }
35// }
36// // async_stream::try_stream! {
37// // let mut has_next_page = true;
38// // let mut cursor = None;
39// // while has_next_page {
40// // let (dfs, cursor_) = client
41// // .owner_df_contents(registry_address, version, None, cursor)
42// // .await?;
43// // cursor = cursor_;
44// // has_next_page = cursor.is_some();
45
46// // for (name, raw) in dfs {
47// // let DynamicField::Field(_raw) = raw else {
48// // continue;
49// // };
50// // let TypeTag::Struct(name_type) = name.type_ else {
51// // continue;
52// // };
53// // if let Ok(key) =
54// // MoveInstance::<crate::keys::RegistryMarketInfo>::from_raw_struct(*name_type, &name.bcs)
55// // {
56// // yield key.value.ch_id.bytes;
57// // }
58// // }
59// // }
60// // }
61// }