diff --git a/app/workers/score_calculator_worker.rb b/app/workers/score_calculator_worker.rb index 794b410b2567e51419b37d090016afd5f284c0e5..b0d02b1d31e877881c2888fca95a0993e2e9a763 100644 --- a/app/workers/score_calculator_worker.rb +++ b/app/workers/score_calculator_worker.rb @@ -26,22 +26,22 @@ class ScoreCalculatorWorker # range to 250 points, for normalized likes ( maxLikes/actualLike => [0..1] ) score += divide_by_max( - learning_object_repository.count_likes(object), - learning_object_repository.max_likes, + learning_object_repository.count('Likes', object), + learning_object_repository.max('Likes'), weights[:likes] ) # range to 200 points, for normalized views ( maxLikes/actualLike => [0..1] ) score += divide_by_max( - learning_object_repository.count_views(object), - learning_object_repository.max_views, + learning_object_repository.count('Views', object), + learning_object_repository.max('Views'), weights[:views] ) # downloads score += divide_by_max( - learning_object_repository.count_downloads(object), - learning_object_repository.max_downloads, + learning_object_repository.count('Downloads', object), + learning_object_repository.max('Downloads'), weights[:downloads] ) diff --git a/lib/orient_db/methods/countable_methods.rb b/lib/orient_db/methods/countable_methods.rb index 484153798a32efc1373d6ad91dc962bcedc245ec..816d2548c7f0d2f72c28401b8c7923b520def0e0 100644 --- a/lib/orient_db/methods/countable_methods.rb +++ b/lib/orient_db/methods/countable_methods.rb @@ -19,6 +19,12 @@ module OrientDb get_in_edges_count edge_class, object.id end + def max(edge_class) + Rails.cache.fetch("max_#{edge_class}", expires_in: 6.hours) do + get_max_from_edge(edge_class, 'in') + end + end + def get_max_from_edge(edge_class, type) max = connection.command "SELECT max(#{type}('#{edge_class}').size()) FROM LearningObject" max["result"][0]["max"] @@ -26,4 +32,4 @@ module OrientDb end end -end \ No newline at end of file +end