QueryInterfaceRequest
public struct QueryInterfaceRequest<T> : TypedRequest
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>
-
This function is an implementation detail of the query interface. Do not use it directly.
See https://github.com/groue/GRDB.swift/#the-query-interface
Low Level Query Interface
See SQLSelectQuery.selectQuerySQL(_)
Declaration
Swift
public func selectQuerySQL(_ arguments: inout StatementArguments?) -> String
-
A new QueryInterfaceRequest with a new net of selected columns.
// SELECT id, email FROM persons var request = Person.all() request = request.select(Column("id"), Column("email"))
Any previous selection is replaced:
// SELECT email FROM persons 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 persons var request = Person.all() request = request.select([Column("id"), Column("email")])
Any previous selection is replaced:
// SELECT email FROM persons 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 persons var request = Person.all() request = request.select(sql: "id, email")
Any previous selection is replaced:
// SELECT email FROM persons 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 persons var request = Person.all() request = request.distinct() // SELECT DISTINCT name FROM persons var request = Person.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 persons WHERE email = 'arthur@example.com' var request = Person.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 persons WHERE email = 'arthur@example.com' var request = Person.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 persons ORDER BY name var request = Person.all() request = request.order(Column("name"))
Any previous ordering is replaced:
// SELECT * FROM persons ORDER BY name request .order(Column("email")) .order(Column("name"))
Declaration
Swift
public func order(_ orderings: SQLOrderingTerm...) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided orderings.
// SELECT * FROM persons ORDER BY name var request = Person.all() request = request.order([Column("name")])
Any previous ordering is replaced:
// SELECT * FROM persons ORDER BY name request .order([Column("email")]) .order([Column("name")])
Declaration
Swift
public func order(_ orderings: [SQLOrderingTerm]) -> QueryInterfaceRequest<T>
-
A new QueryInterfaceRequest with the provided sql used for sorting.
// SELECT * FROM persons ORDER BY name var request = Person.all() request = request.order(sql: "name")
Any previous ordering is replaced:
// SELECT * FROM persons 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 persons ORDER BY name DESC var request = Person.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 persons LIMIT 1 var request = Person.all() request = request.limit(1)
Declaration
Swift
public func limit(_ limit: Int, offset: Int? = nil) -> QueryInterfaceRequest<T>
-
The number of rows fetched by the request.
Declaration
Swift
public func fetchCount(_ db: Database) throws -> Int
Parameters
db
A database connection.
-
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