1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use crate::client::{
    schema,
    types::primitives::{
        Address,
        AssetId,
    },
    PaginatedResult,
};

#[derive(Copy, Clone, Debug)]
pub struct Balance {
    pub owner: Address,
    pub amount: u64,
    pub asset_id: AssetId,
}

// GraphQL Translation

impl From<schema::balance::Balance> for Balance {
    fn from(value: schema::balance::Balance) -> Self {
        Balance {
            owner: value.owner.into(),
            amount: value.amount.into(),
            asset_id: value.asset_id.into(),
        }
    }
}

impl From<schema::balance::BalanceConnection> for PaginatedResult<Balance, String> {
    fn from(conn: schema::balance::BalanceConnection) -> Self {
        PaginatedResult {
            cursor: conn.page_info.end_cursor,
            has_next_page: conn.page_info.has_next_page,
            has_previous_page: conn.page_info.has_previous_page,
            results: conn.edges.into_iter().map(|e| e.node.into()).collect(),
        }
    }
}