pureapi 0.1.0 → 0.1.1

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
  SHA1:
3
- metadata.gz: 29f9ce1d05cb751dbf596027db202822a3673eaa
4
- data.tar.gz: f3166e0119282f230f7250782153cf83a4bb884e
3
+ metadata.gz: 628bbd91dbfc41389e809cae66cfb3d54bba240d
4
+ data.tar.gz: e03758fcb81833fbb791489a55241dbe1326459e
5
5
  SHA512:
6
- metadata.gz: c0e73f3029f3d785c960599c23cc6d71f5041044eaa9e80c205246bf1b100178fe2345bf5e91720cc467a92e310bb9e703bf8f88ed2ad3a33f3b55c2365e327a
7
- data.tar.gz: a4b8f0a24ef52c14f16e34d884ca3b9a3447d2703c383d9cd32f558962ffaa7d0e652856a99b5fea6d1cc5ef20718bd65327119085de4288f085556dd1fbcf4d
6
+ metadata.gz: 4af6e348397ef06958d1db53fc57a113743b79c771dc434e424e322dfcb23785083f5cd3229e35ddbd3ecfdce74179f397daa5ffa5981ee349052bf784e1c9cb
7
+ data.tar.gz: d77d76005ffad94bf19c3b72c56a331874fb13df9ff14effc1019c0a1c275265da2eca732a6fba08dc9c94e20f0ae57f69b189e93e9a3da03744cbcf03b028ce
@@ -1,3 +1,5 @@
1
+ require 'pureapi/model'
2
+
1
3
  # Implement methods use for handle with table records like
2
4
  # 1. Pagination
3
5
  # 2. Sort
@@ -198,7 +200,7 @@ module Pureapi::Controller
198
200
  compcond_params = []
199
201
 
200
202
  objects.compcond_columns.each do |column_name|
201
- Constants::COMPARISON_OPERATORS.each do |key, value|
203
+ Pureapi::Model::COMPARISON_OPERATORS.each do |key, value|
202
204
  compcond_params << [column_name, key].join('.')
203
205
  end
204
206
  end
@@ -207,16 +209,16 @@ module Pureapi::Controller
207
209
  params[:compconds] = {}
208
210
 
209
211
  compconds.each do |compcond|
210
- params[:compconds]["#{compcond[:f]}.#{Constants::COMPARISON_OPERATORS_INVERT[compcond[:o]]}"] = compcond[:v]
212
+ params[:compconds]["#{compcond[:f]}.#{Pureapi::Model::COMPARISON_OPERATORS_INVERT[compcond[:o]]}"] = compcond[:v]
211
213
  end
212
214
 
213
215
  objects.compconds(compconds)
214
216
  end
215
217
 
216
218
  # Not use under code because lte => lt
217
- # matchs = /([a-z0-9_]+)\.(#{Constants::COMPARISON_OPERATORS.keys.join('|')})/.match(key)
219
+ # matchs = /([a-z0-9_]+)\.(#{Pureapi::Model::COMPARISON_OPERATORS.keys.join('|')})/.match(key)
218
220
  # if matchs && column_names.include?(matchs[1])
219
- # results << {f: matchs[1], o: Constants::COMPARISON_OPERATORS[matchs[2].to_sym], v: value}
221
+ # results << {f: matchs[1], o: Pureapi::Model::COMPARISON_OPERATORS[matchs[2].to_sym], v: value}
220
222
  # end
221
223
  def parse_compconds(compconds = {}, column_names = [])
222
224
  results = []
@@ -225,13 +227,13 @@ module Pureapi::Controller
225
227
  splits = key.split('.')
226
228
 
227
229
  if splits.length == 2 && column_names.include?(splits[0])
228
- if splits[1].to_sym == :eq && Constants::NULL_OPERATOR_KEYS.include?(value)
230
+ if splits[1].to_sym == :eq && Pureapi::Model::NULL_OPERATOR_KEYS.include?(value)
229
231
  results << {
230
232
  f: splits[0],
231
- o: Constants::COMPARISON_OPERATORS[splits[1].to_sym],
232
- v: Constants::NULL_OPERATORS[value]}
233
+ o: Pureapi::Model::COMPARISON_OPERATORS[splits[1].to_sym],
234
+ v: Pureapi::Model::NULL_OPERATORS[value]}
233
235
  else
234
- results << {f: splits[0], o: Constants::COMPARISON_OPERATORS[splits[1].to_sym], v: value}
236
+ results << {f: splits[0], o: Pureapi::Model::COMPARISON_OPERATORS[splits[1].to_sym], v: value}
235
237
  end
236
238
  end
237
239
  end unless compconds.blank?
@@ -254,7 +256,7 @@ module Pureapi::Controller
254
256
  params[:logics] = {}
255
257
 
256
258
  logics.each do |logic|
257
- params[:logics]["#{logic[:f]}.#{Constants::LOGICAL_OPERATORS_INVERT[logic[:o]]}"] = logic[:v]
259
+ params[:logics]["#{logic[:f]}.#{Pureapi::Model::LOGICAL_OPERATORS_INVERT[logic[:o]]}"] = logic[:v]
258
260
  end
259
261
 
260
262
  objects.logicconds(logics)
@@ -271,7 +273,7 @@ module Pureapi::Controller
271
273
  splits = key.split('.')
272
274
 
273
275
  if splits.length == 2 && column_names.include?(splits[0])
274
- results << {f: splits[0], o: Constants::LOGICAL_OPERATORS[splits[1].to_sym], v: value}
276
+ results << {f: splits[0], o: Pureapi::Model::LOGICAL_OPERATORS[splits[1].to_sym], v: value}
275
277
  end
276
278
  end unless compconds.blank?
277
279
 
@@ -289,11 +291,11 @@ module Pureapi::Controller
289
291
  # Criteria model that will be pagination
290
292
  # Return criteria_model.paginate and params[:page, :per_page, :page_total]
291
293
  def paging_standard(criteria_model)
292
- per_page = [paging_params[:per_page].try(:to_i) || Constants::Pagination::DEFAULT_PER_PAGE, 1].max
294
+ per_page = [paging_params[:per_page].try(:to_i) || Pureapi::Model::Pagination::DEFAULT_PER_PAGE, 1].max
293
295
 
294
296
  # Paging standard
295
297
  record_total = criteria_model.count
296
- per_page = record_total if paging_params[:per_page] == Constants::Pagination::INFINITE_PER_PAGE\
298
+ per_page = record_total if paging_params[:per_page] == Pureapi::Model::Pagination::INFINITE_PER_PAGE\
297
299
  && record_total > 0
298
300
  page_total = (record_total.to_f / per_page).ceil
299
301
  page = validate_page(paging_params[:page].try(:to_i) || 1, page_total)
data/lib/pureapi/model.rb CHANGED
@@ -2,6 +2,38 @@
2
2
  # 1. Methods in as_json
3
3
  # 2.
4
4
  module Pureapi::Model
5
+ # Define constants use for pure api
6
+ module Pagination
7
+ DEFAULT_PER_PAGE = 10
8
+ INFINITE_PER_PAGE = 'infinite'.freeze
9
+ end
10
+
11
+ COMPARISON_OPERATORS = {
12
+ eq: '=',
13
+ ne: '<>',
14
+ gt: '>',
15
+ lt: '<',
16
+ gte: '>=',
17
+ lte: '<=',
18
+ like: 'LIKE',
19
+ nlike: 'NOT LIKE',
20
+ regex: 'REGEXP',
21
+ }
22
+
23
+ NULL_OPERATORS = {
24
+ 'null' => nil,
25
+ 'blank' => [nil, ''],
26
+ }
27
+
28
+ LOGICAL_OPERATORS = {
29
+ in: 'IN'
30
+ }
31
+
32
+ COMPARISON_OPERATORS_INVERT = COMPARISON_OPERATORS.invert
33
+ LOGICAL_OPERATORS_INVERT = LOGICAL_OPERATORS.invert
34
+ NULL_OPERATOR_KEYS = NULL_OPERATORS.keys
35
+
36
+
5
37
  # return default array contains methods for as_json
6
38
  # Eg. [:status_name, :path_detail, :restrictions, :channel_course_code]
7
39
  def json_methods
@@ -62,7 +94,7 @@ module Pureapi::Model
62
94
  criterias = self
63
95
 
64
96
  params.each do |param|
65
- if param[:o] == '='
97
+ if param[:o] == COMPARISON_OPERATORS[:eq]
66
98
  criterias = criterias.where(param[:f] => param[:v])
67
99
  else
68
100
  criterias = criterias.where("`#{self.table_name}`.`#{param[:f]}` #{param[:o]} ?", param[:v])
@@ -81,7 +113,7 @@ module Pureapi::Model
81
113
  criterias = self
82
114
 
83
115
  params.each do |param|
84
- if param[:o] == 'IN'
116
+ if param[:o] == LOGICAL_OPERATORS[:in]
85
117
  criterias = criterias.where(param[:f] => param[:v])
86
118
  end
87
119
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pureapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dieu Pham