Skip to content

Commit ab2aa8c

Browse files
authored
fix/no unsubscribes (#16)
* fix: remove unsubscribe logic to see if that helps... * feat: properly update updated_at column
1 parent bff7f28 commit ab2aa8c

File tree

4 files changed

+23
-30
lines changed

4 files changed

+23
-30
lines changed

src/entrypoints/events/rpc_token_acct_updates.rs

+6-26
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::env;
22
use std::sync::{Arc, MutexGuard};
33

4+
use chrono::Utc;
45
use deadpool::managed::Object;
56
use deadpool_diesel::Manager;
67
use diesel::{update, ExpressionMethods, PgConnection, QueryDsl, RunQueryDsl};
@@ -66,32 +67,8 @@ pub async fn new_handler(
6667
token_acct_pubkey.to_string()
6768
);
6869

69-
let (mut subscription, unsubscribe) = account_subscribe_res.ok().unwrap();
70+
let (mut subscription, _) = account_subscribe_res.ok().unwrap();
7071

71-
let conn_manager_clone = Arc::clone(&conn_manager);
72-
task::spawn(async move {
73-
loop {
74-
// 10 minute timeout for the length of a session
75-
tokio::time::sleep(std::time::Duration::new(600, 0)).await;
76-
let mut timeout_flag_val: MutexGuard<bool> = timeout_flag_arc.lock().unwrap();
77-
if *timeout_flag_val {
78-
break;
79-
}
80-
81-
*timeout_flag_val = false;
82-
}
83-
println!(
84-
"timed out. unsubscribing from account: {}",
85-
token_acct_pubkey.to_string()
86-
);
87-
update_token_acct_with_status(
88-
token_acct_pubkey.to_string(),
89-
TokenAcctStatus::Enabled,
90-
conn_manager_clone,
91-
)
92-
.await;
93-
unsubscribe().await;
94-
});
9572
let conn_manager_clone_sub = Arc::clone(&conn_manager);
9673
while let Some(val) = subscription.next().await {
9774
let mut timeout_flag_val = timeout_flag.lock().unwrap();
@@ -223,7 +200,10 @@ async fn update_token_acct_with_status(
223200
update(
224201
token_accts::table.filter(token_accts::token_acct.eq(token_acct_query.to_string())),
225202
)
226-
.set(token_accts::dsl::status.eq(status_for_set))
203+
.set((
204+
token_accts::dsl::status.eq(status_for_set),
205+
token_accts::dsl::updated_at.eq(Utc::now()),
206+
))
227207
.get_result::<TokenAcct>(db)
228208
})
229209
.await;

src/entrypoints/http/post_watch_token_acct.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use crate::entities::token_accts::TokenAcct;
66
use crate::entities::token_accts::TokenAcctStatus;
77
use crate::entities::token_accts::WatchTokenBalancePayload;
88
use crate::entities::token_accts::WatchTokenBalanceResponse;
9+
use chrono::Utc;
910
use deadpool::managed::Object;
1011
use deadpool_diesel::Manager;
1112
use diesel::prelude::*;
@@ -146,6 +147,9 @@ fn update_token_acct_with_status(
146147
db: &mut PgConnection,
147148
) -> Result<TokenAcct, diesel::result::Error> {
148149
update(token_accts::table.filter(token_accts::token_acct.eq(token_acct_pubkey.to_string())))
149-
.set(token_accts::dsl::status.eq(token_acct_status.clone()))
150+
.set((
151+
token_accts::dsl::status.eq(token_acct_status.clone()),
152+
token_accts::dsl::updated_at.eq(Utc::now()),
153+
))
150154
.get_result::<TokenAcct>(db)
151155
}

src/services/balances.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,10 @@ pub async fn handle_token_acct_change(
114114
token_accts::table
115115
.filter(token_accts::token_acct.eq(token_balance.token_acct.clone())),
116116
)
117-
.set(token_accts::amount.eq(new_amount))
117+
.set((
118+
token_accts::amount.eq(new_amount),
119+
token_accts::dsl::updated_at.eq(Utc::now()),
120+
))
118121
.execute(conn)
119122
})
120123
.await??;
@@ -208,7 +211,10 @@ pub async fn handle_token_acct_in_tx(
208211
diesel::update(
209212
token_accts::table.filter(token_accts::token_acct.eq(token_account_update)),
210213
)
211-
.set(token_accts::status.eq(TokenAcctStatus::Watching))
214+
.set((
215+
token_accts::status.eq(TokenAcctStatus::Watching),
216+
token_accts::dsl::updated_at.eq(Utc::now()),
217+
))
212218
.execute(db)
213219
})
214220
.await??;

src/services/transactions.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,10 @@ pub async fn handle_token_acct_balance_tx(
104104
diesel::update(
105105
token_accts::table.filter(token_accts::token_acct.eq(token_acct_clone_4)),
106106
)
107-
.set(token_accts::amount.eq(new_balance))
107+
.set((
108+
token_accts::amount.eq(new_balance),
109+
token_accts::dsl::updated_at.eq(Utc::now()),
110+
))
108111
.execute(db)
109112
})
110113
.await??;

0 commit comments

Comments
 (0)