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)