Files
poo-stack.rs/backend/src/ticket_data.rs
2022-12-25 23:37:07 +02:00

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)");
}