grape-listing 1.1.2.1 → 1.1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eeef22bceb680d605aec7a5f8e6e2b2a7f025c76d532528379edc8b9ca9a18bc
4
- data.tar.gz: 5836c64839d39ff0376cea000ead78da7735a07ed9c0301b219ced83b1fd783a
3
+ metadata.gz: df43f38058e07a439caa2da68253d606fe76835de2a4de02e427ea16d5cc7952
4
+ data.tar.gz: 97fe79b8e410b1925837f5f26d1c458d53ae18205b46d00bb7664f8a0e5ad634
5
5
  SHA512:
6
- metadata.gz: 2c72f1641ffeb36e8bcd3ae1b17ddbeed9e03a792aad7a4596486f17d50de4326b089a7edcc8b1c547bc01068d9235c2d2bf78b2c11b9129fe6a7e6d560c7168
7
- data.tar.gz: 37ee5594dfd0aa6ab07bd6e40bfa4ba372b594bb6183e13e5cf6deb79a7f969e43f89550314967daed2ac2cfb89997ced018917a1f696d2661110ebd4ea46b6f
6
+ metadata.gz: 697c2a08f77c8f16e33c0d11813536ed0e4e18e143a13e8e32d1e9d08d3f4ac29b335c71ad179a8c1fe90a0265b3bf22061560f4063b420bda5550f59449e70a
7
+ data.tar.gz: b85cd8a772356e7446a57770e71969578386f68c205c52ef410feb7d2b99ac1ae9f28d27e1ddcdf7ed6caa7a383eeff70a0ed099070c59bc33480871ae4311ce
data/README.md CHANGED
@@ -21,7 +21,6 @@ bundle
21
21
 
22
22
  Использование с помощью вызова метода-хелпера `listing` и передачи в него необходимых опций.
23
23
 
24
-
25
24
  Например:
26
25
 
27
26
  ```
@@ -69,9 +68,9 @@ end
69
68
 
70
69
  ### Формирование эл. таблиц
71
70
 
72
- При передаче параметра `spreadsheet=true` происходит формирование эл. таблицы в виде XLSX файла с учетом всех остальных переданных параметров. Параметр `columns` при этом является обязательным.
71
+ При передаче параметра `spreadsheet=true` происходит формирование эл. таблицы в виде XLSX файла с учетом всех остальных переданных параметров.
73
72
 
74
- Заголовки эл. таблицы будут взяты из описаний полей таблицы БД с соответствующими названиями. Значения будут сформированы путем обработки переданного списка колонок как методов.
73
+ Заголовки эл. таблицы будут взяты из описаний полей таблицы БД с соответствующими названиями или описаний полей Grape Entity.
75
74
 
76
75
  ## Конфигурация
77
76
 
data/lib/grape_listing.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'extensions/object'
2
1
  require 'grape/dsl'
3
2
  require 'grape_listing/configuration'
4
3
  require 'grape_listing_service'
@@ -17,7 +17,7 @@ module GrapeListing
17
17
 
18
18
  def paginate
19
19
  # коллекция записей ActiveRecord для применения аггрегирования
20
- list = @objects || @model.unscoped.merge(@scopes)
20
+ list = @objects || @model.merge(@scopes)
21
21
 
22
22
  # применение сортировки и пагинации к коллекции записей
23
23
  @objects = list.offset(@offset).merge(sort_proc).limit(@limit)
@@ -6,7 +6,7 @@ module GrapeListing
6
6
  def search
7
7
  @search_fields&.each do |field|
8
8
  # коллекция записей для дальнейшей фильтрации
9
- list = @objects || @model.unscoped.merge(@scopes)
9
+ list = @objects || @model.merge(@scopes)
10
10
 
11
11
  # оператор и значение для поиска
12
12
  operator, value = search_operands(field)
@@ -4,13 +4,11 @@ module GrapeListing
4
4
  module Spreadsheet
5
5
 
6
6
  def spreadsheet
7
- @spreadsheet_cols = @params['columns'].map(&:to_sym)
8
-
9
7
  # поиск и фильтрация
10
8
  search
11
9
 
12
10
  # коллекция записей ActiveRecord для формирования эл. таблицы
13
- records = @objects || @model.unscoped.merge(@scopes)
11
+ records = @objects || @model.merge(@scopes)
14
12
 
15
13
  # ограничение записей
16
14
  records = records.order(:id).offset(@offset).limit(@limit)
@@ -46,7 +44,7 @@ module GrapeListing
46
44
 
47
45
  # содержимое
48
46
  objects.each do |object|
49
- values = object.slice(*@spreadsheet_cols).values
47
+ values = object.slice(*spreadsheet_cols).values
50
48
  worksheet.append_row(values)
51
49
  end
52
50
 
@@ -57,14 +55,31 @@ module GrapeListing
57
55
  filepath
58
56
  end
59
57
 
58
+ def grape_entity_columns
59
+ @grape_entity.root_exposures.map do |exposure|
60
+ unless exposure.key == :deleted_at
61
+ exposure.key
62
+ end
63
+ end.compact
64
+ end
65
+
66
+ def spreadsheet_cols
67
+ @spreadsheet_cols ||=
68
+ if @params['columns'].to_a.any?
69
+ grape_entity_columns & @params['columns'].map(&:to_sym)
70
+ else
71
+ grape_entity_columns
72
+ end
73
+ end
74
+
60
75
  def spreadsheet_titles
61
76
  values = []
62
77
  entity_doc = @grape_entity.documentation
63
- model_cols = @model.columns.to_h { |i| [i.name.to_sym, i] }
78
+ model_cols = @model.columns_hash
64
79
 
65
- @spreadsheet_cols.each do |column|
80
+ spreadsheet_cols.each do |column|
66
81
  # поиск описания среди комментариев к таблице БД
67
- db_col = model_cols[column]
82
+ db_col = model_cols[column.to_s]
68
83
  if db_col&.comment&.present?
69
84
  values << db_col.comment
70
85
  next
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grape-listing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2.1
4
+ version: 1.1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Павел Бабин
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-11 00:00:00.000000000 Z
11
+ date: 2024-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -101,7 +101,6 @@ extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
103
  - README.md
104
- - lib/extensions/object.rb
105
104
  - lib/grape-listing.rb
106
105
  - lib/grape/dsl.rb
107
106
  - lib/grape_listing.rb
@@ -133,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
132
  - !ruby/object:Gem::Version
134
133
  version: '0'
135
134
  requirements: []
136
- rubygems_version: 3.4.10
135
+ rubygems_version: 3.0.6
137
136
  signing_key:
138
137
  specification_version: 4
139
138
  summary: Формирование списков записей для API на базе Grape
@@ -1,7 +0,0 @@
1
- class Object
2
-
3
- def send_chain(arr)
4
- Array(arr).inject(self) { |o, a| o.send(*a) }
5
- end
6
-
7
- end