use chrono::NaiveDate; use sqlx::{Pool, Postgres}; use crate::feature::user::User; pub async fn create( name: &String, surname: &String, gender: bool, birth_date: &NaiveDate, email: &String, database_connection: &Pool, ) -> Result { sqlx::query_as!( User, r#" INSERT INTO "user"(name, surname, gender, birth_date, email, role_id) VALUES ($1, $2, $3, $4, $5, $6) RETURNING * "#, name, surname, gender, birth_date, email, 2 ) .fetch_one(database_connection) .await } pub async fn read( email: &String, database_connection: &Pool, ) -> Result { sqlx::query_as!( User, r#" SELECT * FROM "user" WHERE "email" = $1 "#, email ) .fetch_one(database_connection) .await } pub async fn update( id: i64, name: &String, surname: &String, gender: &bool, birth_date: &NaiveDate, email: &String, role_id: i64, database_connection: &Pool, ) -> Result { sqlx::query_as!(User, r#" UPDATE "user" SET "name" = $1, "surname" = $2, "gender" = $3, "birth_date" = $4, "email" = $5, "role_id" = $6 WHERE "id" = $7 RETURNING * "#, name, surname, gender, birth_date, email, role_id, id).fetch_one(database_connection).await } pub async fn delete(id: i64, database_connection: &Pool) -> Result { sqlx::query_as!( User, r#" DELETE FROM "user" where "id" = $1 RETURNING * "#, id ) .fetch_one(database_connection) .await }