Swift Query Data
Query Data
SELECT files live under queries/. Subdirectories become generated namespaces
and file names become generated method names.
queries/task/selectAll.sql
queries/task/selectById.sql
Basic SELECT
SELECT id, title, completed, created_at
FROM task
ORDER BY created_at DESC;
queries/task/selectAll.sql generates a Swift method under db.task:
let rows = try await db.task.selectAll().list()
for row in rows {
print(row.title)
}
Parameters
Named parameters become generated params objects.
SELECT id, title, completed, created_at
FROM task
WHERE id = :id;
let task = try await db.task
.selectById(TaskSelectByIdParams(id: 42))
.oneOrNull()
Result Cardinality
Use the runner method that matches the expected result shape:
asList()for zero or more rows.asOne()when exactly one row must exist.asOneOrNull()when zero or one row is valid.
Swift SELECT methods expose AsyncThrowingStream APIs for reactive reads:
for try await rows in db.task.selectAll().stream() {
tasks = rows
}