use std::fmt::Debug;
use crate::error::ScyllaxError;
use async_trait::async_trait;
use scylla::{
frame::value::{LegacySerializedValues, SerializeValuesError},
serialize::row::SerializeRow,
QueryResult,
};
pub type SerializedValuesResult = std::result::Result<LegacySerializedValues, SerializeValuesError>;
pub trait Query
where
Self: SerializeRow + Debug + Send + Sync + Sized,
{
fn query() -> String;
}
#[async_trait]
pub trait ReadQuery
where
Self: Query + std::hash::Hash + Sized + 'static,
{
type Output: Clone + Debug + Send + Sync;
async fn parse_response(rows: QueryResult) -> Result<Self::Output, ScyllaxError>;
fn coalesce() -> bool {
true
}
}
pub trait WriteQuery
where
Self: Query,
{
}