forked from Ruderverein-Donau-Linz/rowt
clean db
This commit is contained in:
parent
64aefde8bc
commit
94a9d285be
@ -26,37 +26,30 @@ CREATE TABLE IF NOT EXISTS "trip_details" (
|
||||
"allow_guests" boolean NOT NULL default false,
|
||||
"notes" TEXT,
|
||||
"always_show" boolean NOT NULL default false,
|
||||
"trip_type_id" INTEGER,
|
||||
FOREIGN KEY(trip_type_id) REFERENCES trip_type(id)
|
||||
"trip_type_id" INTEGER REFERENCES trip_type(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "planned_event" (
|
||||
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"name" text NOT NULL,
|
||||
"planned_amount_cox" INTEGER unsigned NOT NULL,
|
||||
"trip_details_id" INTEGER NOT NULL,
|
||||
"trip_details_id" INTEGER NOT NULL REFERENCES TRIP_details(id) ON DELETE CASCADE,
|
||||
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY(trip_details_id) REFERENCES trip_details(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "trip" (
|
||||
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
"cox_id" INTEGER NOT NULL,
|
||||
"trip_details_id" INTEGER,
|
||||
"planned_event_id" INTEGER,
|
||||
"cox_id" INTEGER NOT NULL REFERENCES user(id),
|
||||
"trip_details_id" INTEGER REFERENCES trip_details(id) ON DELETE CASCADE,
|
||||
"planned_event_id" INTEGER REFERENCES planned_event(id) ON DELETE CASCADE,
|
||||
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY(cox_id) REFERENCES user(id),
|
||||
FOREIGN KEY(trip_details_id) REFERENCES trip_details(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY(planned_event_id) REFERENCES planned_event(id) ON DELETE CASCADE,
|
||||
CONSTRAINT unq UNIQUE (cox_id, planned_event_id) -- allow cox to participate only once for each planned event
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "user_trip" (
|
||||
"user_id" INTEGER NOT NULL,
|
||||
"trip_details_id" INTEGER NOT NULL,
|
||||
"user_id" INTEGER NOT NULL REFERENCES user(id),
|
||||
"trip_details_id" INTEGER NOT NULL REFERENCES trip_details(id),
|
||||
"created_at" text NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY(user_id) REFERENCES user(id),
|
||||
FOREIGN KEY(trip_details_id) REFERENCES trip_details(id),
|
||||
CONSTRAINT unq UNIQUE (user_id, trip_details_id) -- allow user to participate only once for each trip
|
||||
);
|
||||
|
||||
@ -103,9 +96,9 @@ CREATE TABLE IF NOT EXISTS "logbook" (
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "rower" (
|
||||
"logbook_id" INTEGER NOT NULL REFERENCES logbook(id),
|
||||
"logbook_id" INTEGER NOT NULL REFERENCES logbook(id) ON DELETE CASCADE,
|
||||
"rower_id" INTEGER NOT NULL REFERENCES user(id),
|
||||
CONSTRAINT unq UNIQUE (logbook_id, rower_id)
|
||||
CONSTRAINT unq UNIQUE (logbook_id, rower_id)
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "boat_damage" (
|
||||
|
@ -12,8 +12,8 @@ pub struct Logbook {
|
||||
pub shipmaster: i64,
|
||||
#[serde(default = "bool::default")]
|
||||
pub shipmaster_only_steering: bool,
|
||||
pub departure: String, //TODO: Switch to chrono::nativedatetime
|
||||
pub arrival: Option<String>, //TODO: Switch to chrono::nativedatetime
|
||||
pub departure: NaiveDateTime,
|
||||
pub arrival: Option<NaiveDateTime>,
|
||||
pub destination: Option<String>,
|
||||
pub distance_in_km: Option<i64>,
|
||||
pub comments: Option<String>,
|
||||
@ -114,7 +114,8 @@ ORDER BY departure DESC
|
||||
boat_id: row.boat_id,
|
||||
shipmaster: row.shipmaster,
|
||||
shipmaster_only_steering: row.shipmaster_only_steering,
|
||||
departure: row.departure.unwrap(),
|
||||
departure: NaiveDateTime::parse_from_str(&row.departure.unwrap(), "%Y-%m-%d %H:%M")
|
||||
.unwrap(),
|
||||
arrival: row.arrival,
|
||||
destination: row.destination,
|
||||
distance_in_km: row.distance_in_km,
|
||||
@ -125,12 +126,7 @@ ORDER BY departure DESC
|
||||
|
||||
let mut ret = Vec::new();
|
||||
for log in logs {
|
||||
let date_time_naive =
|
||||
NaiveDateTime::parse_from_str(&log.departure, "%Y-%m-%d %H:%M").unwrap();
|
||||
let date_time = Local
|
||||
.from_local_datetime(&date_time_naive)
|
||||
.single()
|
||||
.unwrap();
|
||||
let date_time = Local.from_local_datetime(&log.departure).single().unwrap();
|
||||
|
||||
ret.push(LogbookWithBoatAndRowers {
|
||||
rowers: Rower::for_log(db, &log).await,
|
||||
@ -313,12 +309,12 @@ ORDER BY departure DESC
|
||||
Ok(())
|
||||
}
|
||||
|
||||
// pub async fn delete(&self, db: &SqlitePool) {
|
||||
// sqlx::query!("DELETE FROM boat WHERE id=?", self.id)
|
||||
// .execute(db)
|
||||
// .await
|
||||
// .unwrap(); //Okay, because we can only create a User of a valid id
|
||||
// }
|
||||
pub async fn delete(&self, db: &SqlitePool) {
|
||||
sqlx::query!("DELETE FROM logbook WHERE id=?", self.id)
|
||||
.execute(db)
|
||||
.await
|
||||
.unwrap(); //Okay, because we can only create a Logbook of a valid id
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
@ -205,6 +205,28 @@ async fn home(
|
||||
home_logbook(db, data, logbook_id, &adminuser.user).await
|
||||
}
|
||||
|
||||
#[get("/<logbook_id>/delete")]
|
||||
async fn delete(
|
||||
db: &State<SqlitePool>,
|
||||
flash: Option<FlashMessage<'_>>,
|
||||
logbook_id: i32,
|
||||
_adminuser: AdminUser,
|
||||
) -> Flash<Redirect> {
|
||||
let logbook = Logbook::find_by_id(db, logbook_id).await;
|
||||
if let Some(logbook) = logbook {
|
||||
logbook.delete(db).await;
|
||||
Flash::success(
|
||||
Redirect::to("/log"),
|
||||
format!("Logbook with ID {} successfully deleted!", logbook_id),
|
||||
)
|
||||
} else {
|
||||
Flash::error(
|
||||
Redirect::to("/log"),
|
||||
format!("Logbook with ID {} could not be found!", logbook_id),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
pub fn routes() -> Vec<Route> {
|
||||
routes![
|
||||
index,
|
||||
@ -215,7 +237,8 @@ pub fn routes() -> Vec<Route> {
|
||||
home_kiosk,
|
||||
new_kiosk,
|
||||
show,
|
||||
show_kiosk
|
||||
show_kiosk,
|
||||
delete
|
||||
]
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user