https://github.com/vdka/sqlite.swift
https://github.com/vdka/sqlite.swift
database sql sqlite swift
Last synced: about 2 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/vdka/sqlite.swift
- Owner: vdka
- License: mit
- Created: 2017-06-07T07:26:56.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2019-05-15T04:25:43.000Z (about 7 years ago)
- Last Synced: 2025-08-12T10:26:14.614Z (11 months ago)
- Topics: database, sql, sqlite, swift
- Language: Swift
- Size: 83 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
```swift
struct User: Equatable {
let firstName: String?
let lastName: String
let age: Float
let email: String
init(firstName: String?, lastName: String, age: Float, email: String) {
self.firstName = firstName
self.lastName = lastName
self.age = age
self.email = email
}
init(row: Database.Row) {
self.firstName = row.scan()
self.lastName = row.scan()
self.age = row.scan()
self.email = row.scan()
}
}
let db = try! Pool(filepath: databasePath)
let error = db.exec(
"""
CREATE TABLE users (
id INTEGER,
first_name TEXT,
last_name TEXT NOT NULL,
age FLOAT NOT NULL,
email TEXT NOT NULL UNIQUE,
PRIMARY KEY(id)
);
"""
).error
XCTAssertNil(error)
let u1 = User(firstName: "Thurstan", lastName: "Bussy", age: 34, email: "tbussy0@w3.org")
let u2 = User(firstName: "Zoe", lastName: "Shufflebotham", age: 66, email: "zshufflebotham1@accuweather.com")
let u3 = User(firstName: nil, lastName: "McKinstry", age: 33, email: "cmckinstry2@state.gov")
let u4 = User(firstName: "Valma", lastName: "Mulvin", age: 31, email: "vmulvin3@ustream.tv")
let users: [User] = [u1, u2, u3, u4]
for user in users {
let error = db.exec("INSERT INTO users (first_name, last_name, age, email) VALUES (?, ?, ?, ?)",
args: user.firstName, user.lastName, user.age, user.email).error
XCTAssertNil(error)
}
let rows = db.query("SELECT first_name, last_name, age, email FROM users ORDER BY age ASC")
for (row, expected) in zip(rows, users.sorted(by: { $0.age < $1.age })) {
let user = User(row: row)
XCTAssertNil(row.error)
XCTAssertEqual(user, expected)
}
let row = db.queryRow("SELECT first_name, last_name, age, email FROM users WHERE email LIKE '%@%.gov'")
let govEmployee = User(row: row)
XCTAssertNil(row.error)
XCTAssertEqual(govEmployee, u3)
```