AuxiliaryTable
open class AuxiliaryTable: Table
Subclasses of the AuxiliaryTable
class are describing a Table
that is used in WITH clauses.
Usage Example:
In this example, an AuxiliaryTable
class is defined containing two columns.
A ToDoTable
(as defined in Table
), a PersonTable
(as defined in Column
) and a connection instance are initialized.
An instance of the AuxiliaryTable
is then initialised from Column
instances in todotable
.
This AuxiliaryTable
is then used to create an SQL WITH query.
A description of the created query is then printed.
class AuxTable: AuxiliaryTable {
let tableName = "aux_table"
let name = Column("name")
let finished = Column("finished")
}
let todotable = ToDoTable() // ToDoTable() is a previously defined `Table` class
let persontable = PersonTable() // PersonTable() is a previously defined `Table` class
let connection = PostgreSQLConnection(host: "localhost", port: 5432, options: [.databaseName("ToDoDatabase")])
let withTable = AuxTable(as: Select(todotable.toDo_completed.as("finished"), todotable.toDo_title.as("name"), from: todotable))
let withQuery = with(withTable, Select(withTable.finished, persontable.monthlyPay, from: persontable).join(withTable).on(persontable.name == withTable.name))
let stringQuery = try connection.descriptionOf(query: withQuery)
print(stringQuery)
// Prints WITH aux_table AS (SELECT toDoTable.toDo_completed AS finished, toDoTable.toDo_title AS name FROM toDoTable) SELECT aux_table.finished, personTable.monthlyPay FROM personTable JOIN aux_table ON personTable.firstName = aux_table.name
-
Initialize an instance of
AuxiliaryTable
.Usage Example:
In this example, an
AuxiliaryTable
class is defined containing two columns. AToDoTable
(as defined inTable
) instance, and a connection instance are initialized. An instance of thisAuxiliaryTable
is then initialised from theColumn
instances intodotable
.class AuxTable: AuxiliaryTable { let tableName = "aux_table" let name = Column("name") let finished = Column("finished") } let todotable = ToDoTable() // ToDoTable() is a previously defined `Table` class let withTable = AuxTable(as: Select(todotable.toDo_completed.as("finished"), todotable.toDo_title.as("name"), from: todotable))
Declaration
Swift
public convenience init(as query: Query)
Parameters
query
A query that will be used in a WITH clause.
-
Build a String representation of the WITH clause used to create the
AuxiliaryTable
instance, usingQueryBuilder
to account for the various databases.Usage Example:
In this example, an
AuxiliaryTable
class is defined containing two columns. AToDoTable
(as defined inTable
) instance and queryBuilder instance are initialized. An instance of thisAuxiliaryTable
is then initialised from theColumn
instances intodotable
. ThebuildWith
function is then called on thisAuxiliaryTable
instance, with the resulting String being printed out.class AuxTable: AuxiliaryTable { let tableName = "aux_table" let name = Column("name") let finished = Column("finished") } let todotable = ToDoTable() // ToDoTable() is a previously defined `Table` class let queryBuilder = QueryBuilder() let withTable = AuxTable(as: Select(todotable.toDo_completed.as("finished"), todotable.toDo_title.as("name"), from: todotable)) let withString = try withTable.buildWith(queryBuilder: queryBuilder) print(withString) // Prints aux_table AS (SELECT toDoTable.toDo_completed AS finished, toDoTable.toDo_title AS name FROM toDoTable)
Throws
QueryError.syntaxError if query build fails.Declaration
Swift
public func buildWith(queryBuilder: QueryBuilder) throws -> String
Parameters
queryBuilder
The QueryBuilder to use.
Return Value
A String representation of the query.