Add CI/CD configuration and API documentation

This commit is contained in:
2026-07-01 21:40:53 +08:00
commit c590135d68
4168 changed files with 740252 additions and 0 deletions
@@ -0,0 +1,77 @@
import XCTest
import GRDB
class FetchRequestTests: GRDBTestCase {
func testRequestFetchCount() throws {
let request: SQLRequest<Int> = "SELECT * FROM table1"
let dbQueue = try makeDatabaseQueue()
try dbQueue.inDatabase { db in
try db.create(table: "table1") { t in
t.primaryKey("id", .integer)
}
try db.execute(sql: "INSERT INTO table1 DEFAULT VALUES")
try db.execute(sql: "INSERT INTO table1 DEFAULT VALUES")
let count = try request.fetchCount(db)
XCTAssertEqual(lastSQLQuery, "SELECT COUNT(*) FROM (SELECT * FROM table1)")
XCTAssertEqual(count, 2)
}
}
func testRequestAsSQLExpression() throws {
let request: SQLRequest<Int> = "SELECT id FROM table1"
let dbQueue = try makeDatabaseQueue()
try dbQueue.inDatabase { db in
try db.create(table: "table1") { t in
t.primaryKey("id", .integer)
}
let derivedExpression = request > 0
let sqlRequest: SQLRequest<Row> = "SELECT \(derivedExpression)"
let statement = try sqlRequest.makePreparedRequest(db, forSingleResult: false).statement
XCTAssertEqual(statement.sql, "SELECT (SELECT id FROM table1) > ?")
}
}
func testRequestAsSQLCollection() throws {
let request: SQLRequest<Int> = "SELECT id FROM table1"
let dbQueue = try makeDatabaseQueue()
try dbQueue.inDatabase { db in
try db.create(table: "table1") { t in
t.primaryKey("id", .integer)
}
do {
let derivedExpression = request.contains(0)
let sqlRequest: SQLRequest<Row> = "SELECT \(derivedExpression)"
let statement = try sqlRequest.makePreparedRequest(db, forSingleResult: false).statement
XCTAssertEqual(statement.sql, "SELECT ? IN (SELECT id FROM table1)")
}
do {
let derivedExpression = request.contains("arthur".databaseValue.collating(.nocase))
let sqlRequest: SQLRequest<Row> = "SELECT \(derivedExpression)"
let statement = try sqlRequest.makePreparedRequest(db, forSingleResult: false).statement
XCTAssertEqual(statement.sql, "SELECT (? COLLATE NOCASE) IN (SELECT id FROM table1)")
}
}
}
func testRequestInterpolation() throws {
let request: SQLRequest<Int> = "SELECT id FROM table1"
let dbQueue = try makeDatabaseQueue()
try dbQueue.inDatabase { db in
try db.create(table: "table1") { t in
t.primaryKey("id", .integer)
}
let sqlRequest: SQLRequest<Row> = "SELECT * FROM (\(request))"
let statement = try sqlRequest.makePreparedRequest(db, forSingleResult: false).statement
XCTAssertEqual(statement.sql, "SELECT * FROM (SELECT id FROM table1)")
}
}
}