Pagination & Ordering

Pagination

For now you can only specify limit and offset: #limit only accepts an Int32 while you can pass an Int32 or Int64 number to the #offset.

Contact.all.limit(10).offset(10)
# Or an offset in Int64
Contact.all.limit(10).offset(10_i64)

Order

You can specifies orders to sort by:

# named tuple
Contact.all.order(name: :asc, id: "desc")
# symbol key hash
Contact.all.order({:name => :asc})
# string key hash
Contact.all.order({"name" => :asc})
# with block returning array of Jennifer::QueryBuilder::OrderExpression
Contact.all.order { [_name.asc] }
# or pass it as an argument
Contact.all.order(Contact._name.asc)

Any symbol-based names are considered as a column names. Any string-based - as raw SQL.

Reorder

To avoid all existing ordering and assign new one:

c = Contact.all.order(name: :desc)
c.reoder(id: :asc).to_a