custom_sort 0.4.04 → 0.4.05
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/custom_sort.rb +3 -3
- data/lib/custom_sort/magic_new.rb +7 -2
- data/lib/custom_sort/relation_builder.rb +10 -9
- data/lib/custom_sort/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ec3e7a04be42e6df24706c1a72c0b91df7f6f97028c16d89b3db7c69b5d5ab6
|
4
|
+
data.tar.gz: 711ce9ea889046979a3f6134c5058fccf479c2a28e6ec3dac7d681370e5395ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 83346e7300f3538aa3bae03a6f2b79f99b294938afd261359da7699b3ca2f2aee03b6bd6a70c9e16c422e217c070def494764aa6c5f3f0efa01eceeaa2cf43ec
|
7
|
+
data.tar.gz: b6a26765ebf86373c5cf597e4875cca0f14c93a2e00f9f133ffddf3cb607b7e00e971e693b72accdda83f2072e57eae99f32b728d258baa9e89496745b55d3dc
|
data/lib/custom_sort.rb
CHANGED
@@ -15,7 +15,7 @@ module CustomSort
|
|
15
15
|
# Your code goes here...
|
16
16
|
|
17
17
|
# currently, :labeled requires a vote_scope/label as well, the other queries ignore vote_scope
|
18
|
-
FIELDS = [:labeled,:blended,:
|
18
|
+
FIELDS = [:labeled,:blended,:quality,:interesting,:learned,:votes,:nofeedback,:nojoin] # [:second, :minute, :hour, :day, :week, :month, :quarter, :year, :day_of_week, :hour_of_day, :minute_of_hour, :day_of_month, :day_of_year, :month_of_year]
|
19
19
|
|
20
20
|
LABELS = [:quality,:interesting,:fun,:funny,:learnedfrom,:spam,:ad,:clickbait,:english]
|
21
21
|
|
@@ -30,8 +30,8 @@ module CustomSort
|
|
30
30
|
def initialize
|
31
31
|
|
32
32
|
end
|
33
|
-
def self.time_decay table_name
|
34
|
-
"EXTRACT(EPOCH FROM (NOW()::timestamp - #{table_name}
|
33
|
+
def self.time_decay table_name, time_column = "created_at"
|
34
|
+
"EXTRACT(EPOCH FROM (NOW()::timestamp - #{table_name}.#{time_column}::timestamp))/(24*60*60)"
|
35
35
|
end
|
36
36
|
|
37
37
|
def self.time_decay_adjusted table_name, lambda_key
|
@@ -2,15 +2,18 @@ require "i18n"
|
|
2
2
|
|
3
3
|
module CustomSort
|
4
4
|
class MagicNew
|
5
|
-
attr_accessor :query_name, :recency_key, :
|
5
|
+
attr_accessor :query_name, :label, :sort_order, :recency_key, :recent, :options
|
6
6
|
|
7
7
|
def initialize(query_name:, **options)
|
8
8
|
@query_name = query_name
|
9
9
|
@options = options
|
10
10
|
|
11
|
+
@recent = options[:recent] == false ? false : true
|
11
12
|
@recency_key = options[:recency_key] ? options[:recency_key].to_i : 2
|
12
13
|
@label = options[:label] ? options[:label] : nil
|
13
14
|
@label = @label.nil? ? CustomSort::LABELS[0].to_s : @label
|
15
|
+
|
16
|
+
@sort_order = options[:sort_order] ? (["asc","desc"].include?(options[:sort_order].downcase) ? options[:sort_order] : "desc") : "desc"
|
14
17
|
|
15
18
|
end
|
16
19
|
|
@@ -49,8 +52,10 @@ module CustomSort
|
|
49
52
|
relation,
|
50
53
|
column: field,
|
51
54
|
query_name: magic.query_name,
|
55
|
+
recent: magic.recent,
|
52
56
|
recency_key: magic.recency_key,
|
53
|
-
label: magic.label
|
57
|
+
label: magic.label,
|
58
|
+
sort_order: magic.sort_order
|
54
59
|
).generate
|
55
60
|
|
56
61
|
relation
|
@@ -4,15 +4,16 @@ module CustomSort
|
|
4
4
|
#, :period, :day_start, :week_start, :n_seconds
|
5
5
|
|
6
6
|
#def initialize(relation, column:, period:, time_zone:, time_range:, week_start:, day_start:, n_seconds:)
|
7
|
-
def initialize(relation, column:, query_name:, recency_key:, label: nil)
|
7
|
+
def initialize(relation, column:, query_name:, recency_key:, label: nil, sort_order: "DESC", recent: true)
|
8
8
|
@relation = relation
|
9
9
|
@column = resolve_column(relation, column) unless column.nil?
|
10
10
|
@query_name = query_name
|
11
11
|
@table_name = resolve_table(relation) #"items"
|
12
12
|
@class_name = resolve_class(relation)
|
13
13
|
|
14
|
-
@
|
14
|
+
@recent = recent == false ? recent : true
|
15
15
|
@lambda_key = recency_key #2
|
16
|
+
@sort_order = sort_order
|
16
17
|
|
17
18
|
@label = label #label.nil? ? CustomSort::LABELS[0].to_s : label
|
18
19
|
|
@@ -36,6 +37,9 @@ module CustomSort
|
|
36
37
|
def default_sort_col
|
37
38
|
"created_at"
|
38
39
|
end
|
40
|
+
def sort_order
|
41
|
+
["asc","desc"].include?(@sort_order.downcase) ? @sort_order : "desc"
|
42
|
+
end
|
39
43
|
|
40
44
|
def net_score_col
|
41
45
|
"#{sort_col} as net_score"
|
@@ -46,7 +50,7 @@ module CustomSort
|
|
46
50
|
end
|
47
51
|
|
48
52
|
def time_decay
|
49
|
-
CustomSort::SortFields.time_decay_adjusted(@table_name,@lambda_key)
|
53
|
+
@recent ? CustomSort::SortFields.time_decay_adjusted(@table_name,@lambda_key) : 1
|
50
54
|
end
|
51
55
|
|
52
56
|
def quality_min
|
@@ -97,9 +101,6 @@ module CustomSort
|
|
97
101
|
["#{vote_filter_col} = ?",@class_name]
|
98
102
|
end
|
99
103
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
104
|
def data_table
|
104
105
|
CustomSort.data_table
|
105
106
|
end
|
@@ -107,7 +108,7 @@ module CustomSort
|
|
107
108
|
def sort_col
|
108
109
|
case query_name
|
109
110
|
when "quality", "interesting","learned","blended","labeled"
|
110
|
-
send(query_name+"_col")
|
111
|
+
"(#{time_decay}*#{send(query_name+"_col")})"
|
111
112
|
when "blended_recent"
|
112
113
|
"(#{time_decay}*#{blended_col})"
|
113
114
|
when "nofeedback","nojoin"
|
@@ -118,7 +119,7 @@ module CustomSort
|
|
118
119
|
end
|
119
120
|
|
120
121
|
def order_clause
|
121
|
-
sort_col +
|
122
|
+
sort_col + sort_order
|
122
123
|
end
|
123
124
|
|
124
125
|
def join_clause
|
@@ -137,7 +138,7 @@ module CustomSort
|
|
137
138
|
vote_filter_col = "#{data_table}.resource_type"
|
138
139
|
#base_query = ["vote_caches.resource_type = ?",@class_name]
|
139
140
|
case query_name
|
140
|
-
when "blended"
|
141
|
+
when "blended"
|
141
142
|
query = blended_where vote_filter_col
|
142
143
|
when "weighted"
|
143
144
|
query = weighted_where vote_filter_col
|
data/lib/custom_sort/version.rb
CHANGED