show owner of boat in boat km list #344
@ -343,6 +343,14 @@ ORDER BY amount_seats DESC
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub async fn owner(&self, db: &SqlitePool) -> Option<User> {
|
||||
if let Some(owner_id) = self.owner {
|
||||
Some(User::find_by_id(db, owner_id as i32).await.unwrap())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn delete(&self, db: &SqlitePool) {
|
||||
sqlx::query!("DELETE FROM boat WHERE id=?", self.id)
|
||||
.execute(db)
|
||||
|
@ -5,6 +5,8 @@ use chrono::Datelike;
|
||||
use serde::Serialize;
|
||||
use sqlx::{FromRow, Row, SqlitePool};
|
||||
|
||||
use super::boat::Boat;
|
||||
|
||||
#[derive(Serialize, Clone)]
|
||||
pub struct BoatStat {
|
||||
pot_years: Vec<i32>,
|
||||
@ -26,7 +28,7 @@ impl BoatStat {
|
||||
let rows = sqlx::query(
|
||||
"
|
||||
SELECT
|
||||
boat.name,
|
||||
boat.id,
|
||||
location.name AS location,
|
||||
CAST(strftime('%Y', arrival) AS INTEGER) AS year,
|
||||
CAST(SUM(distance_in_km) AS INTEGER) AS rowed_km
|
||||
@ -49,7 +51,14 @@ impl BoatStat {
|
||||
.unwrap();
|
||||
|
||||
for row in rows {
|
||||
let name: String = row.get("name");
|
||||
let id: i32 = row.get("id");
|
||||
let boat = Boat::find_by_id(db, id).await.unwrap();
|
||||
let owner = if let Some(owner) = boat.owner(db).await {
|
||||
owner.name
|
||||
} else {
|
||||
String::from("Verein")
|
||||
};
|
||||
let name = format!("{} ({})", boat.name, owner);
|
||||
let location: String = row.get("location");
|
||||
let year: i32 = row.get("year");
|
||||
if year == 0 {
|
||||
|
Loading…
Reference in New Issue
Block a user