Class: Rubee::AssocArray

Inherits:
Array
  • Object
show all
Includes:
Hookable
Defined in:
lib/rubee/models/assoc_array.rb

Instance Method Summary collapse

Methods included from Hookable

included

Constructor Details

#initialize(*args, model, query_dataset, **options) ⇒ AssocArray

Returns a new instance of AssocArray.



10
11
12
13
14
15
# File 'lib/rubee/models/assoc_array.rb', line 10

def initialize(*args, model, query_dataset, **options)
  super(*args)
  @__model = model
  @__query_dataset = query_dataset
  @__pagination_meta = options[:pagination_meta]
end

Instance Method Details

#^Object



76
77
78
# File 'lib/rubee/models/assoc_array.rb', line 76

def ^
  @__query_dataset
end

#allObject



17
18
19
# File 'lib/rubee/models/assoc_array.rb', line 17

def all
  @__model.all(__query_dataset: @__query_dataset)
end

#find_first(*args) ⇒ Object



25
26
27
# File 'lib/rubee/models/assoc_array.rb', line 25

def find_first(*args)
  @__model.find_first(*args, __query_dataset: @__query_dataset)
end

#find_last(*args) ⇒ Object



29
30
31
# File 'lib/rubee/models/assoc_array.rb', line 29

def find_last(*args)
  @__model.find_last(*args, __query_dataset: @__query_dataset)
end

#join(*args) ⇒ Object



37
38
39
# File 'lib/rubee/models/assoc_array.rb', line 37

def join(*args)
  @__model.join(*args, __query_dataset: @__query_dataset)
end

#limit(*args) ⇒ Object



41
42
43
# File 'lib/rubee/models/assoc_array.rb', line 41

def limit(*args)
  @__model.limit(*args, __query_dataset: @__query_dataset)
end

#offset(*args) ⇒ Object



45
46
47
# File 'lib/rubee/models/assoc_array.rb', line 45

def offset(*args)
  @__model.offset(*args, __query_dataset: @__query_dataset)
end

#order(*args) ⇒ Object



33
34
35
# File 'lib/rubee/models/assoc_array.rb', line 33

def order(*args)
  @__model.order(*args, __query_dataset: @__query_dataset)
end

#owns_many(*args) ⇒ Object



49
50
51
# File 'lib/rubee/models/assoc_array.rb', line 49

def owns_many(*args)
  @__model.owns_many(*args, __query_dataset: @__query_dataset)
end

#paginate(*args) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/rubee/models/assoc_array.rb', line 53

def paginate(*args)
  total_count = @__query_dataset.count
  current_page, per_page = args
  total_pages = per_page.to_i > 0 ? (total_count / per_page.to_f).ceil : 1
  current_page = current_page.to_i > 0 ? current_page.to_i : 1
  per_page = per_page.to_i > 0 ? per_page.to_i : 10
  __pagination_meta = {
    current_page:,
    per_page:,
    total_count:,
    first_page: current_page == 1,
    last_page: current_page == total_pages,
    prev: current_page > 1 ? current_page - 1 : nil,
    next: current_page < total_pages ? current_page + 1 : nil,
  }

  @__model.paginate(*args, __query_dataset: @__query_dataset, __pagination_meta:)
end

#pagination_metaObject



72
73
74
# File 'lib/rubee/models/assoc_array.rb', line 72

def pagination_meta
  @__pagination_meta
end

#where(*args) ⇒ Object



21
22
23
# File 'lib/rubee/models/assoc_array.rb', line 21

def where(*args)
  @__model.where(*args, __query_dataset: @__query_dataset)
end