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(clickhouse_client: &Client, symbols: &[T]) -> Result<(), Error> where T: AsRef + 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 }