28 lines
809 B
Rust
28 lines
809 B
Rust
use crate::{optimize, types::News, upsert, upsert_batch};
|
|
use clickhouse::{error::Error, Client};
|
|
use serde::Serialize;
|
|
|
|
upsert!(News, "news");
|
|
upsert_batch!(News, "news");
|
|
optimize!("news");
|
|
|
|
pub async fn delete_where_symbols<T>(clickhouse_client: &Client, symbols: &[T]) -> Result<(), Error>
|
|
where
|
|
T: AsRef<str> + Serialize + Send + Sync,
|
|
{
|
|
clickhouse_client
|
|
.query("DELETE FROM news WHERE hasAny(symbols, ?) AND NOT hasAny(symbols, (SELECT groupArray(symbol) FROM assets))")
|
|
.bind(symbols)
|
|
.execute()
|
|
.await
|
|
}
|
|
|
|
pub async fn cleanup(clickhouse_client: &Client) -> Result<(), Error> {
|
|
clickhouse_client
|
|
.query(
|
|
"DELETE FROM news WHERE NOT hasAny(symbols, (SELECT groupArray(symbol) FROM assets))",
|
|
)
|
|
.execute()
|
|
.await
|
|
}
|