class
Lustra::Reflection::Column::Collection
- Lustra::Reflection::Column::Collection
- Lustra::Model::CollectionBase(Lustra::Reflection::Column)
- Reference
- Object
Overview
:doc: Lustra::Model::Collection
This is the object managing a SELECT request.
A new collection is created by calling Lustra::Model.query
Collections are mutable: query-refinement methods such as where,
select, order_by, limit, and offset mutate the collection.
Terminal helpers such as first, last, empty?, pluck, and
finder methods should not mutate it.
You may want to copy the collection by calling dup.
See Lustra::Model::CollectionBase
Defined in:
lustra/model/reflection/column.crInstance Method Summary
- #with_table(fetch_columns = false, &block : Lustra::Reflection::Table::Collection -> ) : self
- #with_table(fetch_columns = false) : self
Instance methods inherited from class Lustra::Model::CollectionBase(Lustra::Reflection::Column)
<<(item : T)
<<,
[](range : Range(Number, Number), fetch_columns = false) : Array(T)[](off, fetch_columns = false) : T [], []?(off, fetch_columns = false) : T | Nil []?, add(item : T) add, any? any?, association_name : String | Nil association_name, association_name=(association_name : String | Nil) association_name=, autosave=(autosave : Bool) autosave=, autosave? : Bool autosave?, build(x : NamedTuple, &block : T -> Nil) : T
build(**tuple, & : T -> Nil) : T
build(x : NamedTuple) : T
build(**tuple) : T build, count(type : X.class = Int64) forall X count, create(x : NamedTuple, &block : T -> Nil) : T
create(**tuple, & : T -> Nil) : T
create(x : NamedTuple) : T
create(**tuple) : T create, create!(x : NamedTuple, &block : T -> Nil) : T
create!(**tuple, & : T -> Nil) : T
create!(x : NamedTuple) : T
create!(**tuple) : T create!, delete_all : self delete_all, destroy_all : self destroy_all, dup dup, each(fetch_columns = false, & : T -> ) : Nil each, each_with_cursor(batch = 1000, fetch_columns = false, &block : T -> ) each_with_cursor, empty? empty?, find(fetch_columns = false, &) : T | Nil
find(tuple : NamedTuple, fetch_columns = false) : T | Nil
find(ids : Array)
find(x)
find(**tuple) : T | Nil find, find!(fetch_columns = false, &) : T
find!(tuple : NamedTuple, fetch_columns = false) : T
find!(ids : Array)
find!(x)
find!(**tuple) : T find!, find_by(fetch_columns = false, &) : T | Nil
find_by(tuple : NamedTuple, fetch_columns = false) : T | Nil
find_by(**tuple) : T | Nil find_by, find_by!(fetch_columns = false, &) : T
find_by!(tuple : NamedTuple, fetch_columns = false) : T
find_by!(**tuple) : T find_by!, find_or_build(x : NamedTuple, &block : T -> Nil) : T
find_or_build(**tuple, & : T -> Nil) : T
find_or_build(x : NamedTuple) : T
find_or_build(**tuple) : T find_or_build, find_or_create(x : NamedTuple, &block : T -> Nil) : T
find_or_create(**tuple, & : T -> Nil) : T
find_or_create(x : NamedTuple) : T
find_or_create(**tuple) : T find_or_create, first(fetch_columns = false) : T | Nil first, first!(fetch_columns = false) : T first!, full_outer_join(association : Lustra::SQL::Symbolic, lateral = false) full_outer_join, ids : Array(Lustra::SQL::Any) ids, inner_join(association : Lustra::SQL::Symbolic, lateral = false) inner_join, item_class item_class, join(association : Lustra::SQL::Symbolic, type = :inner, lateral = false) join, last(fetch_columns = false) : T | Nil last, last!(fetch_columns = false) : T last!, left_join(association : Lustra::SQL::Symbolic, lateral = false) left_join, map(fetch_columns = false, &block : T -> X) : Array(X) forall X map, none none, parent_model : Lustra::Model | Nil parent_model, parent_model=(parent_model : Lustra::Model | Nil) parent_model=, right_join(association : Lustra::SQL::Symbolic, lateral = false) right_join, save!(item : T) save!, tags tags, to_a(fetch_columns = false) : Array(T) to_a, unlink(item : T) unlink, update_all(fields : NamedTuple) : Int64
update_all(fields : Hash(String, Lustra::SQL::Any)) : Int64
update_all(**fields) : Int64 update_all
Instance methods inherited from module Lustra::SQL::SelectBuilder
before_query(&block : -> Nil)
before_query,
columns : Array(SQL::Column)
columns,
default_wildcard_table
default_wildcard_table,
dup : self
dup,
havings : Array(Lustra::Expression::Node)
havings,
is_distinct?
is_distinct?,
joins : Array(SQL::Join)
joins,
limit : Int64 | Nil
limit,
lock : String | Nil
lock,
offset : Int64 | Nil
offset,
order_bys : Array(Lustra::SQL::Query::OrderBy::Record)
order_bys,
to_delete
to_delete,
to_sql : String
to_sql,
to_update
to_update,
total_entries : Int64 | Nil
total_entries,
total_entries=(total_entries : Int64 | Nil)
total_entries=,
wheres : Array(Lustra::Expression::Node)
wheres
Constructor methods inherited from module Lustra::SQL::SelectBuilder
new(distinct_value = nil, cte = {} of String => Lustra::SQL::SelectBuilder | String, columns = [] of SQL::Column, froms = [] of SQL::From, joins = [] of SQL::Join, wheres = [] of Lustra::Expression::Node, havings = [] of Lustra::Expression::Node, windows = [] of ::Tuple(String, String), group_bys = [] of Symbolic, order_bys = [] of Lustra::SQL::Query::OrderBy::Record, limit = nil, offset = nil, lock = nil, before_query_triggers = [] of (-> Nil))
new
Instance methods inherited from module Lustra::SQL::Query::WithPagination
current_page : Int32 | Int64
current_page,
first_page?
first_page?,
last_page?
last_page?,
next_page
next_page,
out_of_bounds?
out_of_bounds?,
paginate(page : Int32 = DEFAULT_PAGE, per_page : Int32 = DEFAULT_LIMIT)
paginate,
per_page : Int32 | Int64
per_page,
previous_page
previous_page,
total_pages : Int32 | Int64
total_pages
Instance methods inherited from module Lustra::SQL::Query::Change
change! : self
change!
Instance methods inherited from module Lustra::SQL::Query::Connection
connection_name : String
connection_name,
use_connection(connection_name : String)
use_connection
Instance methods inherited from module Lustra::SQL::Query::Pluck
pluck(fields : Tuple(*T)) forall Tpluck(*fields) : Array
pluck(**fields : **T) forall T pluck, pluck_col(field : Lustra::SQL::Symbolic, type : T.class) : Array(T) forall T
pluck_col(field : Lustra::SQL::Symbolic) : Array(Lustra::SQL::Any) pluck_col
Instance methods inherited from module Lustra::SQL::Query::Fetch
fetch(fetch_all = false, & : Hash(String, Lustra::SQL::Any) -> Nil)
fetch,
fetch_first
fetch_first,
fetch_first!
fetch_first!,
fetch_with_cursor(count = 1000, & : Hash(String, Lustra::SQL::Any) -> Nil)
fetch_with_cursor,
first
first,
first!
first!,
scalar(type : T.class) forall T
scalar,
to_a : Array(Hash(String, Lustra::SQL::Any))
to_a
Instance methods inherited from module Lustra::SQL::Query::Execute
execute(connection_name : String | Nil = nil)
execute,
execute_and_count(connection_name : String | Nil = nil) : Int64
execute_and_count,
explain(connection_name : String | Nil = nil) : String
explain,
explain_analyze(connection_name : String | Nil = nil) : String
explain_analyze
Instance methods inherited from module Lustra::SQL::Query::Lock
with_lock(str : String = "FOR UPDATE")
with_lock
Instance methods inherited from module Lustra::SQL::Query::Window
clear_windows
clear_windows,
print_windows
print_windows,
window(name, value)window(windows : NamedTuple) window, windows : Array(WindowDeclaration) windows
Instance methods inherited from module Lustra::SQL::Query::CTE
cte : Hash(String, CTEAuthorized)
cte,
with_cte(name, request : CTEAuthorized)with_cte(tuple : NamedTuple) with_cte
Instance methods inherited from module Lustra::SQL::Query::Aggregate
agg(field, x : X.class) forall X
agg,
avg(field, x : X.class) forall X
avg,
count(type : X.class = Int64) forall X
count,
exists? : Bool
exists?,
max(field, x : X.class) forall X
max,
min(field, x : X.class) forall X
min,
sum(field) : Float64
sum
Instance methods inherited from module Lustra::SQL::Query::OffsetLimit
clear_limit
clear_limit,
clear_offset
clear_offset,
limit(x : Int32 | Int64 | Nil)
limit,
offset(x : Int32 | Int64 | Nil)
offset
Instance methods inherited from module Lustra::SQL::Query::GroupBy
clear_group_bys
clear_group_bys,
group_by(column : Symbolic)
group_by,
group_bys : Array(Symbolic)
group_bys
Instance methods inherited from module Lustra::SQL::Query::OrderBy
clear_order_bys
clear_order_bys,
in_order_of(column : Symbol, values : Array(T)) forall Tin_order_of(column : String, values : Array(T)) forall T in_order_of, order_by(tuple : NamedTuple)
order_by(expression : Symbol, direction : Symbol = :asc, nulls : Symbol | Nil = nil)
order_by(expression : String, direction : Symbol = :asc, nulls : Symbol | Nil = nil)
order_by(**tuple) order_by, reverse_order_by reverse_order_by
Instance methods inherited from module Lustra::SQL::Query::Having
clear_havings
clear_havings,
having(node : Lustra::Expression::Node)having(&)
having(conditions : NamedTuple | Hash(String, Lustra::SQL::Any))
having(template : String, *args)
having(template : String, **tuple)
having(**tuple) having, or_having(node : Lustra::Expression::Node)
or_having(template : String, *args)
or_having(template : String, **named_tuple)
or_having(&) or_having
Instance methods inherited from module Lustra::SQL::Query::Where
clear_wheres
clear_wheres,
not(&)not(conditions : NamedTuple | Hash(String, Lustra::SQL::Any))
not(template : String)
not(template : String, *args)
not(template : String, **tuple)
not(**tuple) not, or(node : Lustra::Expression::Node)
or(&)
or(conditions : NamedTuple | Hash(String, Lustra::SQL::Any))
or(template : String, *args)
or(template : String, **tuple)
or(**tuple) or, where(node : Lustra::Expression::Node)
where(&)
where(conditions : NamedTuple | Hash(String, Lustra::SQL::Any))
where(template : String)
where(template : String, *args)
where(template : String, **tuple)
where(**tuple) where
Instance methods inherited from module Lustra::SQL::Query::Join
cross_join(name : Selectable, lateral = false)
cross_join,
full_outer_join(name : Selectable, lateral = false, &)full_outer_join(name : Selectable, condition : String = "true", lateral = false) full_outer_join, inner_join(name : Selectable, lateral = false, &)
inner_join(name : Selectable, condition : String = "true", lateral = false) inner_join, join(name : Selectable, type = :inner, lateral = false, &)
join(name : Selectable, type = :inner, condition : String = "true", lateral = false)
join(name : Selectable, type = :inner, lateral = false) join, left_join(name : Selectable, lateral = false, &)
left_join(name : Selectable, condition : String = "true", lateral = false) left_join, right_join(name : Selectable, lateral = false, &)
right_join(name : Selectable, condition : String = "true", lateral = false) right_join
Instance methods inherited from module Lustra::SQL::Query::From
clear_from
clear_from,
from(*args)from(**tuple) from, froms : Array(SQL::From) froms
Instance methods inherited from module Lustra::SQL::Query::Select
clear_distinct
clear_distinct,
clear_select
clear_select,
default_wildcard_table=(table : String | Nil = nil)
default_wildcard_table=,
distinct(on : String | Nil = "")
distinct,
distinct_value : String | Nil
distinct_value,
select(c : Column)select(*args) select