|
15 | 15 | @testable import App |
16 | 16 |
|
17 | 17 | import Dependencies |
| 18 | +import Fluent |
18 | 19 | import NIOConcurrencyHelpers |
19 | 20 | import PostgresNIO |
20 | 21 | import SQLKit |
@@ -181,6 +182,43 @@ extension AppTestCase { |
181 | 182 | } |
182 | 183 |
|
183 | 184 |
|
| 185 | +// FIXME: Move this once AppTestCase can be removed. These are helpers created during the transition to Swift Testing. |
| 186 | +extension Database { |
| 187 | + func renderSQL(_ builder: SQLSelectBuilder) -> String { |
| 188 | + renderSQL(builder.query) |
| 189 | + } |
| 190 | + |
| 191 | + func renderSQL(_ query: SQLExpression) -> String { |
| 192 | + var serializer = SQLSerializer(database: self as! SQLDatabase) |
| 193 | + query.serialize(to: &serializer) |
| 194 | + return serializer.sql |
| 195 | + } |
| 196 | + |
| 197 | + func binds(_ builder: SQLSelectBuilder?) -> [String] { |
| 198 | + binds(builder?.query) |
| 199 | + } |
| 200 | + |
| 201 | + func binds(_ query: SQLExpression?) -> [String] { |
| 202 | + var serializer = SQLSerializer(database: self as! SQLDatabase) |
| 203 | + query?.serialize(to: &serializer) |
| 204 | + return serializer.binds.reduce(into: []) { result, bind in |
| 205 | + switch bind { |
| 206 | + case let bind as Date: |
| 207 | + result.append(DateFormatter.filterParseFormatter.string(from: bind)) |
| 208 | + case let bind as Set<Package.PlatformCompatibility>: |
| 209 | + let s = bind.map(\.rawValue).sorted().joined(separator: ",") |
| 210 | + result.append("{\(s)}") |
| 211 | + case let bind as Set<ProductTypeSearchFilter.ProductType>: |
| 212 | + let s = bind.map(\.rawValue).sorted().joined(separator: ",") |
| 213 | + result.append("{\(s)}") |
| 214 | + default: |
| 215 | + result.append("\(bind)") |
| 216 | + } |
| 217 | + } |
| 218 | + } |
| 219 | +} |
| 220 | + |
| 221 | + |
184 | 222 | private func connect(to databaseName: String, _ environment: Environment) async throws -> PostgresClient { |
185 | 223 | await DotEnvFile.load(for: environment, fileio: .init(threadPool: .singleton)) |
186 | 224 | let host = Environment.get("DATABASE_HOST")! |
|
0 commit comments