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.
-
The database region that the request looks into.
Declaration
Swift
public func fetchedRegion(_ db: Database) throws -> DatabaseRegion
-
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>
-
Creates a QueryInterfaceRequest with the provided primary key predicate.
// SELECT * FROM players WHERE id = 1 var request = Player.all() request = request.filter(key: 1)
The selection defaults to all columns. This default can be changed for all requests by the
TableMapping.databaseSelection
property, or for individual requests with theTableMapping.select
method.Declaration
Swift
public func filter<PrimaryKeyType: DatabaseValueConvertible>(key: PrimaryKeyType?) -> QueryInterfaceRequest<T>
-
Creates a QueryInterfaceRequest with the provided primary key predicate.
// SELECT * FROM players WHERE id IN (1, 2, 3) var request = Player.all() request = request.filter(keys: [1, 2, 3])
The selection defaults to all columns. This default can be changed for all requests by the
TableMapping.databaseSelection
property, or for individual requests with theTableMapping.select
method.Declaration
Swift
public func filter<Sequence: Swift.Sequence>(keys: Sequence) -> QueryInterfaceRequest<T> where Sequence.Element: DatabaseValueConvertible
-
Creates a QueryInterfaceRequest with the provided primary key predicate.
// SELECT * FROM passports WHERE personId = 1 AND countryCode = 'FR' var request = Player.all() request = request.filter(key: ["personId": 1, "countryCode": "FR"])
When executed, this request raises a fatal error if there is no unique index on the key columns.
The selection defaults to all columns. This default can be changed for all requests by the
TableMapping.databaseSelection
property, or for individual requests with theTableMapping.select
method.Declaration
Swift
public func filter(key: [String: DatabaseValueConvertible?]?) -> QueryInterfaceRequest<T>
-
Creates a QueryInterfaceRequest with the provided primary key predicate.
// SELECT * FROM passports WHERE (personId = 1 AND countryCode = 'FR') OR ... let request = Passport.filter(keys: [["personId": 1, "countryCode": "FR"], ...])
When executed, this request raises a fatal error if there is no unique index on the key columns.
The selection defaults to all columns. This default can be changed for all requests by the
TableMapping.databaseSelection
property, or for individual requests with theTableMapping.select
method.Declaration
Swift
public func filter(keys: [[String: DatabaseValueConvertible?]]) -> 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