#![cfg(feature = "sqlite")]
use ormer::Model;
#[derive(Debug, Model, Clone)]
#[table = "test_auto_increment_users"]
struct TestUser {
#[primary(auto)]
id: i32,
name: String,
age: i32,
}
#[tokio::test]
async fn test_auto_increment_insert() -> Result<(), Box<dyn std::error::Error>> {
let db = ormer::Database::connect(ormer::DbType::Sqlite, ":memory:").await?;
db.create_table::<TestUser>().execute().await?;
let user1 = TestUser {
id: 0, name: "Alice".to_string(),
age: 25,
};
let user2 = TestUser {
id: 0, name: "Bob".to_string(),
age: 30,
};
db.insert(&user1).execute().await?;
db.insert(&user2).execute().await?;
let users: Vec<TestUser> = db.select::<TestUser>().collect::<Vec<TestUser>>().await?;
println!("Inserted users: {:?}", users);
assert_eq!(users.len(), 2, "Should have 2 users");
assert_ne!(users[0].id, 0, "First user id should be auto-generated");
assert_ne!(users[1].id, 0, "Second user id should be auto-generated");
assert_ne!(users[0].id, users[1].id, "User ids should be different");
assert_eq!(users[0].name, "Alice");
assert_eq!(users[0].age, 25);
assert_eq!(users[1].name, "Bob");
assert_eq!(users[1].age, 30);
println!("Auto increment test passed!");
Ok(())
}