2025-06-04 22:15:38 +02:00
|
|
|
pub trait Georm<Id> {
|
|
|
|
/// Find all the entities in the database.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn find_all(
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
) -> impl ::std::future::Future<Output = ::sqlx::Result<Vec<Self>>> + Send
|
|
|
|
where
|
|
|
|
Self: Sized;
|
|
|
|
|
|
|
|
/// Find the entiy in the database based on its identifier.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn find(
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
id: &Id,
|
|
|
|
) -> impl std::future::Future<Output = sqlx::Result<Option<Self>>> + Send
|
|
|
|
where
|
|
|
|
Self: Sized;
|
|
|
|
|
|
|
|
/// Create the entity in the database.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn create(
|
|
|
|
&self,
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
) -> impl std::future::Future<Output = sqlx::Result<Self>> + Send
|
|
|
|
where
|
|
|
|
Self: Sized;
|
|
|
|
|
|
|
|
/// Update an entity with a matching identifier in the database.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn update(
|
|
|
|
&self,
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
) -> impl std::future::Future<Output = sqlx::Result<Self>> + Send
|
|
|
|
where
|
|
|
|
Self: Sized;
|
|
|
|
|
|
|
|
/// Update an entity with a matching identifier in the database if
|
|
|
|
/// it exists, create it otherwise.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn create_or_update(
|
|
|
|
&self,
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
) -> impl ::std::future::Future<Output = sqlx::Result<Self>>
|
|
|
|
where
|
2025-06-05 18:37:53 +02:00
|
|
|
Self: Sized;
|
2025-06-04 22:15:38 +02:00
|
|
|
|
|
|
|
/// Delete the entity from the database if it exists.
|
|
|
|
///
|
|
|
|
/// # Returns
|
|
|
|
/// Returns the amount of rows affected by the deletion.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn delete(
|
|
|
|
&self,
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
) -> impl std::future::Future<Output = sqlx::Result<u64>> + Send;
|
|
|
|
|
|
|
|
/// Delete any entity with the identifier `id`.
|
|
|
|
///
|
|
|
|
/// # Returns
|
|
|
|
/// Returns the amount of rows affected by the deletion.
|
|
|
|
///
|
|
|
|
/// # Errors
|
|
|
|
/// Returns any error Postgres may have encountered
|
|
|
|
fn delete_by_id(
|
|
|
|
pool: &sqlx::PgPool,
|
|
|
|
id: &Id,
|
|
|
|
) -> impl std::future::Future<Output = sqlx::Result<u64>> + Send;
|
|
|
|
|
|
|
|
/// Returns the identifier of the entity.
|
|
|
|
fn get_id(&self) -> &Id;
|
|
|
|
}
|