FilteredRequest
public protocol FilteredRequest
The protocol for all requests that can be filtered.
-
filter(_:
Default implementation) Creates a request with the provided predicate promise added to the eventual set of already applied predicates.
// SELECT * FROM player WHERE 1 var request = Player.all() request = request.filter { db in true }
Default Implementation
Creates a request with the provided predicate added to the eventual set of already applied predicates.
// SELECT * FROM player WHERE email = 'arthur@example.com' var request = Player.all() request = request.filter(Column("email") == "arthur@example.com")
Declaration
Swift
func filter(_ predicate: @escaping (Database) throws -> SQLExpressible) -> Self
-
filter(sql:
Extension methodarguments: ) Creates a request with the provided predicate added to the eventual set of already applied predicates.
// SELECT * FROM player WHERE email = 'arthur@example.com' var request = Player.all() request = request.filter(sql: "email = ?", arguments: ["arthur@example.com"])
Declaration
Swift
public func filter(sql: String, arguments: StatementArguments = StatementArguments()) -> Self
-
filter(literal:
Extension method) Creates a request with the provided predicate added to the eventual set of already applied predicates.
// SELECT * FROM player WHERE email = 'arthur@example.com' var request = Player.all() request = request.filter(literal: SQLLiteral(sql: """ email = ? """, arguments: ["arthur@example.com"])
With Swift 5, you can safely embed raw values in your SQL queries, without any risk of syntax errors or SQL injection:
var request = Player.all() request = request.filter(literal: "name = \("O'Brien")")
Declaration
Swift
public func filter(literal sqlLiteral: SQLLiteral) -> Self
-
none()
Extension methodCreates a request that matches nothing.
// SELECT * FROM player WHERE 0 var request = Player.all() request = request.none()
Declaration
Swift
public func none() -> Self