6 def initialize items, paginate
13 attr :item_name, :list_name,
14 :model_manifest, :model_list_manifest, :model,
15 :default_page_size, :max_page_size
16 def initialize item_name, list_name
17 @item_name = item_name
18 @list_name = list_name
23 @list_group_manifest = LocalManifest.manifest.list_groups[@item_name]
24 @list_manifest = @list_group_manifest.lists[@list_name]
25 @where = @list_manifest.where
26 @includes = @list_manifest.includes
27 @model_manifest = ::Manifest.manifest.models[@item_name]
28 @model_list_manifest = @model_manifest.list
29 @model = ::Manifest.item_name_to_model @item_name
30 @table_name = @model.table_name
41 def page_number prm = nil
49 page_size = self.max_page_size if page_size > self.max_page_size
50 page_size = self.default_page_size if page_size < 1
55 @model_list_manifest.default_page_size
59 @model_list_manifest.max_page_size
62 def base_where_condition
63 method_name = @where.conditions do |name|
67 @model.__send__ method_name
82 def items operators, options, offset, page_size
83 @model.where(self.where_condition).includes(self.include_hash).order(self.order).offset(offset).limit(page_size)
86 def count operators, options
87 @model.where(self.where_condition).includes(self.include_hash).count
90 def paginate count, offset, page_size
91 c = count ? count.to_i : 0
92 Kaminari.paginate_array(Array.new(c, nil)).page(offset).per(page_size)
96 @model.my_peta.boost.select do |boost_name, boost_manifest|
97 boost_manifest.level == 'show'
102 manifests = self.boost_manifests
104 manifests.each do |boost_manifest|
110 def open operators, options
111 page = self.page_number(options[:page])
112 page_size = self.page_size options[:page_size]
113 offset = (page -1) * page_size
114 items = self.items operators, options, offset, page_size
115 count = self.count operators, options
116 pg = self.paginate count, offset, page_size
118 ListResult.new items, pg