Turso + Actix
Actix 프로젝트에도 몇 분이면 Turso를 붙일 수 있어요. 이 가이드는 자격 증명 준비부터 libsql 크레이트 추가, 임베디드 레플리카로 SQL을 실행하는 웹 핸들러 작성까지 안내해요.
출처: 문서
본문
시작 전 준비물
시작하기 전에 다음을 확인해 주세요.
- Turso CLI 설치
- Turso 가입 또는 로그인
- Actix 앱 준비 — 자세히 알아보기
단계별 진행
1. 데이터베이스 자격 증명 가져오기
계속하려면 기존 데이터베이스가 필요해요. 없다면 먼저 데이터베이스를 만들어 주세요. 데이터베이스 URL과 인증 토큰을 확보한 뒤에는 환경 변수로 저장해 두는 편이 좋아요.
2. 프로젝트에 libsql 크레이트 추가하기
cargo add libsql
참고: 선택 사항으로,
.env파일을 다룰 때 도움이 되는dotenvy같은 패키지를 추가할 수도 있어요.cargo add dotenvy
3. SQL 실행하기
#[tokio::main]
#[actix_web::main]
async fn main() -> std::io::Result<()> {
HttpServer::new(|| App::new().route("/", web::get().to(index)).route("/items", web::get().to(get_items)))
.bind(("127.0.0.1", 8080))?
.run()
.await
}
async fn get_items() -> Result<HttpResponse, Error> {
dotenv().expect(".env file not found");
let db_url = env::var("TURSO_DATABASE_URL").unwrap();
let auth_token = env::var("TURSO_AUTH_TOKEN").unwrap();
let db_file = env::var("LOCAL_DB").unwrap();
let db = Builder::new_remote_replica(db_file, url, auth_token)
.read_your_writes(true)
.build()
.await
.unwrap();
let conn = db.connect().unwrap();
let mut results = conn.query("SELECT * FROM items", ()).await.unwrap();
let mut items: Vec<T> = Vec::new();
while let Some(row) = results.next().await.unwrap() {
let item: Item = Item {
task: row.get(0).unwrap(),
};
items.push(item);
}
Ok(HttpResponse::Ok().json(items))
}
예제 (Examples)
- Turso + Actix Web Traffic Tracker — github.com/tursodatabase/examples에서 전체 소스 코드를 볼 수 있어요.
더 알아보기 (Learn more)
- Rust 퀵스타트 — Rust용 libSQL 클라이언트 기본 사용법
- Axum 연동 가이드 — Axum 프레임워크에서 Turso 쓰기
- Rocket 연동 가이드 — Rocket 프레임워크에서 Turso 쓰기
- Tauri 연동 가이드 — 데스크톱 앱 Tauri에서 Turso 쓰기