added database crate, "settings" with migrations and queries, running migrations on web startup
This commit is contained in:
parent
f60eb616d3
commit
9c2b43ec3c
16 changed files with 357 additions and 1 deletions
57
crates/database/src/tables/settings.rs
Normal file
57
crates/database/src/tables/settings.rs
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
use crate::error::{handle_error, Error};
|
||||
use sqlx::sqlite::SqliteQueryResult;
|
||||
use sqlx::types::chrono::{DateTime, Utc};
|
||||
use sqlx::{FromRow, SqliteExecutor};
|
||||
|
||||
#[derive(FromRow)]
|
||||
pub struct Settings {
|
||||
pub id: i64,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub updated_at: DateTime<Utc>,
|
||||
pub business_name: Option<String>,
|
||||
pub business_logo: Option<Vec<u8>>,
|
||||
}
|
||||
|
||||
impl Settings {
|
||||
pub async fn init(conn: impl SqliteExecutor<'_>) -> Result<Option<()>, Error> {
|
||||
let query: SqliteQueryResult = sqlx::query_file!("queries/settings/init.sql")
|
||||
.execute(conn)
|
||||
.await
|
||||
.map_err(handle_error)?;
|
||||
|
||||
Ok((query.rows_affected() == 1).then_some(()))
|
||||
}
|
||||
|
||||
pub async fn get(conn: impl SqliteExecutor<'_>) -> Result<Self, Error> {
|
||||
sqlx::query_file_as!(Self, "queries/settings/get.sql")
|
||||
.fetch_one(conn)
|
||||
.await
|
||||
.map_err(handle_error)
|
||||
}
|
||||
|
||||
pub async fn set_business_name(
|
||||
conn: impl SqliteExecutor<'_>,
|
||||
value: Option<&str>,
|
||||
) -> Result<Option<()>, Error> {
|
||||
let query: SqliteQueryResult =
|
||||
sqlx::query_file!("queries/settings/set_business_name.sql", value)
|
||||
.execute(conn)
|
||||
.await
|
||||
.map_err(handle_error)?;
|
||||
|
||||
Ok((query.rows_affected() == 1).then_some(()))
|
||||
}
|
||||
|
||||
pub async fn set_business_logo(
|
||||
conn: impl SqliteExecutor<'_>,
|
||||
value: Option<&[u8]>,
|
||||
) -> Result<Option<()>, Error> {
|
||||
let query: SqliteQueryResult =
|
||||
sqlx::query_file!("queries/settings/set_business_logo.sql", value)
|
||||
.execute(conn)
|
||||
.await
|
||||
.map_err(handle_error)?;
|
||||
|
||||
Ok((query.rows_affected() == 1).then_some(()))
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue