DatabaseValueConvertible

public protocol DatabaseValueConvertible : SQLExpressible

Types that adopt DatabaseValueConvertible can be initialized from database values.

The protocol comes with built-in methods that allow to fetch cursors, arrays, or single values:

try String.fetchCursor(db, "SELECT name FROM ...", arguments:...) // DatabaseCursor<String>
try String.fetchAll(db, "SELECT name FROM ...", arguments:...)    // [String]
try String.fetchOne(db, "SELECT name FROM ...", arguments:...)    // String?

let statement = try db.makeSelectStatement("SELECT name FROM ...")
try String.fetchCursor(statement, arguments:...) // DatabaseCursor<String>
try String.fetchAll(statement, arguments:...)    // [String]
try String.fetchOne(statement, arguments:...)    // String?

DatabaseValueConvertible is adopted by Bool, Int, String, etc.

  • Returns a cursor over values fetched from a prepared statement.

    let statement = try db.makeSelectStatement("SELECT name FROM ...")
    let names = try String.fetchCursor(statement) // DatabaseCursor<String>
    while let name = try names.next() { // String
        ...
    }
    

    If the database is modified during the cursor iteration, the remaining elements are undefined.

    The cursor must be iterated in a protected dispath queue.

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchCursor(_ statement: SelectStatement, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> DatabaseCursor<Self>

    Parameters

    statement

    The statement to run.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    A cursor over fetched values.

  • Returns an array of values fetched from a prepared statement.

    let statement = try db.makeSelectStatement("SELECT name FROM ...")
    let names = try String.fetchAll(statement)  // [String]
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchAll(_ statement: SelectStatement, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> [Self]

    Parameters

    statement

    The statement to run.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An array.

  • Returns a single value fetched from a prepared statement.

    The result is nil if the query returns no row, or if no value can be extracted from the first row.

    let statement = try db.makeSelectStatement("SELECT name FROM ...")
    let name = try String.fetchOne(statement)   // String?
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchOne(_ statement: SelectStatement, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> Self?

    Parameters

    statement

    The statement to run.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An optional value.

  • fetchCursor(_:_:) Extension method

    Returns a cursor over values fetched from a fetch request.

    let nameColumn = Column("name")
    let request = Person.select(nameColumn)
    let names = try String.fetchCursor(db, request) // DatabaseCursor<String>
    for let name = try names.next() { // String
        ...
    }
    

    If the database is modified during the cursor iteration, the remaining elements are undefined.

    The cursor must be iterated in a protected dispath queue.

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchCursor(_ db: Database, _ request: Request) throws -> DatabaseCursor<Self>

    Parameters

    db

    A database connection.

    request

    A fetch request.

    Return Value

    A cursor over fetched values.

  • fetchAll(_:_:) Extension method

    Returns an array of values fetched from a fetch request.

    let nameColumn = Column("name")
    let request = Person.select(nameColumn)
    let names = try String.fetchAll(db, request)  // [String]
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchAll(_ db: Database, _ request: Request) throws -> [Self]

    Parameters

    db

    A database connection.

  • fetchOne(_:_:) Extension method

    Returns a single value fetched from a fetch request.

    The result is nil if the query returns no row, or if no value can be extracted from the first row.

    let nameColumn = Column("name")
    let request = Person.select(nameColumn)
    let name = try String.fetchOne(db, request)   // String?
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchOne(_ db: Database, _ request: Request) throws -> Self?

    Parameters

    db

    A database connection.

  • Returns a cursor over values fetched from an SQL query.

    let names = try String.fetchCursor(db, "SELECT name FROM ...") // DatabaseCursor<String>
    while let name = try name.next() { // String
        ...
    }
    

    If the database is modified during the cursor iteration, the remaining elements are undefined.

    The cursor must be iterated in a protected dispath queue.

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchCursor(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> DatabaseCursor<Self>

    Parameters

    db

    A database connection.

    sql

    An SQL query.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    A cursor over fetched values.

  • Returns an array of values fetched from an SQL query.

    let names = try String.fetchAll(db, "SELECT name FROM ...") // [String]
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchAll(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> [Self]

    Parameters

    db

    A database connection.

    sql

    An SQL query.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An array.

  • Returns a single value fetched from an SQL query.

    The result is nil if the query returns no row, or if no value can be extracted from the first row.

    let name = try String.fetchOne(db, "SELECT name FROM ...") // String?
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchOne(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> Self?

    Parameters

    db

    A database connection.

    sql

    An SQL query.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An optional value.

  • Returns a cursor over values fetched from a prepared statement.

    let statement = try db.makeSelectStatement("SELECT name FROM ...")
    let names = try String.fetchCursor(statement) // DatabaseCursor<String>
    while let name = try names.next() { // String
        ...
    }
    

    If the database is modified during the cursor iteration, the remaining elements are undefined.

    The cursor must be iterated in a protected dispath queue.

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchCursor(_ statement: SelectStatement, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> DatabaseCursor<Self>

    Parameters

    statement

    The statement to run.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    A cursor over fetched values.

  • Returns an array of values fetched from a prepared statement.

    let statement = try db.makeSelectStatement("SELECT name FROM ...")
    let names = try String.fetchAll(statement)  // [String]
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchAll(_ statement: SelectStatement, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> [Self]

    Parameters

    statement

    The statement to run.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An array of values.

  • Returns a single value fetched from a prepared statement.

    let statement = try db.makeSelectStatement("SELECT name FROM ...")
    let name = try String.fetchOne(statement)   // String?
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchOne(_ statement: SelectStatement, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> Self?

    Parameters

    statement

    The statement to run.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An optional value.

  • fetchCursor(_:_:) Extension method

    Returns a cursor over values fetched from a fetch request.

    let nameColumn = Column("name")
    let request = Person.select(nameColumn)
    let names = try String.fetchCursor(db, request) // DatabaseCursor<String>
    while let name = try names.next() { // String
        ...
    }
    

    If the database is modified during the cursor iteration, the remaining elements are undefined.

    The cursor must be iterated in a protected dispath queue.

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchCursor(_ db: Database, _ request: Request) throws -> DatabaseCursor<Self>

    Parameters

    db

    A database connection.

    request

    A fetch request.

    Return Value

    A cursor over fetched values.

  • fetchAll(_:_:) Extension method

    Returns an array of values fetched from a fetch request.

    let nameColumn = Column("name")
    let request = Person.select(nameColumn)
    let names = try String.fetchAll(db, request)  // [String]
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchAll(_ db: Database, _ request: Request) throws -> [Self]

    Parameters

    db

    A database connection.

  • fetchOne(_:_:) Extension method

    Returns a single value fetched from a fetch request.

    The result is nil if the query returns no row, or if no value can be extracted from the first row.

    let nameColumn = Column("name")
    let request = Person.select(nameColumn)
    let name = try String.fetchOne(db, request)   // String?
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchOne(_ db: Database, _ request: Request) throws -> Self?

    Parameters

    db

    A database connection.

  • Returns a cursor over values fetched from an SQL query.

    let names = try String.fetchCursor(db, "SELECT name FROM ...") // DatabaseCursor<String>
    while let name = try names.next() { // String
        ...
    }
    

    If the database is modified during the cursor iteration, the remaining elements are undefined.

    The cursor must be iterated in a protected dispath queue.

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchCursor(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> DatabaseCursor<Self>

    Parameters

    db

    A database connection.

    sql

    An SQL query.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    A cursor over fetched values.

  • Returns an array of values fetched from an SQL query.

    let names = try String.fetchAll(db, "SELECT name FROM ...") // [String]
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchAll(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> [Self]

    Parameters

    db

    A database connection.

    sql

    An SQL query.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An array of values.

  • Returns a single value fetched from an SQL query.

    let name = try String.fetchOne(db, "SELECT name FROM ...") // String?
    

    Throws

    A DatabaseError is thrown whenever an SQLite error occurs.

    Declaration

    Swift

    public static func fetchOne(_ db: Database, _ sql: String, arguments: StatementArguments? = nil, adapter: RowAdapter? = nil) throws -> Self?

    Parameters

    db

    A database connection.

    sql

    An SQL query.

    arguments

    Optional statement arguments.

    adapter

    Optional RowAdapter

    Return Value

    An optional value.