lite-report 1.1.1 → 1.2.0
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 +4 -4
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +34 -47
- data/README.md +9 -1
- data/lib/lite/report/record.rb +31 -7
- data/lib/lite/report/version.rb +1 -1
- data/lite-report.gemspec +1 -3
- metadata +3 -31
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e5306a141edec1f32743651c3fe81fc7d9f99a4f091ae21b2cee30de8e428b02
|
|
4
|
+
data.tar.gz: bef4ad772798d30c09c27ad0807201b0701062372b52ca7adfc3094715a6c636
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: effd567e92022ea1c3487694d41d692cb46fb5f01678676627d3c9deca79739c3fd61ce0994157067ad4ba0430f459a65b1fd5c61e541a33511056ebe7eb6355
|
|
7
|
+
data.tar.gz: 1d165fe27b4495ab9a594f7ff4c7f91f23c40d92309044c53ca21815134d6349ef6f4dd4fd538d1359db9a318c68989c31424c38b94738bd39b44255cccf5f07
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.20.0] - 2021-07-18
|
|
10
|
+
### Removed
|
|
11
|
+
- Removed `activerecord-import` dependency
|
|
12
|
+
- Removed `deep_pluck` dependency
|
|
13
|
+
|
|
9
14
|
## [1.1.1] - 2021-05-07
|
|
10
15
|
### Changed
|
|
11
16
|
- Linter fixes
|
data/Gemfile.lock
CHANGED
|
@@ -1,35 +1,31 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
lite-report (1.
|
|
4
|
+
lite-report (1.2.0)
|
|
5
5
|
activerecord
|
|
6
|
-
activerecord-import
|
|
7
|
-
deep_pluck
|
|
8
6
|
|
|
9
7
|
GEM
|
|
10
8
|
remote: https://rubygems.org/
|
|
11
9
|
specs:
|
|
12
|
-
actionpack (6.1.
|
|
13
|
-
actionview (= 6.1.
|
|
14
|
-
activesupport (= 6.1.
|
|
10
|
+
actionpack (6.1.4)
|
|
11
|
+
actionview (= 6.1.4)
|
|
12
|
+
activesupport (= 6.1.4)
|
|
15
13
|
rack (~> 2.0, >= 2.0.9)
|
|
16
14
|
rack-test (>= 0.6.3)
|
|
17
15
|
rails-dom-testing (~> 2.0)
|
|
18
16
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
19
|
-
actionview (6.1.
|
|
20
|
-
activesupport (= 6.1.
|
|
17
|
+
actionview (6.1.4)
|
|
18
|
+
activesupport (= 6.1.4)
|
|
21
19
|
builder (~> 3.1)
|
|
22
20
|
erubi (~> 1.4)
|
|
23
21
|
rails-dom-testing (~> 2.0)
|
|
24
22
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
25
|
-
activemodel (6.1.
|
|
26
|
-
activesupport (= 6.1.
|
|
27
|
-
activerecord (6.1.
|
|
28
|
-
activemodel (= 6.1.
|
|
29
|
-
activesupport (= 6.1.
|
|
30
|
-
|
|
31
|
-
activerecord (>= 3.2)
|
|
32
|
-
activesupport (6.1.3.2)
|
|
23
|
+
activemodel (6.1.4)
|
|
24
|
+
activesupport (= 6.1.4)
|
|
25
|
+
activerecord (6.1.4)
|
|
26
|
+
activemodel (= 6.1.4)
|
|
27
|
+
activesupport (= 6.1.4)
|
|
28
|
+
activesupport (6.1.4)
|
|
33
29
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
34
30
|
i18n (>= 1.6, < 2)
|
|
35
31
|
minitest (>= 5.1)
|
|
@@ -38,18 +34,14 @@ GEM
|
|
|
38
34
|
ast (2.4.2)
|
|
39
35
|
builder (3.2.4)
|
|
40
36
|
colorize (0.8.1)
|
|
41
|
-
concurrent-ruby (1.1.
|
|
37
|
+
concurrent-ruby (1.1.9)
|
|
42
38
|
crass (1.0.6)
|
|
43
39
|
database_cleaner (2.0.1)
|
|
44
40
|
database_cleaner-active_record (~> 2.0.0)
|
|
45
|
-
database_cleaner-active_record (2.0.
|
|
41
|
+
database_cleaner-active_record (2.0.1)
|
|
46
42
|
activerecord (>= 5.a)
|
|
47
43
|
database_cleaner-core (~> 2.0.0)
|
|
48
44
|
database_cleaner-core (2.0.1)
|
|
49
|
-
deep_pluck (1.1.7)
|
|
50
|
-
activerecord (>= 3)
|
|
51
|
-
pluck_all (>= 1.2.3)
|
|
52
|
-
rails_compatibility (>= 0.0.4)
|
|
53
45
|
diff-lcs (1.4.4)
|
|
54
46
|
erubi (1.10.0)
|
|
55
47
|
fasterer (0.9.0)
|
|
@@ -60,21 +52,18 @@ GEM
|
|
|
60
52
|
railties (>= 3.0.0)
|
|
61
53
|
i18n (1.8.10)
|
|
62
54
|
concurrent-ruby (~> 1.0)
|
|
63
|
-
loofah (2.
|
|
55
|
+
loofah (2.10.0)
|
|
64
56
|
crass (~> 1.0.2)
|
|
65
57
|
nokogiri (>= 1.5.9)
|
|
66
58
|
method_source (1.0.0)
|
|
67
|
-
mini_portile2 (2.5.
|
|
59
|
+
mini_portile2 (2.5.3)
|
|
68
60
|
minitest (5.14.4)
|
|
69
|
-
nokogiri (1.11.
|
|
61
|
+
nokogiri (1.11.7)
|
|
70
62
|
mini_portile2 (~> 2.5.0)
|
|
71
63
|
racc (~> 1.4)
|
|
72
64
|
parallel (1.20.1)
|
|
73
|
-
parser (3.0.
|
|
65
|
+
parser (3.0.2.0)
|
|
74
66
|
ast (~> 2.4.1)
|
|
75
|
-
pluck_all (2.2.1)
|
|
76
|
-
activesupport (>= 3.0.0)
|
|
77
|
-
rails_compatibility (>= 0.0.2)
|
|
78
67
|
racc (1.5.2)
|
|
79
68
|
rack (2.2.3)
|
|
80
69
|
rack-test (1.1.0)
|
|
@@ -84,16 +73,14 @@ GEM
|
|
|
84
73
|
nokogiri (>= 1.6)
|
|
85
74
|
rails-html-sanitizer (1.3.0)
|
|
86
75
|
loofah (~> 2.3)
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
actionpack (= 6.1.3.2)
|
|
91
|
-
activesupport (= 6.1.3.2)
|
|
76
|
+
railties (6.1.4)
|
|
77
|
+
actionpack (= 6.1.4)
|
|
78
|
+
activesupport (= 6.1.4)
|
|
92
79
|
method_source
|
|
93
|
-
rake (>= 0.
|
|
80
|
+
rake (>= 0.13)
|
|
94
81
|
thor (~> 1.0)
|
|
95
82
|
rainbow (3.0.0)
|
|
96
|
-
rake (13.0.
|
|
83
|
+
rake (13.0.6)
|
|
97
84
|
ransack (2.4.2)
|
|
98
85
|
activerecord (>= 5.2.4)
|
|
99
86
|
activesupport (>= 5.2.4)
|
|
@@ -121,29 +108,29 @@ GEM
|
|
|
121
108
|
rspec-mocks (~> 3.10)
|
|
122
109
|
rspec-support (~> 3.10)
|
|
123
110
|
rspec-support (3.10.2)
|
|
124
|
-
rubocop (1.
|
|
111
|
+
rubocop (1.18.3)
|
|
125
112
|
parallel (~> 1.10)
|
|
126
113
|
parser (>= 3.0.0.0)
|
|
127
114
|
rainbow (>= 2.2.2, < 4.0)
|
|
128
115
|
regexp_parser (>= 1.8, < 3.0)
|
|
129
116
|
rexml
|
|
130
|
-
rubocop-ast (>= 1.
|
|
117
|
+
rubocop-ast (>= 1.7.0, < 2.0)
|
|
131
118
|
ruby-progressbar (~> 1.7)
|
|
132
119
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
133
|
-
rubocop-ast (1.
|
|
120
|
+
rubocop-ast (1.8.0)
|
|
134
121
|
parser (>= 3.0.1.1)
|
|
135
|
-
rubocop-performance (1.11.
|
|
122
|
+
rubocop-performance (1.11.4)
|
|
136
123
|
rubocop (>= 1.7.0, < 2.0)
|
|
137
124
|
rubocop-ast (>= 0.4.0)
|
|
138
|
-
rubocop-rake (0.
|
|
139
|
-
rubocop
|
|
140
|
-
rubocop-rspec (2.
|
|
125
|
+
rubocop-rake (0.6.0)
|
|
126
|
+
rubocop (~> 1.0)
|
|
127
|
+
rubocop-rspec (2.4.0)
|
|
141
128
|
rubocop (~> 1.0)
|
|
142
129
|
rubocop-ast (>= 1.1.0)
|
|
143
130
|
ruby-progressbar (1.11.0)
|
|
144
|
-
ruby_parser (3.
|
|
145
|
-
sexp_processor (~> 4.
|
|
146
|
-
sexp_processor (4.15.
|
|
131
|
+
ruby_parser (3.16.0)
|
|
132
|
+
sexp_processor (~> 4.15, >= 4.15.1)
|
|
133
|
+
sexp_processor (4.15.3)
|
|
147
134
|
sqlite3 (1.4.2)
|
|
148
135
|
thor (1.1.0)
|
|
149
136
|
tzinfo (2.0.4)
|
|
@@ -171,4 +158,4 @@ DEPENDENCIES
|
|
|
171
158
|
sqlite3
|
|
172
159
|
|
|
173
160
|
BUNDLED WITH
|
|
174
|
-
2.2.
|
|
161
|
+
2.2.24
|
data/README.md
CHANGED
|
@@ -135,12 +135,15 @@ Lite::Report::Record.export(
|
|
|
135
135
|
}
|
|
136
136
|
)
|
|
137
137
|
|
|
138
|
-
# Convert CSV file to an array of records
|
|
138
|
+
# Convert CSV file to an array of records (import options are from Rails `insert_all`)
|
|
139
139
|
Lite::Report::Record.import(
|
|
140
140
|
'path/to/file.csv',
|
|
141
141
|
data_options: {
|
|
142
142
|
klass: User,
|
|
143
143
|
except: [:age, :sex]
|
|
144
|
+
},
|
|
145
|
+
import_options: {
|
|
146
|
+
unique_by: %w[Name Age]
|
|
144
147
|
}
|
|
145
148
|
)
|
|
146
149
|
```
|
|
@@ -162,6 +165,11 @@ class LimitedExporter < Lite::Report::Exporter
|
|
|
162
165
|
'Speed' => record.speed.ceil,
|
|
163
166
|
'Date' => record.to_s(:short)
|
|
164
167
|
}
|
|
168
|
+
|
|
169
|
+
# - or -
|
|
170
|
+
|
|
171
|
+
serializer = RecordSerializer.new(record)
|
|
172
|
+
serializer.serializable_hash
|
|
165
173
|
end
|
|
166
174
|
|
|
167
175
|
end
|
data/lib/lite/report/record.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'active_record'
|
|
4
|
-
require 'activerecord-import'
|
|
5
|
-
require 'deep_pluck'
|
|
6
4
|
|
|
7
5
|
class Lite::Report::Record < Lite::Report::Base
|
|
8
6
|
|
|
@@ -16,9 +14,13 @@ class Lite::Report::Record < Lite::Report::Base
|
|
|
16
14
|
assign_import_csv_options!
|
|
17
15
|
|
|
18
16
|
@data = Lite::Report::Hash.import(@data, csv_options: @csv_options, data_options: @data_options)
|
|
19
|
-
.each
|
|
17
|
+
.each do |row|
|
|
18
|
+
row.delete(:id) || row.delete('id')
|
|
19
|
+
(row['created_at'] ||= timestamp) if created_at_timestamp?
|
|
20
|
+
(row['updated_at'] ||= timestamp) if updated_at_timestamp?
|
|
21
|
+
end
|
|
20
22
|
|
|
21
|
-
klass.
|
|
23
|
+
klass.insert_all(@data, **@import_options)
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
private
|
|
@@ -41,9 +43,15 @@ class Lite::Report::Record < Lite::Report::Base
|
|
|
41
43
|
|
|
42
44
|
def assign_export_data!
|
|
43
45
|
columns = class_columns(@data)
|
|
44
|
-
@data =
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
@data = if ransack_class?(@data)
|
|
47
|
+
@data.result
|
|
48
|
+
elsif @data.try(:persisted?)
|
|
49
|
+
Array(@data)
|
|
50
|
+
else
|
|
51
|
+
@data
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
@data = @data.pluck(*columns).map { |values| columns.zip(values).to_h }
|
|
47
55
|
end
|
|
48
56
|
|
|
49
57
|
def generate_export!
|
|
@@ -56,4 +64,20 @@ class Lite::Report::Record < Lite::Report::Base
|
|
|
56
64
|
super
|
|
57
65
|
end
|
|
58
66
|
|
|
67
|
+
def timestamp
|
|
68
|
+
@timestamp ||= Time.try(:current) || Time.now
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def created_at_timestamp?
|
|
72
|
+
return @created_at_timestamp if defined?(@created_at_timestamp)
|
|
73
|
+
|
|
74
|
+
@created_at_timestamp = klass.new.respond_to?(:created_at)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def updated_at_timestamp?
|
|
78
|
+
return @updated_at_timestamp if defined?(@updated_at_timestamp)
|
|
79
|
+
|
|
80
|
+
@updated_at_timestamp = klass.new.respond_to?(:updated_at)
|
|
81
|
+
end
|
|
82
|
+
|
|
59
83
|
end
|
data/lib/lite/report/version.rb
CHANGED
data/lite-report.gemspec
CHANGED
|
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
|
25
25
|
)
|
|
26
26
|
else
|
|
27
27
|
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
|
28
|
-
|
|
28
|
+
'public gem pushes.'
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
# Specify which files should be added to the gem when it is released.
|
|
@@ -38,8 +38,6 @@ Gem::Specification.new do |spec|
|
|
|
38
38
|
spec.require_paths = %w[lib]
|
|
39
39
|
|
|
40
40
|
spec.add_runtime_dependency 'activerecord'
|
|
41
|
-
spec.add_runtime_dependency 'activerecord-import'
|
|
42
|
-
spec.add_runtime_dependency 'deep_pluck'
|
|
43
41
|
|
|
44
42
|
spec.add_development_dependency 'bundler'
|
|
45
43
|
spec.add_development_dependency 'database_cleaner'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lite-report
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Juan Gomez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-07-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -24,34 +24,6 @@ dependencies:
|
|
|
24
24
|
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: activerecord-import
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - ">="
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: deep_pluck
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
48
|
-
type: :runtime
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - ">="
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
55
27
|
- !ruby/object:Gem::Dependency
|
|
56
28
|
name: bundler
|
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -294,7 +266,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
294
266
|
- !ruby/object:Gem::Version
|
|
295
267
|
version: '0'
|
|
296
268
|
requirements: []
|
|
297
|
-
rubygems_version: 3.2.
|
|
269
|
+
rubygems_version: 3.2.24
|
|
298
270
|
signing_key:
|
|
299
271
|
specification_version: 4
|
|
300
272
|
summary: Import and export Ruby and Rails objects to flat files and vice versa
|