SQLRequest
public struct SQLRequest<RowDecoder>
extension SQLRequest: SQLRequestProtocol
extension SQLRequest: DatabaseRegionConvertible
extension SQLRequest: FetchRequest
extension SQLRequest: ExpressibleByStringInterpolation
A FetchRequest built from raw SQL.
-
The request adapter
Declaration
Swift
public var adapter: RowAdapter?
-
Creates a request from an SQL string, optional arguments, and optional row adapter.
let request = SQLRequest<String>(sql: """ SELECT name FROM player """) let request = SQLRequest<Player>(sql: """ SELECT * FROM player WHERE id = ? """, arguments: [1])
Declaration
Swift
public init( sql: String, arguments: StatementArguments = StatementArguments(), adapter: RowAdapter? = nil, cached: Bool = false)
Parameters
sql
An SQL query.
arguments
Statement arguments.
adapter
Optional RowAdapter.
cached
Defaults to false. If true, the request reuses a cached prepared statement.
Return Value
A SQLRequest
-
Creates a request from an SQLLiteral, and optional row adapter.
let request = SQLRequest<String>(literal: SQLLiteral(sql: """ SELECT name FROM player """)) let request = SQLRequest<Player>(literal: SQLLiteral(sql: """ SELECT * FROM player WHERE name = ? """, arguments: ["O'Brien"]))
With Swift 5, you can safely embed raw values in your SQL queries, without any risk of syntax errors or SQL injection:
let request = SQLRequest<Player>(literal: """ SELECT * FROM player WHERE name = \("O'brien") """)
Declaration
Swift
public init(literal sqlLiteral: SQLLiteral, adapter: RowAdapter? = nil, cached: Bool = false)
Parameters
sqlLiteral
An SQLLiteral.
adapter
Optional RowAdapter.
cached
Defaults to false. If true, the request reuses a cached prepared statement.
Return Value
A SQLRequest
-
Declaration
Swift
public func databaseRegion(_ db: Database) throws -> DatabaseRegion
-
Declaration
Swift
public func makePreparedRequest(_ db: Database, forSingleResult singleResult: Bool) throws -> PreparedRequest
-
:nodoc
Declaration
Swift
public init(unicodeScalarLiteral: String)