diff --git a/backend/src/models/supplier.rs b/backend/src/models/supplier.rs index d13fd81..784a48e 100644 --- a/backend/src/models/supplier.rs +++ b/backend/src/models/supplier.rs @@ -57,21 +57,48 @@ impl CrudBackend for Supplier { } async fn create_inner(conn: &mut PgConnection, create: Self::Create) -> Result { - todo!() + sqlx::query_as!( + Supplier, + "INSERT INTO suppliers (name, phone, address) VALUES ($1, $2, $3) RETURNING *", + create.name, + create.phone, + create.address + ) + .fetch_one(&mut *conn) + .await + .map_err(Into::into) } async fn read_inner<'a>( conn: impl sqlx::prelude::Executor<'a, Database = sqlx::Postgres>, id: Self::Identifier, ) -> Result { - todo!() + sqlx::query_as!(Supplier, "SELECT * FROM suppliers WHERE id = $1", id) + .fetch_one(conn) + .await + .map_err(Into::into) } async fn update_inner(&mut self, conn: &mut PgConnection) -> Result<()> { - todo!() + sqlx::query_as!( + Supplier, + "UPDATE suppliers SET name = $1, phone = $2, address = $3 WHERE id = $4 RETURNING *", + self.name, + self.phone, + self.address, + self.id + ) + .fetch_one(&mut *conn) + .await + .map_err(Into::into) + .map(|_| ()) } async fn delete_inner(&self, conn: &mut PgConnection) -> Result<()> { - todo!() + sqlx::query_as!(Supplier, "DELETE FROM suppliers WHERE id = $1", self.id) + .execute(&mut *conn) + .await + .map_err(Into::into) + .map(|_| ()) } }