nextable 0.0.10 → 0.0.11

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/nextable/db.rb +79 -77
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6888ead2220817a01ca4dbdfbd5b6c18f9783b0e
4
- data.tar.gz: d740dc9914831c21e109774838769a0b4f2e76b9
3
+ metadata.gz: e3f8ffea44745725ecde5426e754f0ebbfea743b
4
+ data.tar.gz: 2d78694eec38842bea48f790214f8ccf9613826f
5
5
  SHA512:
6
- metadata.gz: e593cd69cdd0758341ba8da673e43690f0ecd5942cb441867a97829281efc9b9e974fdd833c619c2da670d2aa61a168cf67e7b457daa3a071a1a43f622a83b67
7
- data.tar.gz: d05cb30adfeebbe13776e74ec19a2196424d729450cdf78d7df113489b44ae9f7584f239b8a8743f097843bf712bcbad3039e19ad36d472bc11f90d4702e3a92
6
+ metadata.gz: c2c6a206e409c46deda7c7021210eacab512f67521534a55456dddde7eef1e0d25b936aea54477b8ccae40413bd1c7533e4c7ce2faaa646b46512834b73242b1
7
+ data.tar.gz: d59ea2173c700e8fe72cf09050eccffe19a28778a1002e19e499b59da021bf70f7a9e4b011129b1450787a56ea7cc28cad07b5c7e95d8faa92092151d9e117ec
@@ -1,82 +1,84 @@
1
1
  # This module adds records that allow sane comparisons of values, mostly in the
2
2
  # realm of downcasing string fields.
3
3
 
4
- module Nextable::DB
5
- private
6
-
7
- ####
8
- ## next_record helpers
9
- ####
10
-
11
- def db_next_nil
12
- @scope.where("#{@field} IS NULL AND id > ?", id).order(:id).first
13
- end
14
-
15
- def db_first_non_nil
16
- @scope.where("#{@field} IS NOT NULL").order(by_field).first
17
- end
18
-
19
- def by_field
20
- return "lower(#{@field}) asc" if field_is_string?
21
- "#{@field} asc"
22
- end
23
-
24
- def db_eq_field_greater_id_params
25
- return db_eq_field_next_record, db_param, id
26
- end
27
-
28
- def db_eq_field_next_record
29
- return "lower(#{@field}) = ? AND id > ?" if field_is_string?
30
- "#{@field} = ? AND id > ?"
31
- end
32
-
33
- def db_greater_query
34
- return "lower(#{@field}) > ?" if field_is_string?
35
- "#{@field} > ?"
36
- end
37
-
38
- ####
39
- ## previous_record helpers
40
- ####
41
-
42
- def db_prev_nil
43
- @scope.where("#{@field} IS NULL AND id < ?", id).order(id: :desc).first
44
- end
45
-
46
- def db_last_non_nil
47
- @scope.where("#{@field} IS NOT NULL").order(by_field_desc).first
48
- end
49
-
50
- def by_field_desc
51
- return "lower(#{@field}) desc" if field_is_string?
52
- "#{@field} desc"
53
- end
54
-
55
- def db_eq_field_lesser_id_params
56
- return db_eq_field_previous_record, db_param, id
57
- end
58
-
59
- def db_eq_field_previous_record
60
- return "lower(#{@field}) = ? AND id < ?" if field_is_string?
61
- "#{@field} = ? AND id < ?"
62
- end
63
-
64
- def db_lesser_query
65
- return "lower(#{@field}) < ?" if field_is_string?
66
- "#{@field} < ?"
67
- end
68
-
69
- ### Utility ###
70
- def db_param
71
- input = self.send(@field)
72
- input.tap { |i| i.downcase! if field_is_string? }
73
- end
74
-
75
- def field_is_string?
76
- self.class.columns_hash[@field].type == :string
77
- end
78
-
79
- def field_is_date_or_time?
80
- self.class.columns_hash[@field].type == :string
4
+ module Nextable
5
+ module DB
6
+ private
7
+
8
+ ####
9
+ ## next_record helpers
10
+ ####
11
+
12
+ def db_next_nil
13
+ @scope.where("#{@field} IS NULL AND id > ?", id).order(:id).first
14
+ end
15
+
16
+ def db_first_non_nil
17
+ @scope.where("#{@field} IS NOT NULL").order(by_field).first
18
+ end
19
+
20
+ def by_field
21
+ return "lower(#{@field}) asc" if field_is_string?
22
+ "#{@field} asc"
23
+ end
24
+
25
+ def db_eq_field_greater_id_params
26
+ return db_eq_field_next_record, db_param, id
27
+ end
28
+
29
+ def db_eq_field_next_record
30
+ return "lower(#{@field}) = ? AND id > ?" if field_is_string?
31
+ "#{@field} = ? AND id > ?"
32
+ end
33
+
34
+ def db_greater_query
35
+ return "lower(#{@field}) > ?" if field_is_string?
36
+ "#{@field} > ?"
37
+ end
38
+
39
+ ####
40
+ ## previous_record helpers
41
+ ####
42
+
43
+ def db_prev_nil
44
+ @scope.where("#{@field} IS NULL AND id < ?", id).order(id: :desc).first
45
+ end
46
+
47
+ def db_last_non_nil
48
+ @scope.where("#{@field} IS NOT NULL").order(by_field_desc).first
49
+ end
50
+
51
+ def by_field_desc
52
+ return "lower(#{@field}) desc" if field_is_string?
53
+ "#{@field} desc"
54
+ end
55
+
56
+ def db_eq_field_lesser_id_params
57
+ return db_eq_field_previous_record, db_param, id
58
+ end
59
+
60
+ def db_eq_field_previous_record
61
+ return "lower(#{@field}) = ? AND id < ?" if field_is_string?
62
+ "#{@field} = ? AND id < ?"
63
+ end
64
+
65
+ def db_lesser_query
66
+ return "lower(#{@field}) < ?" if field_is_string?
67
+ "#{@field} < ?"
68
+ end
69
+
70
+ ### Utility ###
71
+ def db_param
72
+ input = self.send(@field)
73
+ input.tap { |i| i.downcase! if field_is_string? }
74
+ end
75
+
76
+ def field_is_string?
77
+ self.class.columns_hash[@field].type == :string
78
+ end
79
+
80
+ def field_is_date_or_time?
81
+ self.class.columns_hash[@field].type == :string
82
+ end
81
83
  end
82
84
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nextable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Brigham