67 lines
2.2 KiB
Rust
67 lines
2.2 KiB
Rust
use crate::{
|
|
models::{AutoIssuedTicket, IssuedTicket, NewTicket, Ticket},
|
|
schema::{drivers, issued_tickets, tickets},
|
|
};
|
|
use common::CommonTicket;
|
|
use diesel::prelude::*;
|
|
|
|
pub fn create_ticket(connection: &mut PgConnection, ticket: NewTicket) {
|
|
use crate::schema::tickets::dsl::*;
|
|
diesel::insert_into(tickets)
|
|
.values(&ticket)
|
|
.execute(connection)
|
|
.expect("Didn't save ticket AAAAAA");
|
|
}
|
|
|
|
pub fn get_tickets(connection: &mut PgConnection, driver_id: i32) -> Vec<CommonTicket> {
|
|
//Chonky join function for the sake of my life :))
|
|
let join = tickets::table
|
|
.left_join(issued_tickets::table.on(issued_tickets::driver.eq(driver_id)))
|
|
.select((
|
|
tickets::id,
|
|
tickets::category,
|
|
tickets::description,
|
|
tickets::issue_date,
|
|
));
|
|
let tickets_by_driver = join.load::<Ticket>(connection).expect("oh no!");
|
|
let common_ticket_output = tickets_by_driver
|
|
.iter()
|
|
.map(|ticket| CommonTicket {
|
|
id: ticket.id,
|
|
category: String::from(&ticket.category),
|
|
description: String::from(&ticket.description),
|
|
})
|
|
.collect();
|
|
return common_ticket_output;
|
|
}
|
|
|
|
pub fn get_ticket(connection: &mut PgConnection, tickid: i32) -> CommonTicket {
|
|
use crate::schema::tickets::dsl::*;
|
|
let ticket = &mut tickets
|
|
.filter(id.eq(tickid))
|
|
.limit(1)
|
|
.load::<Ticket>(connection)
|
|
.expect("no tickets :(")[0];
|
|
return CommonTicket {
|
|
id: ticket.id,
|
|
category: String::from(&ticket.category),
|
|
description: String::from(&ticket.description),
|
|
};
|
|
}
|
|
|
|
pub fn issue_ticket(connection: &mut PgConnection, issued_ticket: IssuedTicket) {
|
|
use crate::schema::issued_tickets::dsl::*;
|
|
diesel::insert_into(issued_tickets)
|
|
.values(issued_ticket)
|
|
.execute(connection)
|
|
.expect("PAINNNN IT NO WORKEY (issued tickets)");
|
|
}
|
|
|
|
pub fn auto_issue_ticket(connection: &mut PgConnection, issued_ticket: AutoIssuedTicket) {
|
|
use crate::schema::auto_issued_tickets::dsl::*;
|
|
diesel::insert_into(auto_issued_tickets)
|
|
.values(issued_ticket)
|
|
.execute(connection)
|
|
.expect("PAINNNN IT NO WORKEY (issued tickets)");
|
|
}
|