first draft

This commit is contained in:
2023-10-29 18:42:12 +01:00
parent 5a596132ab
commit 09075989e3
4 changed files with 64 additions and 24 deletions

View File

@ -11,6 +11,7 @@ pub struct Logbook {
pub id: i64,
pub boat_id: i64,
pub shipmaster: i64,
pub steering_person: i64,
#[serde(default = "bool::default")]
pub shipmaster_only_steering: bool,
pub departure: NaiveDateTime,
@ -31,6 +32,7 @@ impl PartialEq for Logbook {
pub struct LogToAdd {
pub boat_id: i32,
pub shipmaster: i64,
pub steering_person: i64,
pub shipmaster_only_steering: bool,
pub departure: String,
pub arrival: Option<String>,
@ -43,6 +45,11 @@ pub struct LogToAdd {
#[derive(FromForm, Debug)]
pub struct LogToFinalize {
pub shipmaster: i64,
pub steering_person: i64,
pub shipmaster_only_steering: bool,
pub departure: String,
pub arrival: String,
pub destination: String,
pub distance_in_km: i64,
pub comments: Option<String>,
@ -56,6 +63,7 @@ pub struct LogbookWithBoatAndRowers {
pub logbook: Logbook,
pub boat: Boat,
pub shipmaster_user: User,
pub steering_user: User,
pub rowers: Vec<User>,
}
@ -93,7 +101,7 @@ impl Logbook {
sqlx::query_as!(
Self,
"
SELECT id,boat_id,shipmaster,shipmaster_only_steering,departure,arrival,destination,distance_in_km,comments,logtype
SELECT id,boat_id,shipmaster,steering_person,shipmaster_only_steering,departure,arrival,destination,distance_in_km,comments,logtype
FROM logbook
WHERE id like ?
",
@ -107,7 +115,7 @@ impl Logbook {
pub async fn on_water(db: &SqlitePool) -> Vec<LogbookWithBoatAndRowers> {
let rows = sqlx::query!(
"
SELECT id, boat_id, shipmaster, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype
SELECT id, boat_id, shipmaster,steering_person, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype
FROM logbook
WHERE arrival is null
ORDER BY departure DESC
@ -123,6 +131,7 @@ ORDER BY departure DESC
id: row.id,
boat_id: row.boat_id,
shipmaster: row.shipmaster,
steering_person: row.steering_person,
shipmaster_only_steering: row.shipmaster_only_steering,
departure: row.departure,
arrival: row.arrival,
@ -139,6 +148,9 @@ ORDER BY departure DESC
rowers: Rower::for_log(db, &log).await,
boat: Boat::find_by_id(db, log.boat_id as i32).await.unwrap(),
shipmaster_user: User::find_by_id(db, log.shipmaster as i32).await.unwrap(),
steering_user: User::find_by_id(db, log.steering_person as i32)
.await
.unwrap(),
logbook: log,
});
}
@ -149,7 +161,7 @@ ORDER BY departure DESC
let logs = sqlx::query_as!(
Logbook,
"
SELECT id, boat_id, shipmaster, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype
SELECT id, boat_id, shipmaster, steering_person, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype
FROM logbook
WHERE arrival is not null
ORDER BY departure DESC
@ -165,6 +177,9 @@ ORDER BY departure DESC
rowers: Rower::for_log(db, &log).await,
boat: Boat::find_by_id(db, log.boat_id as i32).await.unwrap(),
shipmaster_user: User::find_by_id(db, log.shipmaster as i32).await.unwrap(),
steering_user: User::find_by_id(db, log.steering_person as i32)
.await
.unwrap(),
logbook: log,
});
}
@ -252,9 +267,10 @@ ORDER BY departure DESC
//});
//let arrival = log.arrival.map(|a| format!("{}+02:00", a));
let inserted_row = sqlx::query!(
"INSERT INTO logbook(boat_id, shipmaster, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype) VALUES (?,?,?,?,?,?,?,?,?) RETURNING id",
"INSERT INTO logbook(boat_id, shipmaster, steering_person, shipmaster_only_steering, departure, arrival, destination, distance_in_km, comments, logtype) VALUES (?,?,?,?,?,?,?,?,?,?) RETURNING id",
log.boat_id,
log.shipmaster,
log.steering_person,
log.shipmaster_only_steering,
log.departure,
log.arrival,
@ -444,6 +460,7 @@ mod test {
LogToAdd {
boat_id: 3,
shipmaster: 4,
steering_person: 4,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -468,6 +485,7 @@ mod test {
LogToAdd {
boat_id: 999,
shipmaster: 5,
steering_person: 5,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -493,6 +511,7 @@ mod test {
LogToAdd {
boat_id: 5,
shipmaster: 5,
steering_person: 5,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -518,6 +537,7 @@ mod test {
LogToAdd {
boat_id: 2,
shipmaster: 5,
steering_person: 5,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -543,6 +563,7 @@ mod test {
LogToAdd {
boat_id: 3,
shipmaster: 5,
steering_person: 5,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: Some("2128-05-20T11:00".into()),
@ -568,6 +589,7 @@ mod test {
LogToAdd {
boat_id: 3,
shipmaster: 2,
steering_person: 2,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -593,6 +615,7 @@ mod test {
LogToAdd {
boat_id: 3,
shipmaster: 5,
steering_person: 5,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -618,6 +641,7 @@ mod test {
LogToAdd {
boat_id: 1,
shipmaster: 5,
steering_person: 5,
shipmaster_only_steering: false,
departure: "2128-05-20T12:00".into(),
arrival: None,
@ -666,6 +690,11 @@ mod test {
comments: Some("Perfect water".into()),
logtype: None,
rowers: vec![],
shipmaster: 2,
steering_person: 2,
shipmaster_only_steering: false,
departure: "1990-01-01T10:00".into(),
arrival: "1990-01-01T12:00".into(),
},
)
.await
@ -689,6 +718,11 @@ mod test {
comments: Some("Perfect water".into()),
logtype: None,
rowers: vec![],
shipmaster: 1,
steering_person: 1,
shipmaster_only_steering: false,
departure: "1990-01-01T10:00".into(),
arrival: "1990-01-01T12:00".into(),
},
)
.await;
@ -713,6 +747,11 @@ mod test {
comments: Some("Perfect water".into()),
logtype: None,
rowers: vec![1],
shipmaster: 2,
steering_person: 2,
shipmaster_only_steering: false,
departure: "1990-01-01T10:00".into(),
arrival: "1990-01-01T12:00".into(),
},
)
.await;