본문 바로가기
WIKI 기술 지식 베이스

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)