use crate::error::Result;
use crate::orm::Db;
pub(crate) async fn ensure_table(db: &Db) -> Result<()> {
sqlx::query(
"CREATE TABLE IF NOT EXISTS rustio_admin_meta (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
)",
)
.execute(db.pool())
.await?;
Ok(())
}
pub(crate) async fn get(db: &Db, key: &str) -> Result<Option<String>> {
let value =
sqlx::query_scalar::<_, String>("SELECT value FROM rustio_admin_meta WHERE key = $1")
.bind(key)
.fetch_optional(db.pool())
.await?;
Ok(value)
}
pub(crate) async fn set(db: &Db, key: &str, value: &str) -> Result<()> {
sqlx::query(
"INSERT INTO rustio_admin_meta (key, value) VALUES ($1, $2)
ON CONFLICT (key) DO UPDATE SET value = EXCLUDED.value",
)
.bind(key)
.bind(value)
.execute(db.pool())
.await?;
Ok(())
}