railspp 0.2.5 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ee15066e3921cbbc34a3ec7879f03888f6cd61fb351b38adb7ce51ad17cd106
4
- data.tar.gz: 0c5be10ed1ac1c78d29a3173db7738afa8b49024f3a89e060634651203ae7724
3
+ metadata.gz: 517e702540a5b51072c0990ce8db30bfd7b05cf95c7201763bad4bcf295303ca
4
+ data.tar.gz: 5b3ee44ec775458339eab499682d61e043ba4f064f25184cc9463bcc24893ed7
5
5
  SHA512:
6
- metadata.gz: fcf927f3a5b8b486fa23a09e9fdfd7eb45c7f45a7db17beedbb23c5ae9ac0b2701e1bd8780a372643310fa432fcbb16a152bdde39ad80e563d4280b3ce071923
7
- data.tar.gz: b17a6c5dc105401dd625546e00b18cf5c3d2161e2edfd0f0d884ca8e1fbec5fd2a6af514a8829afca52f231843036e5ea5d85bcf5544b5222983a2d856389174
6
+ metadata.gz: d0ee0cd730181a438321c4709454a92847b1945e7b90d448db2c6f06c207a09a5ff72b5896d9286e8fe906b8e3cab7860596c73e06db31d86f27ffc2c435084b
7
+ data.tar.gz: ec76eb3b0a04bb8b932254f3469aa27610f749526811e7c28eb041b646d11e4ce7db836716ee17cf08ff9ea1192ad05ed4b1a255ee7fa044c14e82462d10cc35
@@ -1,191 +1,199 @@
1
1
  class GlobalController < ApplicationController
2
2
 
3
- include Response
4
- include ExceptionHandler
5
-
6
- def default_per_page
7
- 25
8
- end
9
-
10
- def model
11
- self.class.to_s.split('::').select { |e| /Controller/.match(e) }.first.chomp('Controller').singularize.constantize
12
- end
13
-
14
- def index
15
- resp = index_response
16
- past_pages = resp[:last_page] < resp[:current_page]
17
- error = { error: 'Past the amount of pages available' }
18
- render_json(past_pages ? error : index_response, past_pages ? 400 : 200)
19
- end
20
-
21
- def show
22
- data = model.find(params[:id] || 0)
23
- data = data.includes(*get_includes) if params[:include]
24
- render_json(data, 200)
25
- end
26
-
27
- def create
28
- data = model.create(create_params)
29
- render_json(data, 201)
30
- end
31
-
32
- def update
33
- data = model.where(id: params[:id] || 0).update(update_params).first
34
- render_json(data, 200)
35
- end
36
-
37
- def destroy
38
- model.destroy(params[:id] || 0)
39
- render_json(nil, 204)
40
- end
41
-
42
- def bulk_csv_create
43
- data = model.create(csv_to_json)
44
- render_json(data, 201)
45
- end
46
-
47
- def bulk_create
48
- data = model.create(bulk_create_params)
49
- render_json(data, 201)
50
- end
51
-
52
- def bulk_update
53
- data = model.where(id: bulk_update_params[:id]).update(bulk_update_params)
54
- render_json(data, 201)
55
- end
56
-
57
- def bulk_destory
58
- model.where(id: bulk_destroy_params)
59
- render_json(nil, 204)
60
- end
61
-
62
- private
63
-
64
- def csv_to_json param_key = :file, separated_by = ','
65
- lines = params[param_key].split("\n")
66
- keys = lines[0].split(separated_by)
67
- rows = lines.slice(1).map { |e| e.split(separated_by) }
68
- rows.map { |e| e.each_with_index.inject({}) { |acc, (e, i)| acc.merge("#{keys[i]}": e) } }
69
- end
70
-
71
- def create_params
72
- bl = array_to_hash(black_list_create)
73
- params.permit(*get_model_key.reject { |e| bl[e.to_sym] })
74
- end
75
-
76
- def update_params
77
- bl = array_to_hash(black_list_update)
78
- params.permit(*get_model_key.reject { |e| bl[e.to_sym] })
79
- end
80
-
81
- def bulk_create_params
82
- params.permit(bulk: get_model_key)
83
- end
84
-
85
- def bulk_update_params
86
- params.permit(bulk: get_model_key)
87
- end
88
-
89
- def bulk_destroy_params
90
- params.permit(bulk: [:id])
91
- end
92
-
93
- def black_list_create
94
- [:id, :created_at, :updated_at]
95
- end
96
-
97
- def black_list_update
98
- [:id, :created_at, :updated_at]
99
- end
100
-
101
- def array_to_hash array
102
- array.each_with_object({}) do |e, acc|
103
- acc[e] = true
104
- acc
105
- end
106
- end
107
-
108
- def handle_pagination
109
- limit = (params[:limit] || default_per_page).to_i
110
- offset = (params[:offset] || 0).to_i
111
- page = (params[:page] || 1).to_i
112
-
113
- data = model.limit(limit).offset(offset).offset((page - 1) * limit)
114
- data = data.where(get_where) if params[:where]
115
- data = data.includes(*get_includes) if params[:include]
116
- data = data.order(get_order) if params[:order]
117
- data = data.all
118
- data
119
- end
120
-
121
- def handle_pagination_count
122
- data = model
123
- data = data.where(get_where) if params[:where]
124
- data.count
125
- end
126
-
127
- def index_response
128
- page = (params[:page] || 1).to_i
129
- per_page = (params[:limit] || default_per_page).to_i
130
- total = handle_pagination_count
131
- path = request.original_url
132
- path_path = add_pg_qs(path)
133
- last = (total / per_page.to_f).ceil
134
- nxt = (page + 1) > last ? nil : (page + 1)
135
- prev = (page - 1) == 0 ? nil : (page - 1)
136
- last = last == 0 ? 1 : last
137
- data = handle_pagination
138
- data_first = data.first
139
- data_last = data.last
140
-
141
- {
142
- data: data,
143
- from: data_first ? data_first.id : nil,
144
- to: data_last ? data_last.id : nil,
145
- total: total,
146
- path: path,
147
- current_page: page,
148
- per_page: per_page,
149
- last_page: last,
150
- first_page_url: path_path + '1',
151
- last_page_url: path_path + last.to_s,
152
- next_page_url: nxt ? (path_path + nxt.to_s) : nil,
153
- prev_page_url: prev ? (path_path + prev.to_s) : nil,
154
- }
155
- end
156
-
157
- def add_pg_qs str
158
- has_qs = /\?/.match(str)
159
- return "#{str}?page=" unless has_qs
160
- before_qs, after = str.split('?')
161
- after_qs = after.split('&').reject { |e| /page\=/.match(e) }
162
- after_qs.push('page=')
163
- "#{before_qs}?#{after_qs.join('&')}"
164
- end
165
-
166
- def get_includes
167
- comma_separated(params[:include]).map(&:to_sym)
168
- end
169
-
170
- def get_order
171
- params[:order].split(',').flat_map { |e| e.split(':') }.join(' ')
172
- end
173
-
174
- def get_where
175
- arrays = params[:where].split(',').map { |e| e.split(':') }
176
- arrays.inject({}) do |acc, item|
177
- key, val = item
178
- acc[key] = val
179
- acc
180
- end
181
- end
182
-
183
- def comma_separated key
184
- params[:key].split(',')
185
- end
186
-
187
- def get_model_key
188
- model.columns.map { |e| e.name.to_sym }
189
- end
3
+ include ExceptionHandler
4
+ include Response
5
+
6
+ def default_per_page
7
+ 25
8
+ end
9
+
10
+ def model
11
+ self.class.to_s.split('::').select { |e| /Controller/.match(e) }.first.chomp('Controller').singularize.constantize
12
+ end
13
+
14
+ def index
15
+ resp = index_response
16
+ past_pages = resp[:last_page] < resp[:current_page]
17
+ error = { error: 'Past the amount of pages available' }
18
+ status = past_pages ? 400 : 200
19
+ data = past_pages ? error : index_response
20
+ data = handle_includes(data) if params[:include]
21
+ render_json(data, status)
22
+ end
23
+
24
+ def show
25
+ data = model.find(params[:id] || 0)
26
+ data = data.includes(*get_includes) if params[:include]
27
+ data = handle_includes(data) if params[:include]
28
+ render_json(data, 200)
29
+ end
30
+
31
+ def create
32
+ data = model.create(create_params)
33
+ render_json(data, 201)
34
+ end
35
+
36
+ def update
37
+ data = model.where(id: params[:id] || 0).update(update_params).first
38
+ render_json(data, 200)
39
+ end
40
+
41
+ def destroy
42
+ model.destroy(params[:id] || 0)
43
+ render_json(nil, 204)
44
+ end
45
+
46
+ def bulk_csv_create
47
+ data = model.create(csv_to_json)
48
+ render_json(data, 201)
49
+ end
50
+
51
+ def bulk_create
52
+ data = model.create(bulk_create_params)
53
+ render_json(data, 201)
54
+ end
55
+
56
+ def bulk_update
57
+ data = model.where(id: bulk_update_params[:id]).update(bulk_update_params)
58
+ render_json(data, 201)
59
+ end
60
+
61
+ def bulk_destory
62
+ model.where(id: bulk_destroy_params)
63
+ render_json(nil, 204)
64
+ end
65
+
66
+ private
67
+
68
+ def csv_to_json param_key = :file, separated_by = ','
69
+ lines = params[param_key].split("\n")
70
+ keys = lines[0].split(separated_by)
71
+ rows = lines.slice(1).map { |e| e.split(separated_by) }
72
+ rows.map { |e| e.each_with_index.inject({}) { |acc, (e, i)| acc.merge("#{keys[i]}": e) } }
73
+ end
74
+
75
+ def create_params
76
+ bl = array_to_hash(black_list_create)
77
+ params.permit(*get_model_key.reject { |e| bl[e.to_sym] })
78
+ end
79
+
80
+ def update_params
81
+ bl = array_to_hash(black_list_update)
82
+ params.permit(*get_model_key.reject { |e| bl[e.to_sym] })
83
+ end
84
+
85
+ def bulk_create_params
86
+ params.permit(bulk: get_model_key)
87
+ end
88
+
89
+ def bulk_update_params
90
+ params.permit(bulk: get_model_key)
91
+ end
92
+
93
+ def bulk_destroy_params
94
+ params.permit(bulk: [:id])
95
+ end
96
+
97
+ def black_list_create
98
+ [:id, :created_at, :updated_at]
99
+ end
100
+
101
+ def black_list_update
102
+ [:id, :created_at, :updated_at]
103
+ end
104
+
105
+ def array_to_hash array
106
+ array.each_with_object({}) do |e, acc|
107
+ acc[e] = true
108
+ acc
109
+ end
110
+ end
111
+
112
+ def handle_pagination
113
+ limit = (params[:limit] || default_per_page).to_i
114
+ offset = (params[:offset] || 0).to_i
115
+ page = (params[:page] || 1).to_i
116
+
117
+ data = model.limit(limit).offset(offset).offset((page - 1) * limit)
118
+ data = data.where(get_where) if params[:where]
119
+ data = data.includes(*get_includes) if params[:include]
120
+ data = data.order(get_order) if params[:order]
121
+ data = data.all
122
+ data
123
+ end
124
+
125
+ def handle_pagination_count
126
+ data = model
127
+ data = data.where(get_where) if params[:where]
128
+ data.count
129
+ end
130
+
131
+ def handle_includes data
132
+ data.to_json({ include: get_includes })
133
+ end
134
+
135
+ def index_response
136
+ page = (params[:page] || 1).to_i
137
+ per_page = (params[:limit] || default_per_page).to_i
138
+ total = handle_pagination_count
139
+ path = request.original_url
140
+ path_path = add_pg_qs(path)
141
+ last = (total / per_page.to_f).ceil
142
+ nxt = (page + 1) > last ? nil : (page + 1)
143
+ prev = (page - 1) == 0 ? nil : (page - 1)
144
+ last = last == 0 ? 1 : last
145
+ data = handle_pagination
146
+ data_first = data.first
147
+ data_last = data.last
148
+
149
+ {
150
+ data: data,
151
+ from: data_first ? data_first.id : nil,
152
+ to: data_last ? data_last.id : nil,
153
+ total: total,
154
+ path: path,
155
+ current_page: page,
156
+ per_page: per_page,
157
+ last_page: last,
158
+ first_page_url: path_path + '1',
159
+ last_page_url: path_path + last.to_s,
160
+ next_page_url: nxt ? (path_path + nxt.to_s) : nil,
161
+ prev_page_url: prev ? (path_path + prev.to_s) : nil,
162
+ }
163
+ end
164
+
165
+ def add_pg_qs str
166
+ has_qs = /\?/.match(str)
167
+ return "#{str}?page=" unless has_qs
168
+ before_qs, after = str.split('?')
169
+ after_qs = after.split('&').reject { |e| /page\=/.match(e) }
170
+ after_qs.push('page=')
171
+ "#{before_qs}?#{after_qs.join('&')}"
172
+ end
173
+
174
+ def get_includes
175
+ comma_separated(:include).map(&:to_sym)
176
+ end
177
+
178
+ def get_order
179
+ params[:order].split(',').flat_map { |e| e.split(':') }.join(' ')
180
+ end
181
+
182
+ def get_where
183
+ arrays = params[:where].split(',').map { |e| e.split(':') }
184
+ arrays.inject({}) do |acc, item|
185
+ key, val = item
186
+ acc[key] = val
187
+ acc
188
+ end
189
+ end
190
+
191
+ def comma_separated key
192
+ params[key].split(',')
193
+ end
194
+
195
+ def get_model_key
196
+ model.columns.map { |e| e.name.to_sym }
197
+ end
190
198
 
191
199
  end
data/lib/utils/strings.rb CHANGED
@@ -21,7 +21,7 @@ class MoreUtils
21
21
  class << self
22
22
 
23
23
  def gem_version
24
- "0.2.5"
24
+ "0.2.7"
25
25
  end
26
26
 
27
27
  def get_file_str path
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railspp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Layne Faler