现在获取coinList的接口是rgbpp.infoList,定义如下:
infoList: _trpc_server.TRPCQueryProcedure<{
input: {
pageSize?: number | undefined;
pageIndex?: number | undefined;
};
output: {
data: {
symbol: string | null;
id: string;
name: string | null;
decimals: number | null;
icon: string | null;
tags: string[];
}[];
pagination: {
hasNext: boolean;
total?: number | undefined;
};
};
}>;
考虑到以下原因, 我们提出将 rgbpp.infoList 名改成 rgbpp.coinList,内含info、quote:
- infoList 名字不够明确,无法从名字得之该接口的用处,coinList 则更好地表达了意思
- infoList 返回的字段仅仅一些info,而实际需求页面里,出了获取代币的基础信息之外,还需要行情数据,且均在同一个列表里显示,当前端出现排序需求时,该接口很难满足;
- 由于 infoList 名字范围较广(它可以是任意资产的info),未来如果新增DOB资产列表的话,如果强制塞到infoList里,DOB和xUDT字段不同,有些牵强。如果将infoList 改为 coinList, 未来增加DOB资产列表,则可以定义一个dobList的接口,二者互不影响,更具有维护性。
修改后的接口定义大致如下:
coinList: _trpc_server.TRPCQueryProcedure<{
input: {
pageSize?: number | undefined;
pageIndex?: number | undefined;
};
output: {
data: {
info: {
symbol: string | null;
id: string;
name: string | null;
decimals: number | null;
icon: string | null;
tags: string[];
},
quote: {
totalSupply: string | null;
holderCount: {
network: "ckb" | "btc" | "doge" | "unknown";
count: number;
}[];
price: string | null;
marketCap: string | null;
volume24h: string | null;
priceChange24h: number | null;
circulatingSupply: string | null;
fdv: string | null;
txCount24h: number;
}
}[];
pagination: {
hasNext: boolean;
total?: number | undefined;
};
};
}>;
这里output.data里的info和quote分别是现在infoList返回和quote的返回值,是否需要加这一层由数据平台定,只要里面的元素是两者的合集就行。
现在获取coinList的接口是rgbpp.infoList,定义如下:
考虑到以下原因, 我们提出将 rgbpp.infoList 名改成 rgbpp.coinList,内含info、quote:
修改后的接口定义大致如下:
这里output.data里的
info和quote分别是现在infoList返回和quote的返回值,是否需要加这一层由数据平台定,只要里面的元素是两者的合集就行。