diff --git a/src/model/notification.rs b/src/model/notification.rs index 5c6c26d..ac480f6 100644 --- a/src/model/notification.rs +++ b/src/model/notification.rs @@ -8,25 +8,35 @@ pub struct Notification { pub user_id: i64, pub message: String, pub read_at: NaiveDateTime, + pub created_at: NaiveDateTime, pub category: String, + pub link: Option, } impl Notification { - //pub async fn create(db: &SqlitePool, msg: String) -> bool { - // sqlx::query!("INSERT INTO log(msg) VALUES (?)", msg,) - // .execute(db) - // .await - // .is_ok() - //} + pub async fn create( + db: &SqlitePool, + user: &User, + message: &str, + category: &str, + link: Option<&str>, + ) { + sqlx::query!( + "INSERT INTO notification(user_id, message, category, link) VALUES (?, ?, ?, ?)", + user.id, + message, + category, + link + ) + .execute(db) + .await + .unwrap() + } async fn for_user(db: &SqlitePool, user: &User) -> Vec { sqlx::query_as!( Log, - " -SELECT id, user_id, message, read_at, category -FROM notification -WHERE user_id = {} - ", + "SELECT * FROM notification WHERE user_id = {}", user.id ) .fetch_all(db) diff --git a/staging-diff.sql b/staging-diff.sql index e69de29..a87f58f 100644 --- a/staging-diff.sql +++ b/staging-diff.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS "notification" ( + "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, + "user_id" INTEGER NOT NULL REFERENCES user(id), + "message" TEXT NOT NULL, + "read_at" DATETIME, + "created_at" DATETIME DEFAULT CURRENT_TIMESTAMP, + "category" TEXT NOT NULL, + "link" TEXT +);