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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9b1388dee282745a5a3b3dd0057b3cd353438c04960628d51bb7d815551776be
4
- data.tar.gz: 3e827f529101221c05d5155484b5e439a5c7bc38cea7756ffbd3683821340515
3
+ metadata.gz: 4ec3e7a04be42e6df24706c1a72c0b91df7f6f97028c16d89b3db7c69b5d5ab6
4
+ data.tar.gz: 711ce9ea889046979a3f6134c5058fccf479c2a28e6ec3dac7d681370e5395ba
5
5
  SHA512:
6
- metadata.gz: 3c599fda9a65f20b1e2d2117c2a0502f77beea22eb31baf2d45a006af5a53c4bbf1fcf11274af9b8553b0fa92976f8a97133fefda0756dbe64ee736f29b161d0
7
- data.tar.gz: 2c96f8f718ce75756e441305cd69ba0db57abe5e93aab38af9ba9bdee9b90928502f9bfe209e7c687fbeca6504b872b100d4b2d22ee998d516e15269e4951cc2
6
+ metadata.gz: 83346e7300f3538aa3bae03a6f2b79f99b294938afd261359da7699b3ca2f2aee03b6bd6a70c9e16c422e217c070def494764aa6c5f3f0efa01eceeaa2cf43ec
7
+ data.tar.gz: b6a26765ebf86373c5cf597e4875cca0f14c93a2e00f9f133ffddf3cb607b7e00e971e693b72accdda83f2072e57eae99f32b728d258baa9e89496745b55d3dc
@@ -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,:blended_recent,: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]
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}.created_at::timestamp))/(24*60*60)"
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, :label, :options
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
- @recency = true
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 + " DESC"
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", "blended_recent"
141
+ when "blended"
141
142
  query = blended_where vote_filter_col
142
143
  when "weighted"
143
144
  query = weighted_where vote_filter_col
@@ -1,3 +1,3 @@
1
1
  module CustomSort
2
- VERSION = "0.4.04"
2
+ VERSION = "0.4.05"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: custom_sort
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.04
4
+ version: 0.4.05
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Merritt