Swift 레퍼런스
libSQL Swift 레퍼런스예요. 설치 방법부터 데이터베이스 연결 패턴, 동기화 옵션, 쿼리 API까지 한 번에 정리해 드릴게요.
출처: 문서
본문
Installing
먼저 이 저장소로 libsql을 Xcode 패키지 의존성으로 추가해 보세요: libSQL Swift — 소스 코드에서 빌드하는 방식이에요.
또는 SwiftPM 의존성에 추가할 수도 있어요:
import PackageDescription
let package = Package(
// ...
dependencies: [
.package(url: "https://github.com/tursodatabase/libsql-swift", from: "0.1.1"),
],
// ...
)
In-Memory Databases
libSQL은 영속성이 필요 없는 경우를 위해 인메모리 데이터베이스 연결을 지원해요:
import Libsql
let db = Database(":memory:")
let conn = try db.connect()
Local Development
SQLite 파일로 로컬에서 작업할 수 있어요:
import Libsql
let db = Database("local.db")
let conn = try db.connect()
Embedded Replicas
원격 URL에서 sync하고 쓰기를 원격 primary 데이터베이스에 위임하는 embedded replicas를 쓸 수 있어요:
import Libsql
let db = try Database(
path: "./local.db",
url: "TURSO_DATABASE_URL",
authToken: "TURSO_AUTH_TOKEN"
)
let conn = try db.connect()
Manual Sync
sync 함수로 로컬 데이터베이스와 원격을 수동으로 동기화할 수 있어요:
try db.sync() // Call sync manually to update local database
Sync Interval
syncInterval 파라미터로 데이터베이스를 백그라운드에서 자동 동기화하는 주기를 설정할 수 있어요:
import Libsql
let db = try Database(
path: "./local.db",
url: "TURSO_DATABASE_URL",
authToken: "TURSO_AUTH_TOKEN"
syncInterval: 300 // Sync every 3 seconds
)
let conn = try db.connect()
Read Your Own Writes
readYourWrites 파라미터는 같은 커넥션이 시작한 이후 읽기 작업에 쓰기 내용이 즉시 보이도록 커넥션을 설정해요. 기본으로 활성화되어 있고, 분산 시스템에서 쓰기 프로세스 관점의 일관성을 보장하는 데 특히 중요해요.
이 동작을 끄려면 false를 넘기면 돼요:
import Libsql
let db = try Database(
path: "./local.db",
url: <LIBSQL_URL>,
authToken: <LIBSQL_AUTH_TOKEN>,
readYourWrites: false
)
let conn = try db.connect()
Simple query
문자열을 query()에 넘겨 SQL 문을 실행할 수 있고, 선택적으로 인자도 줄 수 있어요:
Execute
try conn.execute("INSERT INTO users VALUES (?)", [1])
Query
try conn.query("SELECT * FROM users")
Arguments
try conn.query("SELECT * FROM users WHERE id = ?", [1])
Prepared Statements
prepare()로 캐시되는 문장을 준비한 다음 query()로 실행할 수 있어요:
let stmt = try conn.prepare("SELECT * FROM users WHERE id = ?")
stmt.bind([1])
stmt.query()
Placeholders
libSQL은 SQL 문 안에서 positional 및 named 플레이스홀더를 지원해요:
Positional
try conn.query("SELECT * FROM users WHERE id = ?", [1])
Named
try conn.query("SELECT * FROM users WHERE id = :id", [ ":id": 1 ])
더 알아보기 (Learn more)
- Swift 퀵스타트 — 처음부터 빠르게 시작하기
- Embedded Replicas — 로컬 읽기 복제본 개념 정리
- Rust 레퍼런스 — 다른 언어 SDK와 비교해 보기
- 데이터베이스 자격 증명 — URL과 토큰 발급 방법