use ormer::{Database, DbType, Model};
#[derive(Debug, Model)]
#[table = "test_drop_users"]
struct TestDropUser {
#[primary(auto)]
id: i32,
name: String,
age: i32,
}
#[derive(Debug, Model)]
#[table = "test_drop_roles"]
struct TestDropRole {
#[primary]
id: i32,
role_name: String,
}
#[tokio::test]
async fn test_drop_table_basic() {
let db = Database::connect(DbType::Turso, ":memory:").await.unwrap();
db.create_table::<TestDropUser>().await.unwrap();
db.insert(&TestDropUser {
id: 1,
name: "Alice".to_string(),
age: 20,
})
.await
.unwrap();
db.drop_table::<TestDropUser>().await.unwrap();
db.create_table::<TestDropUser>().await.unwrap();
db.drop_table::<TestDropUser>().await.unwrap();
}
#[tokio::test]
async fn test_drop_table_if_exists() {
let db = Database::connect(DbType::Turso, ":memory:").await.unwrap();
db.drop_table::<TestDropRole>().await.unwrap();
db.create_table::<TestDropRole>().await.unwrap();
db.drop_table::<TestDropRole>().await.unwrap();
db.drop_table::<TestDropRole>().await.unwrap();
}
#[tokio::test]
async fn test_drop_multiple_tables() {
let db = Database::connect(DbType::Turso, ":memory:").await.unwrap();
db.create_table::<TestDropUser>().await.unwrap();
db.create_table::<TestDropRole>().await.unwrap();
db.insert(&TestDropUser {
id: 1,
name: "Bob".to_string(),
age: 25,
})
.await
.unwrap();
db.insert(&TestDropRole {
id: 1,
role_name: "admin".to_string(),
})
.await
.unwrap();
db.drop_table::<TestDropUser>().await.unwrap();
db.drop_table::<TestDropRole>().await.unwrap();
db.create_table::<TestDropUser>().await.unwrap();
db.create_table::<TestDropRole>().await.unwrap();
db.drop_table::<TestDropUser>().await.unwrap();
db.drop_table::<TestDropRole>().await.unwrap();
}
#[tokio::test]
async fn test_drop_table_and_recreate() {
let db = Database::connect(DbType::Turso, ":memory:").await.unwrap();
db.create_table::<TestDropUser>().await.unwrap();
db.insert(&TestDropUser {
id: 1,
name: "Charlie".to_string(),
age: 30,
})
.await
.unwrap();
db.insert(&TestDropUser {
id: 2,
name: "Diana".to_string(),
age: 28,
})
.await
.unwrap();
let users = db
.select::<TestDropUser>()
.collect::<Vec<_>>()
.await
.unwrap();
assert_eq!(users.len(), 2);
db.drop_table::<TestDropUser>().await.unwrap();
db.create_table::<TestDropUser>().await.unwrap();
let users = db
.select::<TestDropUser>()
.collect::<Vec<_>>()
.await
.unwrap();
assert_eq!(users.len(), 0);
db.drop_table::<TestDropUser>().await.unwrap();
}