use bat_infrastructure::FileSystemCasRepository; use bat_core::repositories::cas_repository::CasRepository; #[tokio::main] async fn main() -> anyhow::Result<()> { println!("🎮 BlueArchiveToolkit - CAS 存储æŧ”į¤ē"); println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); // 创åģē CAS Repository let repo = FileSystemCasRepository::new("/tmp/bat-demo"); repo.init().await?; println!("✅ CAS å­˜å‚¨åˇ˛åˆå§‹åŒ–"); // 存储一ä盿•°æŽ println!("\nđŸ“Ļ å­˜å‚¨å¯ščąĄ..."); let data1 = b"Hello, Blue Archive!"; let id1 = repo.store(data1).await?; println!(" å­˜å‚¨å¯ščąĄ 1: {}", &id1[..16]); let data2 = b"This is a test file content"; let id2 = repo.store(data2).await?; println!(" å­˜å‚¨å¯ščąĄ 2: {}", &id2[..16]); // æĩ‹č¯•åŽģ重 println!("\n🔄 æĩ‹č¯•åŽģ重..."); let id1_dup = repo.store(data1).await?; println!(" į›¸åŒå†…åŽšå†æŦĄå­˜å‚¨: {}", &id1_dup[..16]); println!(" åŽģ重成功: {}", id1 == id1_dup); // čŽˇå–å¯ščąĄ println!("\nđŸ“Ĩ čŽˇå–å¯ščąĄ..."); let retrieved = repo.get(&id1).await?; println!(" 原始数捎: {:?}", String::from_utf8_lossy(data1)); println!(" čŽˇå–æ•°æŽ: {:?}", String::from_utf8_lossy(&retrieved)); println!(" 数捎厌整性: {}", data1 == retrieved.as_slice()); // æŖ€æŸĨ存在性 println!("\n🔍 æŖ€æŸĨå¯ščąĄå­˜åœ¨æ€§..."); println!(" å¯ščąĄ 1 存在: {}", repo.exists(&id1).await); println!(" å¯ščąĄ 2 存在: {}", repo.exists(&id2).await); println!(" ä¸å­˜åœ¨įš„å¯ščąĄ: {}", repo.exists(&"nonexistent".to_string()).await); println!("\n✅ æŧ”į¤ē厌成īŧ"); println!("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"); Ok(()) }