use async_trait::async_trait; use tracing::debug; use warden_core::pagination::{Connection, PaginationArgs}; use crate::schema::{ self, SchemaDriver, SchemaService, TransactionSchema, pagination::DecodedSchemaPagination, }; #[async_trait] impl SchemaDriver for SchemaService { #[tracing::instrument(skip(self, schema))] async fn create_schema( &self, kind: &str, version: &str, schema: &serde_json::Value, ) -> Result { schema::create_schema::create_schema(self, kind, version, schema).await } #[tracing::instrument(skip(self))] async fn delete_schema( &self, kind: &str, version: &str, ) -> Result<(), crate::ConfigurationError> { schema::delete_schema::delete_schema(self, kind, version).await } #[tracing::instrument(skip(self))] async fn get_schema( &self, kind: &str, version: &str, ) -> Result, crate::ConfigurationError> { schema::get_schema::get_schema(self, kind, version).await } #[tracing::instrument(skip(self, schema))] async fn update_schema( &self, kind: &str, version: &str, schema: &serde_json::Value, ) -> Result, crate::ConfigurationError> { schema::update_schema::update_schema(self, kind, version, schema).await } #[tracing::instrument(skip(self))] async fn list_schemas( &self, input: &PaginationArgs, limit: i64, ) -> Result, crate::ConfigurationError> { debug!("getting transaction schemas"); schema::list_schemas::list_schemas(self, input, limit).await } }