56 lines
997 B
Rust
56 lines
997 B
Rust
use serde::{Deserialize, Serialize};
|
|
use sqlx::{FromRow, SqlitePool};
|
|
|
|
#[derive(FromRow, Debug, Serialize, Deserialize, Clone)]
|
|
pub struct TripType {
|
|
pub id: i64,
|
|
name: String,
|
|
desc: String,
|
|
question: String,
|
|
icon: String,
|
|
}
|
|
|
|
impl TripType {
|
|
pub async fn find_by_id(db: &SqlitePool, id: i64) -> Option<Self> {
|
|
sqlx::query_as!(
|
|
Self,
|
|
"
|
|
SELECT id, name, desc, question, icon
|
|
FROM trip_type
|
|
WHERE id like ?
|
|
",
|
|
id
|
|
)
|
|
.fetch_one(db)
|
|
.await
|
|
.ok()
|
|
}
|
|
|
|
pub async fn all(db: &SqlitePool) -> Vec<Self> {
|
|
sqlx::query_as!(
|
|
Self,
|
|
"
|
|
SELECT id, name, desc, question, icon
|
|
FROM trip_type
|
|
"
|
|
)
|
|
.fetch_all(db)
|
|
.await
|
|
.unwrap() //TODO: fixme
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod test {
|
|
use crate::testdb;
|
|
|
|
use sqlx::SqlitePool;
|
|
|
|
#[sqlx::test]
|
|
fn test_find_true() {
|
|
let _ = testdb!();
|
|
}
|
|
|
|
//TODO: write tests
|
|
}
|