forked from Roflin/gamenight
35 lines
978 B
Rust
35 lines
978 B
Rust
use crate::schema::gamenight;
|
|
use chrono::{DateTime, Utc};
|
|
use diesel::{Insertable, PgConnection, QueryDsl, Queryable, RunQueryDsl, insert_into};
|
|
use serde::{Deserialize, Serialize};
|
|
use uuid::Uuid;
|
|
|
|
use super::error::DatabaseError;
|
|
|
|
#[derive(Serialize, Deserialize, Debug, Insertable, Queryable)]
|
|
#[diesel(table_name = gamenight)]
|
|
pub struct Gamenight {
|
|
pub id: Uuid,
|
|
pub name: String,
|
|
pub datetime: DateTime<Utc>,
|
|
pub owner_id: Uuid,
|
|
pub location_id: Option<Uuid>,
|
|
}
|
|
|
|
pub fn gamenights(conn: &mut PgConnection) -> Result<Vec<Gamenight>, DatabaseError> {
|
|
Ok(gamenight::table.load::<Gamenight>(conn)?)
|
|
}
|
|
|
|
pub fn add_gamenight(
|
|
conn: &mut PgConnection,
|
|
gamenight: Gamenight,
|
|
) -> Result<usize, DatabaseError> {
|
|
Ok(insert_into(gamenight::table)
|
|
.values(&gamenight)
|
|
.execute(conn)?)
|
|
}
|
|
|
|
pub fn get_gamenight(conn: &mut PgConnection, id: Uuid) -> Result<Gamenight, DatabaseError> {
|
|
Ok(gamenight::table.find(id).first(conn)?)
|
|
}
|