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.
- checksums.yaml +4 -4
- data/lib/nextable/db.rb +79 -77
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e3f8ffea44745725ecde5426e754f0ebbfea743b
|
4
|
+
data.tar.gz: 2d78694eec38842bea48f790214f8ccf9613826f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2c6a206e409c46deda7c7021210eacab512f67521534a55456dddde7eef1e0d25b936aea54477b8ccae40413bd1c7533e4c7ce2faaa646b46512834b73242b1
|
7
|
+
data.tar.gz: d59ea2173c700e8fe72cf09050eccffe19a28778a1002e19e499b59da021bf70f7a9e4b011129b1450787a56ea7cc28cad07b5c7e95d8faa92092151d9e117ec
|
data/lib/nextable/db.rb
CHANGED
@@ -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
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
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
|