openbook-candles/src/structs/coingecko.rs

69 lines
1.5 KiB
Rust

use serde::Serialize;
use tokio_postgres::Row;
#[derive(Debug, Clone, Serialize)]
pub struct CoinGeckoOrderBook {
pub ticker_id: String,
pub timestamp: String, //as milliseconds
pub bids: Vec<(String, String)>,
pub asks: Vec<(String, String)>,
}
#[derive(Debug, Clone, Serialize)]
pub struct CoinGeckoPair {
pub ticker_id: String,
pub base: String,
pub target: String,
pub pool_id: String,
}
#[derive(Debug, Clone, Serialize)]
pub struct CoinGeckoTicker {
pub ticker_id: String,
pub address: String,
pub base_currency: String,
pub target_currency: String,
pub last_price: String,
pub base_volume: String,
pub target_volume: String,
// pub bid: String,
// pub ask: String,
pub high: String,
pub low: String,
}
#[derive(Debug, Default)]
pub struct PgCoinGecko24HourVolume {
pub address: String,
pub base_size: f64,
pub quote_size: f64,
}
impl PgCoinGecko24HourVolume {
pub fn from_row(row: Row) -> Self {
PgCoinGecko24HourVolume {
address: row.get(0),
base_size: row.get(1),
quote_size: row.get(2),
}
}
}
#[derive(Debug, Default)]
pub struct PgCoinGecko24HighLow {
pub address: String,
pub high: f64,
pub low: f64,
pub close: f64,
}
impl PgCoinGecko24HighLow {
pub fn from_row(row: Row) -> Self {
PgCoinGecko24HighLow {
address: row.get(0),
high: row.get(1),
low: row.get(2),
close: row.get(3),
}
}
}