use async_trait::async_trait;
use serde::{Deserialize, Serialize};
use crate::error::DbResult;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub(crate) enum DbState {
Ready,
Upgrading,
}
#[async_trait(?Send)]
#[allow(dead_code)]
pub(crate) trait Migrate {
async fn get_db_state(&self) -> DbResult<Option<DbState>>;
async fn set_db_state(&self, state: DbState) -> DbResult<()>;
async fn get_current_db_version(&self) -> DbResult<Option<String>>;
async fn set_current_db_version(&self, version: &str) -> DbResult<()>;
}