// SPDX-FileCopyrightText: 2024 Simon Bruder // // SPDX-License-Identifier: AGPL-3.0-or-later use diesel::pg::PgConnection; use diesel::prelude::*; use uuid::Uuid; use crate::{models::*, schema}; pub fn add(conn: &mut PgConnection, new_item: NewItem) -> Result { diesel::insert_into(schema::items::table) .values(new_item) .returning(Item::as_returning()) .get_result(conn) } pub fn get(conn: &mut PgConnection, id: Uuid) -> Result { schema::items::table .filter(schema::items::id.eq(id)) .select(Item::as_select()) .first(conn) } pub fn get_all(conn: &mut PgConnection) -> Result, diesel::result::Error> { schema::items::table.select(Item::as_select()).load(conn) } pub fn update(conn: &mut PgConnection, id: Uuid, modified_item: NewItem) -> Result { diesel::update(schema::items::table.filter(schema::items::id.eq(id))) .set(modified_item) .returning(Item::as_returning()) .get_result(conn) }