use crate::Result;
use async_trait::async_trait;
use unitycatalog_common::models::volumes::v1::*;
#[async_trait]
pub trait VolumeHandler<Cx = crate::api::RequestContext>: Send + Sync + 'static {
async fn list_volumes(
&self,
request: ListVolumesRequest,
context: Cx,
) -> Result<ListVolumesResponse>;
async fn create_volume(&self, request: CreateVolumeRequest, context: Cx) -> Result<Volume>;
async fn get_volume(&self, request: GetVolumeRequest, context: Cx) -> Result<Volume>;
async fn update_volume(&self, request: UpdateVolumeRequest, context: Cx) -> Result<Volume>;
async fn delete_volume(&self, request: DeleteVolumeRequest, context: Cx) -> Result<()>;
}