add ergo tool
This commit is contained in:
@ -14,7 +14,7 @@ impl Rower {
|
||||
sqlx::query_as!(
|
||||
User,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE id in (SELECT rower_id FROM rower WHERE logbook_id=?)
|
||||
",
|
||||
|
@ -14,6 +14,7 @@ use serde::{Deserialize, Serialize};
|
||||
use sqlx::{FromRow, Sqlite, SqlitePool, Transaction};
|
||||
|
||||
use super::{log::Log, tripdetails::TripDetails, Day};
|
||||
use crate::tera::admin::user::UserEditForm;
|
||||
|
||||
#[derive(FromRow, Debug, Serialize, Deserialize)]
|
||||
pub struct User {
|
||||
@ -24,6 +25,9 @@ pub struct User {
|
||||
pub is_admin: bool,
|
||||
pub is_guest: bool,
|
||||
pub is_tech: bool,
|
||||
pub dob: Option<String>,
|
||||
pub weight: Option<String>,
|
||||
pub sex: Option<String>,
|
||||
pub deleted: bool,
|
||||
pub last_access: Option<chrono::NaiveDateTime>,
|
||||
}
|
||||
@ -92,7 +96,7 @@ impl User {
|
||||
sqlx::query_as!(
|
||||
Self,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE id like ?
|
||||
",
|
||||
@ -107,7 +111,7 @@ WHERE id like ?
|
||||
sqlx::query_as!(
|
||||
Self,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE id like ?
|
||||
",
|
||||
@ -122,7 +126,7 @@ WHERE id like ?
|
||||
sqlx::query_as!(
|
||||
Self,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE name like ?
|
||||
",
|
||||
@ -164,7 +168,7 @@ WHERE name like ?
|
||||
sqlx::query_as!(
|
||||
Self,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE deleted = 0
|
||||
ORDER BY last_access DESC
|
||||
@ -175,11 +179,26 @@ ORDER BY last_access DESC
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub async fn ergo(db: &SqlitePool) -> Vec<Self> {
|
||||
sqlx::query_as!(
|
||||
Self,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE deleted = 0 AND dob is not null and weight is not null and sex is not null
|
||||
ORDER BY last_access DESC
|
||||
"
|
||||
)
|
||||
.fetch_all(db)
|
||||
.await
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
pub async fn cox(db: &SqlitePool) -> Vec<Self> {
|
||||
sqlx::query_as!(
|
||||
Self,
|
||||
"
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech
|
||||
SELECT id, name, pw, is_cox, is_admin, is_guest, deleted, last_access, is_tech, dob, weight, sex
|
||||
FROM user
|
||||
WHERE deleted = 0 AND is_cox=true
|
||||
ORDER BY last_access DESC
|
||||
@ -201,20 +220,16 @@ ORDER BY last_access DESC
|
||||
.is_ok()
|
||||
}
|
||||
|
||||
pub async fn update(
|
||||
&self,
|
||||
db: &SqlitePool,
|
||||
is_cox: bool,
|
||||
is_admin: bool,
|
||||
is_guest: bool,
|
||||
is_tech: bool,
|
||||
) {
|
||||
pub async fn update(&self, db: &SqlitePool, data: UserEditForm) {
|
||||
sqlx::query!(
|
||||
"UPDATE user SET is_cox = ?, is_admin = ?, is_guest = ?, is_tech = ? where id = ?",
|
||||
is_cox,
|
||||
is_admin,
|
||||
is_guest,
|
||||
is_tech,
|
||||
"UPDATE user SET is_cox = ?, is_admin = ?, is_guest = ?, is_tech = ?, dob = ?, weight = ?, sex = ? where id = ?",
|
||||
data.is_cox,
|
||||
data.is_admin,
|
||||
data.is_guest,
|
||||
data.is_tech,
|
||||
data.dob,
|
||||
data.weight,
|
||||
data.sex,
|
||||
self.id
|
||||
)
|
||||
.execute(db)
|
||||
|
Reference in New Issue
Block a user