Instance methods
Adds value to args and returns the placeholder.
SourceExtracts arguments and fields from data, populates args
and returns SQL part for a listing statement.
Example: field1, field2, field3
Sourceadd_args_and_fields_from_data(data :
Array, sep = ", ") :
String Extracts arguments and fields from data, populates args
and returns SQL part for a listing statement.
Example: field1, field2, field3
SourceExtracts arguments and fields from data, populates args
and returns SQL part for a combined statement.
Example: field1 = $1, field2 = $2, field3 = $3
Sourcealter(table :
OneOrMoreFieldsType, command :
String, field :
String, data_type = "") :
QueryBuilder Sourceanalyze(table : OneOrMoreFieldsType) : QueryBuilder
Sourceavg(field : FieldType, name = nil) : QueryBuilder
Adds AVG to the current query.
Sourcebetween(field : FieldType, value1, value2, type = "", and_or = "AND") : QueryBuilder
Sourcebuild
Builds the current query and returns SQL (string) and arguments (array).
sql, args = builder.build
Sourcecheck(table : OneOrMoreFieldsType) : QueryBuilder
Sourcechecksum(table : OneOrMoreFieldsType) : QueryBuilder
Builds the CHECKSUM query
Sourcechecksum
Builds the CHECKSUM query
Sourcecount(field : FieldType, name = nil) : QueryBuilder
Adds COUNT to the current query.
Sourcedelete(pk_name, pk_value) : QueryBuilder
Sourcedelete(table : OneOrMoreFieldsType) : QueryBuilder
Sourcedrop(table : OneOrMoreFieldsType, check_exists = true) : QueryBuilder
Sourcefind(pk_name, pk_value) : QueryBuilder
Finds one resource by its primary key.
Same as:
builder.find.where(pk_name, pk_value)
Sourcefind(table_name : OneOrMoreFieldsType) : QueryBuilder
Sourcefind
Adds find to current query
and defines in raw form the SQL statement of the table(s).
Be careful, you have to manage arguments (arg) and quotes (q).
Example:
builder.find { "#{q("posts") AS p, articles a" }"
Generates:
SELECT * FROM "posts" AS p, articles a
Sourcefull_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds FULL JOIN to the current query.
Sourcefull_outer_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds FULL OUTER JOIN to the current query.
Sourcegroup_by(field : OneOrMoreFieldsType) : QueryBuilder
Sourcehaving(field : FieldType, op_or_val, value = nil) : QueryBuilder
Sourcehaving
Defines in raw form the SQL statement of HAVING.
Be careful, you have to manage arguments (arg) and quotes (q).
Example:
builder.find(:tests).group_by(:payment).having { "SUM(price) > 40" }
Generates:
SELECT * FROM tests GROUP_BY payment HAVING SUM(person) > 40
Sourcein(field :
FieldType, values :
Array |
Tuple, type = "", and_or = "
AND") :
QueryBuilder Sourceinner_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds INNER JOIN to the current query.
Sourcejoin(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil, type = "") : QueryBuilder
Sourcejoin
Adds a raw join to current query.
Be careful, you have to manage arguments (arg) and quotes (q).
Example:
builder.find("tests").join { "
INNER JOIN T2 ON T1.a = T2.a
AND T1.b = T2.b
OR T1.b = #{q(some_value_to_quote)}
" }
.join { "LEFT JOIN payments p USING (product_id)" }
Sourcejoin
Returns jointure. Returns empty string if no jointure has been defined.
puts builder.join unless builder.join.blank? # or .empty?
Sourcelast_query_method
Returns the last query method.
Sourceleft_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds LEFT JOIN to the current query.
Sourceleft_outer_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds LEFT OUTER JOIN to the current query.
Sourcelike(field : FieldType, value, type = "", and_or = "AND") : QueryBuilder
Sourcelimit(limit, limit_end = nil) : QueryBuilder
Sourcelimit
Returns limit value. Returns empty string if no limit has been defined.
puts builder.limit unless builder.limit.blank? # or .empty?
Sourcemax(field : FieldType, name = nil) : QueryBuilder
Adds MAX to the current query.
Sourcemin(field : FieldType, name = nil) : QueryBuilder
Adds MIN to the current query.
Sourcenot_between(field : FieldType, value1, value2) : QueryBuilder
Sourcenot_like(field : FieldType, value) : QueryBuilder
Sourcenot_where(field : FieldType, op_or_val, value = nil) : QueryBuilder
Sourceoffset(offset) : QueryBuilder
Sourceoffset
Returns offset value. Returns empty string if no offset has been defined.
puts builder.offset unless builder.offset.blank? # or .empty?
Sourceoptimize(table : OneOrMoreFieldsType) : QueryBuilder
Builds the OPTIMIZE query
Sourceoptimize
Builds the OPTIMIZE query
Sourceor_between(field : FieldType, value1, value2) : QueryBuilder
Sourceor_like(field : FieldType, value) : QueryBuilder
Sourceor_not_between(field : FieldType, value1, value2) : QueryBuilder
Sourceor_not_like(field : FieldType, value) : QueryBuilder
Sourceor_not_where(field : FieldType, op_or_val, value = nil) : QueryBuilder
Sourceor_where(field : FieldType, op_or_val, value = nil) : QueryBuilder
Sourceorder_by(field : FieldType, dir = nil) : QueryBuilder
Sourcepaginate(per_page, page) : QueryBuilder
Sets offset and limit to get pagination-compatible results.
SourceAdds placeholder for a SQL argument.
Sourcequery
Generates a raw query.
Be careful, you have to manage arguments and quotes.
Example:
puts builder.query { "
SELECT * FROM tests
status = #{arg(true)}
AND (
#{q(:date)} <= #{arg(Time.utc - 1.day)}
OR role = #{arg(:admin)}
)
LIMIT 1
" }
Generates:
SELECT *
FROM tests
WHERE status = $1
AND ("date" <= $2 OR role = $3)
LIMIT 1
Sourcequery_count
Returns number of queries made by the current instance.
Sourcequery_method
Returns the query method.
Sourcequote(field :
FieldType) :
String Wraps field with quotes (QUOTE).
Sourcerepair(table : OneOrMoreFieldsType) : QueryBuilder
Sourcereturning(fields : OneOrMoreFieldsType) : QueryBuilder
SQL field(s) to be returned after an insert statement.
* (wildcard) means all fields.
Sourcereturning
Returns the SQL field(s) to be returned after an insert statement.
* (wildcard) means all fields.
Sourcereturning(*name : FieldType) : QueryBuilder
SQL field(s) to be returned after an insert statement.
* (wildcard) means all fields.
Sourceright_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds RIGHT JOIN to the current query.
Sourceright_outer_join(table : FieldType, field1 : FieldType, field2 : FieldType | Nil = nil) : QueryBuilder
Adds RIGHT OUTER JOIN to the current query.
Sourceselect(fields : OneOrMoreFieldsType) : QueryBuilder
Selects one or more fields.
Sourceselect
Returns selected field(s). Default is *.
puts builder.select
Sourceselect(*name : FieldType) : QueryBuilder
Selects one or more fields.
Sourcesum(field : FieldType, name = nil) : QueryBuilder
Adds SUM to the current query.
Sourcetable(name : OneOrMoreFieldsType) : QueryBuilder
Targets one or more tables.
Sourcetable
Returns table name(s). Returns empty string if no table has been defined.
puts builder.table unless builder.table.blank? # or .empty?
Sourcetable(*name : FieldType) : QueryBuilder
Targets tables defined by variadic arguments.
builder.table(:table1, :table2)
Sourcetable
Defines in raw form the SQL statement of the table(s).
Be careful, you have to manage arguments (arg) and quotes (q).
Example:
builder.find { "#{q("posts") AS p, articles a" }"
Generates:
SELECT * FROM "posts" AS p, articles a
SourceConverts NamedTuple to DataHashType.
Sourcewhere(field : FieldType, op_or_val, value = nil, type = "", and_or = "AND") : QueryBuilder
Sourcewhere
Adds a raw where to current query.
Be careful, you have to manage arguments (arg) and quotes (q).
Example:
builder.find("tests").where { "
status = #{arg(true)}
AND (
#{q(:date)} <= #{arg(Time.utc - 1.day)}
OR role = #{arg(:admin)}
)
" }
Generates:
SELECT *
FROM tests
WHERE status = $1
AND ("date" <= $2 OR role = $3)
Source