Module: Supabase::Postgrest::SelectMixin

Included in:
RPCFilterRequestBuilder, SelectRequestBuilder
Defined in:
lib/supabase/postgrest/request_builder.rb

Overview

Mixin providing select-only modifiers (order/limit/offset/range).

Instance Method Summary collapse

Instance Method Details

#limit(size, foreign_table: nil) ⇒ Object



370
371
372
373
374
# File 'lib/supabase/postgrest/request_builder.rb', line 370

def limit(size, foreign_table: nil)
  key = foreign_table ? "#{foreign_table}.limit" : "limit"
  @request.params[key] = size
  self
end

#offset(size) ⇒ Object



376
377
378
379
# File 'lib/supabase/postgrest/request_builder.rb', line 376

def offset(size)
  @request.params["offset"] = size
  self
end

#order(column, desc: false, nullsfirst: nil, foreign_table: nil) ⇒ Object



359
360
361
362
363
364
365
366
367
368
# File 'lib/supabase/postgrest/request_builder.rb', line 359

def order(column, desc: false, nullsfirst: nil, foreign_table: nil)
  key = foreign_table ? "#{foreign_table}.order" : "order"
  direction = desc ? "desc" : "asc"
  nulls = nullsfirst.nil? ? "" : ".#{nullsfirst ? 'nullsfirst' : 'nullslast'}"
  new_value = "#{column}.#{direction}#{nulls}"

  existing = @request.params[key]
  @request.params[key] = existing ? "#{existing},#{new_value}" : new_value
  self
end

#range(start, finish, foreign_table: nil) ⇒ Object



381
382
383
384
385
386
387
# File 'lib/supabase/postgrest/request_builder.rb', line 381

def range(start, finish, foreign_table: nil)
  offset_key = foreign_table ? "#{foreign_table}.offset" : "offset"
  limit_key = foreign_table ? "#{foreign_table}.limit" : "limit"
  @request.params[offset_key] = start
  @request.params[limit_key] = finish - start + 1
  self
end