//! Operation module
//!
//! To create own operation implement trait for type
//!
//! ### Example
//!
//! ```rust,no_run
//! use sqlx_migrator::error::Error;
//! use sqlx_migrator::operation::OperationTrait;
//! use sqlx_migrator::sqlx::Sqlite;
//!
//! struct ExampleOperation;
//! #[async_trait::async_trait]
//! impl OperationTrait<Sqlite> for ExampleOperation {
//! async fn up(&self, connection: &mut sqlx::SqliteConnection) -> Result<(), Error> {
//! // Do some operations
//! Ok(())
//! }
//!
//! // By default operation is irreversible and cannot be reversed if you want to support
//! // reverse of migration than add down function as well
//! async fn down(&self, connection: &mut sqlx::SqliteConnection) -> Result<(), Error> {
//! // Do some operations
//! Ok(())
//! }
//! }
//! ```
use crate Error;
/// Trait for operation