QueryInterfaceRequest
public struct QueryInterfaceRequest<T>
A QueryInterfaceRequest describes an SQL query.
-
Returns a new QueryInterfaceRequest with a matching predicate added to the eventual set of already applied predicates.
// SELECT * FROM books WHERE books MATCH '...' var request = Book.all() request = request.matching(pattern)
If the search pattern is nil, the request does not match any database row.
Declaration
Swift
public func matching(_ pattern: FTS3Pattern?) -> QueryInterfaceRequest<T>
-
A tuple that contains a prepared statement that is ready to be executed, and an eventual row adapter.
Declaration
Swift
public func prepare(_ db: Database) throws -> (SelectStatement, RowAdapter?)
Parameters
db
A database connection.
-
The number of rows fetched by the request.
Declaration
Swift
public func fetchCount(_ db: Database) throws -> Int
Parameters
db
A database connection.
-
A new QueryInterfaceRequest with a new net of selected columns.
// SELECT id, email FROM players var request = Player.all() request = request.select(Column("id"), Column("email"))
Any previous selection is replaced:
// SELECT email FROM players request .select(Column("id")) .select(Column("email"))
Declaration
Swift
public func select(_ selection: SQLSelectable...) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with a new net of selected columns.
// SELECT id, email FROM players var request = Player.all() request = request.select([Column("id"), Column("email")])
Any previous selection is replaced:
// SELECT email FROM players request .select([Column("id")]) .select([Column("email")])
Declaration
Swift
public func select(_ selection: [SQLSelectable]) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with a new net of selected columns.
// SELECT id, email FROM players var request = Player.all() request = request.select(sql: "id, email")
Any previous selection is replaced:
// SELECT email FROM players request .select(sql: "id") .select(sql: "email")
Declaration
Swift
public func select(sql: String, arguments: StatementArguments? = nil) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest which returns distinct rows.
// SELECT DISTINCT * FROM players var request = Player.all() request = request.distinct() // SELECT DISTINCT name FROM players var request = Player.select(Column("name")) request = request.distinct()
Declaration
Swift
public func distinct() -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided predicate added to the eventual set of already applied predicates.
// SELECT * FROM players WHERE email = 'arthur@example.com' var request = Player.all() request = request.filter(Column("email") == "arthur@example.com")
Declaration
Swift
public func filter(_ predicate: SQLExpressible) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided predicate added to the eventual set of already applied predicates.
// SELECT * FROM players 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? = nil) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest grouped according to expressions.
Declaration
Swift
public func group(_ expressions: SQLExpressible...) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest grouped according to expressions.
Declaration
Swift
public func group(_ expressions: [SQLExpressible]) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with a new grouping.
Declaration
Swift
public func group(sql: String, arguments: StatementArguments? = nil) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided predicate added to the eventual set of already applied predicates.
Declaration
Swift
public func having(_ predicate: SQLExpressible) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided sql added to the eventual set of already applied predicates.
Declaration
Swift
public func having(sql: String, arguments: StatementArguments? = nil) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided orderings.
// SELECT * FROM players ORDER BY name var request = Player.all() request = request.order(Column("name"))
Any previous ordering is replaced:
// SELECT * FROM players ORDER BY name request .order(Column("email")) .reversed() .order(Column("name"))
Declaration
Swift
public func order(_ orderings: SQLOrderingTerm...) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided orderings.
// SELECT * FROM players ORDER BY name var request = Player.all() request = request.order([Column("name")])
Any previous ordering is replaced:
// SELECT * FROM players ORDER BY name request .order([Column("email")]) .reversed() .order([Column("name")])
Declaration
Swift
public func order(_ orderings: [SQLOrderingTerm]) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided sql used for sorting.
// SELECT * FROM players ORDER BY name var request = Player.all() request = request.order(sql: "name")
Any previous ordering is replaced:
// SELECT * FROM players ORDER BY name request .order(sql: "email") .order(sql: "name")
Declaration
Swift
public func order(sql: String, arguments: StatementArguments? = nil) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest sorted in reversed order.
// SELECT * FROM players ORDER BY name DESC var request = Player.all().order(Column("name")) request = request.reversed()
Declaration
Swift
public func reversed() -> QueryInterfaceRequest<T>
-
A QueryInterfaceRequest which fetches limit rows, starting at offset.
// SELECT * FROM players LIMIT 1 var request = Player.all() request = request.limit(1)
Declaration
Swift
public func limit(_ limit: Int, offset: Int? = nil) -> QueryInterfaceRequest<T>
-
Deletes matching rows; returns the number of deleted rows.
Throws
A DatabaseError is thrown whenever an SQLite error occurs.Declaration
Swift
public func deleteAll(_ db: Database) throws -> Int
Parameters
db
A database connection.
Return Value
The number of deleted rows