Skip to content

Commit 3635d70

Browse files
committed
count fixes
1 parent 190e8c8 commit 3635d70

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

Sources/Fluent/Query/Query.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,13 @@ extension QueryRepresentable {
161161

162162
let raw = try query.raw()
163163

164-
guard let count = raw[0, "_fluent_count"]?.int else {
164+
let count: Int
165+
166+
if let c = raw.int {
167+
count = c
168+
} else if let c = raw[0, "_fluent_count"]?.int {
169+
count = c
170+
} else {
165171
throw QueryError.notSupported("Count not supported.")
166172
}
167173

Tests/FluentTests/SQLSerializerTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ class SQLSerializerTests: XCTestCase {
7474
let sql = SQL.count(table: "users", filters: [], joins: [])
7575
let (statement, values) = serialize(sql)
7676

77-
XCTAssertEqual(statement, "SELECT COUNT(*) FROM `users`")
77+
XCTAssertEqual(statement, "SELECT COUNT(*) as _fluent_count FROM `users`")
7878
XCTAssert(values.isEmpty)
7979
}
8080

@@ -83,7 +83,7 @@ class SQLSerializerTests: XCTestCase {
8383
let sql = SQL.count(table: "users", filters: [filter], joins: [])
8484
let (statement, values) = serialize(sql)
8585

86-
XCTAssertEqual(statement, "SELECT COUNT(*) FROM `users` WHERE `users`.`age` >= ?")
86+
XCTAssertEqual(statement, "SELECT COUNT(*) as _fluent_count FROM `users` WHERE `users`.`age` >= ?")
8787
XCTAssertEqual(values.first?.int, 21)
8888
XCTAssertEqual(values.count, 1)
8989
}
@@ -94,7 +94,7 @@ class SQLSerializerTests: XCTestCase {
9494
let select = SQL.count(table: "friends", filters: [filter], joins: [])
9595
let (statement, values) = serialize(select)
9696

97-
XCTAssertEqual(statement, "SELECT COUNT(*) FROM `friends` WHERE `users`.`name` != ?")
97+
XCTAssertEqual(statement, "SELECT COUNT(*) as _fluent_count FROM `friends` WHERE `users`.`name` != ?")
9898
XCTAssertEqual(values.first?.string, "duck")
9999
XCTAssertEqual(values.count, 1)
100100
}
@@ -105,7 +105,7 @@ class SQLSerializerTests: XCTestCase {
105105
let select = SQL.count(table: "friends", filters: [filter], joins: [])
106106
let (statement, values) = serialize(select)
107107

108-
XCTAssertEqual(statement, "SELECT COUNT(*) FROM `friends` WHERE `users`.`name` LIKE ?")
108+
XCTAssertEqual(statement, "SELECT COUNT(*) as _fluent_count FROM `friends` WHERE `users`.`name` LIKE ?")
109109
XCTAssertEqual(values.first?.string, "duc%")
110110
XCTAssertEqual(values.count, 1)
111111
}

Tests/FluentTests/Utilities/Dummy.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ class DummyDriver: Driver {
3030
}
3131

3232
func query<T: Entity>(_ query: Query<T>) throws -> Node {
33+
if query.action == .count {
34+
return 0
35+
}
36+
3337
return .array([])
3438
}
3539

0 commit comments

Comments
 (0)