Skip to content

Commit c94c223

Browse files
committed
added method for oracle,price,order_history
1 parent 4a437a2 commit c94c223

8 files changed

Lines changed: 154 additions & 29 deletions

File tree

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::oracle_price_aggregated::OraclePriceAggregated;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct OraclePriceAggrigatedDb {}
7+
pub struct OraclePriceAggrigatedDb {
8+
pub db: RocksDB,
9+
}
710

811
impl OraclePriceAggrigatedDb {
912
pub async fn query(
@@ -15,12 +18,26 @@ impl OraclePriceAggrigatedDb {
1518
todo!()
1619
}
1720
pub async fn put(&self, oracle: OraclePriceAggregated) -> Result<()> {
18-
todo!()
21+
match serde_json::to_string(&oracle) {
22+
Ok(value) => {
23+
let key = oracle.id.clone();
24+
self.db
25+
.put("oracle_price_aggregated", key.as_bytes(), value.as_bytes())?;
26+
Ok(())
27+
}
28+
Err(e) => Err(anyhow!(e)),
29+
}
1930
}
20-
pub async fn get(&self, id: String) -> Result<OraclePriceAggregated> {
21-
todo!()
31+
pub async fn get(&self, id: String) -> Option<OraclePriceAggregated> {
32+
match self.db.get("oracle_price_aggregated", id.as_bytes()) {
33+
Ok(Some(value)) => serde_json::from_slice(&value).ok(),
34+
_ => None,
35+
}
2236
}
2337
pub async fn delete(&self, id: String) -> Result<()> {
24-
todo!()
38+
match self.db.delete("oracle_price_aggregated", id.as_bytes()) {
39+
Ok(_) => Ok(()),
40+
Err(e) => Err(anyhow!(e)),
41+
}
2542
}
2643
}

lib/ain-ocean/src/data_acces/oracle_price_aggregated_interval.rs

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::oracle_price_aggregated_interval::OraclePriceAggregatedInterval;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct OraclePriceAggregatedIntervalDb {}
7+
pub struct OraclePriceAggregatedIntervalDb {
8+
pub db: RocksDB,
9+
}
710

811
impl OraclePriceAggregatedIntervalDb {
912
pub async fn query(
@@ -15,9 +18,26 @@ impl OraclePriceAggregatedIntervalDb {
1518
todo!()
1619
}
1720
pub async fn put(&self, oracle: OraclePriceAggregatedInterval) -> Result<()> {
18-
todo!()
21+
match serde_json::to_string(&oracle) {
22+
Ok(value) => {
23+
let key = oracle.id.clone();
24+
self.db.put(
25+
"oracle_price_aggregated_interval",
26+
key.as_bytes(),
27+
value.as_bytes(),
28+
)?;
29+
Ok(())
30+
}
31+
Err(e) => Err(anyhow!(e)),
32+
}
1933
}
2034
pub async fn delete(&self, id: String) -> Result<()> {
21-
todo!()
35+
match self
36+
.db
37+
.delete("oracle_price_aggregated_interval", id.as_bytes())
38+
{
39+
Ok(_) => Ok(()),
40+
Err(e) => Err(anyhow!(e)),
41+
}
2242
}
2343
}
Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,32 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::oracle_token_currency::OracleTokenCurrency;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct OracleTokenCurrencyDb {}
7+
pub struct OracleTokenCurrencyDb {
8+
pub db: RocksDB,
9+
}
710

811
impl OracleTokenCurrencyDb {
912
pub async fn query(&self, limit: i32, lt: String) -> Result<Vec<OracleTokenCurrency>> {
1013
todo!()
1114
}
1215
pub async fn put(&self, oracle_token: OracleTokenCurrency) -> Result<()> {
13-
todo!()
16+
match serde_json::to_string(&oracle_token) {
17+
Ok(value) => {
18+
let key = oracle_token.id.clone();
19+
self.db
20+
.put("oracle_token_currency", key.as_bytes(), value.as_bytes())?;
21+
Ok(())
22+
}
23+
Err(e) => Err(anyhow!(e)),
24+
}
1425
}
1526
pub async fn delete(&self, id: String) -> Result<()> {
16-
todo!()
27+
match self.db.delete("oracle_token_currency", id.as_bytes()) {
28+
Ok(_) => Ok(()),
29+
Err(e) => Err(anyhow!(e)),
30+
}
1731
}
1832
}
Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::oracle_history::OracleHistory;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct OracleHistoryDB {}
7+
8+
pub struct OracleHistoryDB {
9+
pub db: RocksDB,
10+
}
711

812
impl OracleHistoryDB {
913
pub async fn query(&self, oracleId: String, limit: i32, lt: String) -> Result<OracleHistory> {
1014
todo!()
1115
}
12-
pub async fn put(&self, oracleHistory: OracleHistory) -> Result<()> {
13-
todo!()
16+
17+
pub async fn store(&self, oracle_history: OracleHistory) -> Result<()> {
18+
match serde_json::to_string(&oracle_history) {
19+
Ok(value) => {
20+
let key = oracle_history.id.clone();
21+
self.db
22+
.put("oracle_history", key.as_bytes(), value.as_bytes())?;
23+
Ok(())
24+
}
25+
Err(e) => Err(anyhow!(e)),
26+
}
1427
}
1528
pub async fn delete(&self, id: String) -> Result<()> {
16-
todo!()
29+
match self.db.delete("oracle_history", id.as_bytes()) {
30+
Ok(_) => Ok(()),
31+
Err(e) => Err(anyhow!(e)),
32+
}
1733
}
1834
}
Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::poolswap::PoolSwap;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct PoolSwapDb {}
7+
pub struct PoolSwapDb {
8+
pub db: RocksDB,
9+
}
710

811
impl PoolSwapDb {
912
pub async fn query(&self, key: String, limit: i32, lt: String) -> Result<Vec<PoolSwap>> {
1013
todo!()
1114
}
12-
pub async fn put(&self, feed: PoolSwap) -> Result<()> {
13-
todo!()
15+
pub async fn put(&self, swap: PoolSwap) -> Result<()> {
16+
match serde_json::to_string(&swap) {
17+
Ok(value) => {
18+
let key = swap.id.clone();
19+
self.db.put("pool_swap", key.as_bytes(), value.as_bytes())?;
20+
Ok(())
21+
}
22+
Err(e) => Err(anyhow!(e)),
23+
}
1424
}
1525
pub async fn delete(&self, id: String) -> Result<()> {
16-
todo!()
26+
match self.db.delete("pool_swap", id.as_bytes()) {
27+
Ok(_) => Ok(()),
28+
Err(e) => Err(anyhow!(e)),
29+
}
1730
}
1831
}
Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::poolswap_aggregated::PoolSwapAggregated;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct PoolSwapAggregatedDb {}
7+
pub struct PoolSwapAggregatedDb {
8+
pub db: RocksDB,
9+
}
710

811
impl PoolSwapAggregatedDb {
912
pub async fn query(
@@ -15,12 +18,31 @@ impl PoolSwapAggregatedDb {
1518
todo!()
1619
}
1720
pub async fn put(&self, aggregated: PoolSwapAggregated) -> Result<()> {
18-
todo!()
21+
match serde_json::to_string(&aggregated) {
22+
Ok(value) => {
23+
let key = aggregated.id.clone();
24+
self.db
25+
.put("pool_swap_aggregated", key.as_bytes(), value.as_bytes())?;
26+
Ok(())
27+
}
28+
Err(e) => Err(anyhow!(e)),
29+
}
1930
}
2031
pub async fn get(&self, id: String) -> Result<PoolSwapAggregated> {
21-
todo!()
32+
match self.db.get("pool_swap_aggregated", id.as_bytes()) {
33+
Ok(Some(value)) => {
34+
let pool_swap: PoolSwapAggregated =
35+
serde_json::from_slice(&value).map_err(|e| anyhow!(e))?;
36+
Ok(pool_swap)
37+
}
38+
Ok(None) => Err(anyhow!("No data found for the given ID")),
39+
Err(e) => Err(anyhow!(e)),
40+
}
2241
}
2342
pub async fn delete(&self, id: String) -> Result<()> {
24-
todo!()
43+
match self.db.delete("pool_swap_aggregated", id.as_bytes()) {
44+
Ok(_) => Ok(()),
45+
Err(e) => Err(anyhow!(e)),
46+
}
2547
}
2648
}
Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,43 @@
1+
use crate::database::db_manger::ColumnFamilyOperations;
12
use crate::database::db_manger::RocksDB;
23
use crate::model::price_ticker::PriceTicker;
34
use anyhow::{anyhow, Result};
45
use serde::{Deserialize, Serialize};
56

6-
pub struct OraclePriceAggregatedIntervalDb {}
7+
pub struct price_ticker {
8+
pub db: RocksDB,
9+
}
710

8-
impl OraclePriceAggregatedIntervalDb {
11+
impl price_ticker {
912
pub async fn query(&self, limit: i32, lt: String) -> Result<Vec<PriceTicker>> {
1013
todo!()
1114
}
1215
pub async fn get(&self, id: String) -> Result<PriceTicker> {
13-
todo!()
16+
match self.db.get("price_ticker", id.as_bytes()) {
17+
Ok(Some(value)) => {
18+
let pool_swap: PriceTicker =
19+
serde_json::from_slice(&value).map_err(|e| anyhow!(e))?;
20+
Ok(pool_swap)
21+
}
22+
Ok(None) => Err(anyhow!("No data found for the given ID")),
23+
Err(e) => Err(anyhow!(e)),
24+
}
1425
}
1526
pub async fn put(&self, price: PriceTicker) -> Result<()> {
16-
todo!()
27+
match serde_json::to_string(&price) {
28+
Ok(value) => {
29+
let key = price.id.clone();
30+
self.db
31+
.put("price_ticker", key.as_bytes(), value.as_bytes())?;
32+
Ok(())
33+
}
34+
Err(e) => Err(anyhow!(e)),
35+
}
1736
}
1837
pub async fn delete(&self, id: String) -> Result<()> {
19-
todo!()
38+
match self.db.delete("price_ticker", id.as_bytes()) {
39+
Ok(_) => Ok(()),
40+
Err(e) => Err(anyhow!(e)),
41+
}
2042
}
2143
}

lib/ain-ocean/src/database/db_manger.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ use bitcoin::blockdata::block::Header;
55
use bitcoin::consensus::encode::serialize;
66
use rocksdb::Options;
77
use rocksdb::{ColumnFamilyDescriptor, IteratorMode, DB};
8+
use serde::Deserialize;
89
use std::collections::HashSet;
910
use std::sync::Arc;
1011

11-
#[derive(Clone, Debug)]
12+
#[derive(Debug)]
1213
pub struct RocksDB {
1314
db: Arc<DB>,
1415
cfs: HashSet<String>,

0 commit comments

Comments
 (0)