sqlorm 0.8.2

An ergonomic and type-safe ORM for database interactions
Documentation
use sqlorm::StatementExecutor;
mod common;

use common::create_clean_db;
use common::entities::{Jar, JarExecutor, User, UserExecutor};

#[tokio::test]
async fn test_user_soft_delete_method() {
    let pool = create_clean_db().await;
    let user = User::test_user("soft@example.com", "softuser")
        .save(&pool)
        .await
        .unwrap();
    let id = user.id;

    user.delete().execute(&pool).await.unwrap();

    let db_user: User = User::query()
        .filter(User::ID.eq(id))
        .fetch_one(&pool)
        .await
        .unwrap();

    assert!(
        db_user.deleted_at.is_some(),
        "Soft delete should set deleted_at"
    );
}

#[tokio::test]
async fn test_jar_hard_delete_method() {
    let pool = create_clean_db().await;
    let user = User::test_user("jarowner@example.com", "jarowner")
        .save(&pool)
        .await
        .unwrap();

    let jar = Jar::test_jar(user.id.clone(), "hardjar")
        .save(&pool)
        .await
        .unwrap();

    let id = jar.id;

    jar.delete().execute(&pool).await.unwrap();

    let maybe_jar: Option<Jar> = Jar::query()
        .filter(Jar::ID.eq(id))
        .fetch_optional(&pool)
        .await
        .unwrap();

    assert!(
        maybe_jar.is_none(),
        "Hard delete should physically remove Jar"
    );
}