From d85e5fb4861093d3e04139cf49c940fe31d00d92 Mon Sep 17 00:00:00 2001
From: Mateus Rambo Strey <mars11@inf.ufpr.br>
Date: Mon, 26 Oct 2015 22:54:29 -0200
Subject: [PATCH] add score generator for learning objects

---
 app/models/learning_object.rb                 |  5 +++--
 .../orient_db/learning_object_repository.rb   | 20 +++++++++----------
 config/sidekiq.yml                            |  8 ++++++++
 lib/tasks/thumbnail.rake                      |  6 +-----
 4 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/app/models/learning_object.rb b/app/models/learning_object.rb
index 5f9b4f8cb..c62d97b3e 100644
--- a/app/models/learning_object.rb
+++ b/app/models/learning_object.rb
@@ -5,7 +5,7 @@ class LearningObject
   attr_accessor :id, :id_dspace, :rid, :name, :author, :description,
                 :published_at, :thumbnail, :created_at, :last_modified,
                 :type, :grade_level, :bitstreams, :metadata, :likes, :views,
-                :downloads, :subjects, :attributes
+                :downloads, :subjects, :attributes, :score
 
   validates_presence_of :name, :created_at, :type, :likes, :views, :downloads
   validates_numericality_of :likes, greater_than_or_equal_to: 0
@@ -82,7 +82,8 @@ class LearningObject
     {
         likes: 0,
         views: 0,
-        downloads: 0
+        downloads: 0,
+        score: 0
         # Setting this default value wont allow created_at to be set trough the constructor
         # created_at: DateTime.new
     }
diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb
index eb15752ec..28be7e780 100644
--- a/app/repositories/orient_db/learning_object_repository.rb
+++ b/app/repositories/orient_db/learning_object_repository.rb
@@ -193,7 +193,7 @@ module OrientDb
         query = "SELECT * FROM (" + query + ") WHERE " + fetch_types(params[:type]) unless params[:type].blank?
         query = "SELECT * FROM (" + query + ") WHERE " + fetch_year(params[:year]) unless params[:year].blank?
         query = "SELECT * FROM (" + query + ") ORDER BY #{order}" unless order.nil?
-        query = "SELECT @rid.asString(), last_modified FROM (" + query + ")"# ORDER BY score DESC
+        query = "SELECT @rid.asString(), last_modified FROM (" + query + ") ORDER BY score DESC"
         learning_objects_hash = connection.query query, limit: 10000
 
         # return only rids with their modification time
@@ -239,23 +239,23 @@ module OrientDb
       qry
     end
 
+    def count_likes(learning_object)
+      get_in_edges_count "Likes", learning_object.id
+    end
+
+    def count_views(learning_object)
+      get_in_edges_count "Views", learning_object.id
+    end
+
     private
 
     def accepted_properties
-      ['thumbnail']
+      ['thumbnail', 'score']
     end
 
     def odb_class
       "LearningObject"
     end
 
-    def count_likes(learning_object)
-      get_in_edges_count "Likes", learning_object.id
-    end
-
-    def count_views(learning_object)
-      get_in_edges_count "Views", learning_object.id
-    end
-
   end
 end
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index 05ce63165..fb9ad31f7 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -5,8 +5,16 @@
 # on all of the machines, including database's configs and
 # environment type (development, test, production).
 #
+:pidfile: ./shared/pids/sidekiq.pid
+:logfile: ./shared/logs/sidekiq.log
+:queues:
+  - default
+  - score
+  - [high_priority, 2]
+# :daemon: true
 
 development: &development
+  concurrency: 5
   host: localhost
   port: 6379
 
diff --git a/lib/tasks/thumbnail.rake b/lib/tasks/thumbnail.rake
index 480b49910..33335851e 100644
--- a/lib/tasks/thumbnail.rake
+++ b/lib/tasks/thumbnail.rake
@@ -26,11 +26,7 @@ namespace :thumbnail do
         break if items.empty?
 
         items.each do |item|
-          if item.thumbnail.nil?
-            ThumbnailGeneratorWorker.perform_async(item.id)
-          elsif item.thumbnail.empty?
-            ThumbnailGeneratorWorker.perform_async(item.id)
-          end
+          ThumbnailGeneratorWorker.perform_async(item.id) if item.thumbnail.blank?
         end
 
         # Increment offset, to get new items on next iteration
-- 
GitLab