use crate::database::errors::DatabaseError;
use crate::database::queries_result_views::utils::QueryResult;
use async_trait::async_trait;
use tokio_postgres::Client;
pub trait QueryResultView {
fn get_result(&self) -> QueryResult;
}
pub trait DatabaseQueryView: Send {
fn get_request(&self) -> String;
fn get_raw_request(&self) -> String;
}
#[async_trait]
pub trait Query {
type Output: QueryResultView;
type View: DatabaseQueryView;
async fn execute(&self, client: &Client) -> Result<Self::Output, DatabaseError>;
fn view(&self) -> &Self::View;
}