SQL
SQL
helps you build SQL literal with
SQL Interpolation.
For example:
try dbQueue.write { db in
let name: String = ...
let id: Int64 = ...
let query: SQL = "UPDATE player SET name = \(name) WHERE id = \(id)"
try db.execute(literal: query)
}
-
Creates an
SQL
literal from a plain SQL string, and eventual arguments.For example:
let query = SQL( sql: "UPDATE player SET name = ? WHERE id = ?", arguments: [name, id])
-
Creates an
SQL
literal from an SQL expression.For example:
let columnLiteral = SQL(Column("username")) let suffixLiteral = SQL("@example.com".databaseValue) let emailLiteral = [columnLiteral, suffixLiteral].joined(separator: " || ") let request = User.select(emailLiteral.sqlExpression) let emails = try String.fetchAll(db, request)
-
Returns true if this literal generates an empty SQL string
-
Turn a
SQL
literal into raw SQL and arguments. -
Returns the
SQL
literal produced by the concatenation of two literals.let name = "O'Brien" let selection: SQL = "SELECT * FROM player " let condition: SQL = "WHERE name = \(name)" let query = selection + condition
-
Appends an
SQL
literal to the receiver.let name = "O'Brien" var query: SQL = "SELECT * FROM player " query += "WHERE name = \(name)"
-
Appends an
SQL
literal to the receiver.let name = "O'Brien" var query: SQL = "SELECT * FROM player " query.append(literal: "WHERE name = \(name)")
-
Appends a plain SQL string to the receiver, and eventual arguments.
let name = "O'Brien" var query: SQL = "SELECT * FROM player " query.append(sql: "WHERE name = ?", arguments: [name])
-
Creates a literal SQL expression.
Use this property when you need an explicit
SQLExpression
. For example:func date(_ value: some SQLExpressible) -> SQLExpression { SQL("DATE(\(value))").sqlExpression } // SELECT * FROM "player" WHERE DATE("createdAt") = '2020-01-23' let createdAt = Column("createdAt") let request = Player.filter(date(createdAt) == "2020-01-23")
-
Creates a literal SQL expression.
Use this property when you need an explicit
SQLSelection
. For example:// SELECT firstName AS givenName, lastName AS familyName FROM player let selection = SQL("firstName AS givenName, lastName AS familyName").sqlSelection let request = Player.select(selection)
-
Creates a literal SQL ordering.
Use this property when you need an explicit
SQLOrdering
. For example:// SELECT * FROM player ORDER BY name DESC let ordering = SQL("name DESC").sqlOrdering let request = Player.order(ordering)
-
:nodoc