SQLite driver implementation for the abstract Feather Database Swift API package.
- 🤝 SQLite driver for Feather Database
- 😱 Automatic query parameter escaping via Swift string interpolation.
- 🔄 Async sequence query results with
Decodablerow support. - 🧵 Designed for modern Swift concurrency
- 📚 DocC-based API Documentation
- ✅ Unit tests and code coverage
-
Swift 6.1+
-
Platforms:
- Linux
- macOS 15+
- iOS 18+
- tvOS 18+
- watchOS 11+
- visionOS 2+
Add the dependency to your Package.swift:
.package(url: "https://github.com/feather-framework/feather-sqlite-database", exact: "1.0.0-beta.1"),Then add FeatherSQLiteDatabase to your target dependencies:
.product(name: "FeatherSQLiteDatabase", package: "feather-sqlite-database"),API documentation is available at the following link.
Tip
Avoid calling database.execute while in a transaction; use the transaction connection instead.
import Logging
import SQLiteNIO
import FeatherDatabase
import FeatherSQLiteDatabase
var logger = Logger(label: "example")
logger.logLevel = .info
let connection = try await SQLiteConnection.open(
storage: .file(path: "/Users/me/db.sqlite"),
logger: logger
)
let database = SQLiteDatabaseClient(
connection: connection,
logger: logger
)
let result = try await database.execute(
query: #"""
SELECT
sqlite_version() AS "version"
WHERE
1=\#(1);
"""#
)
for try await item in result {
let version = try item.decode(column: "version", as: String.self)
print(version)
}
try await connection.close()Warning
This repository is a work in progress, things can break until it reaches v1.0.0.
The following database driver implementations are available for use:
- Build:
swift build - Test:
- local:
swift test - using Docker:
swift docker-test
- local:
- Format:
make format - Check:
make check
Pull requests are welcome. Please keep changes focused and include tests for new logic. 🙏