diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index d8aaddeba01afade260cdba61eebb40da20eb84d..b16562ff905660248de78941c584816dc733d30c 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -47,10 +47,10 @@ module OrientDb # list.each do |learning_object| # learning_object.inspect <LearningObject model> # end - def all - learning_objects_hash = connection.query "SELECT FROM LearningObject" - build_objects(learning_objects_hash) || [] - end + # def all + # learning_objects_hash = connection.query "SELECT FROM LearningObject" + # build_objects(learning_objects_hash) || [] + # end # Usage: # learning_object = repository.for(:learning_objects).get_by_dspace_id 123 @@ -103,24 +103,37 @@ module OrientDb FROM index:learningobject_search WHERE key LUCENE '#{qry}' ", limit: 10000 + # learning_objects_hash = connection.query "#SELECT @rid.asString() FROM ( + # SELECT EXPAND(rid) FROM index:learningobject_search + # WHERE key LUCENE '#{qry}' + # )", limit: 10000 + build_objects(learning_objects_hash) || [] end def build_object(args={}) lo = nil unless args.nil? - lo = LearningObject.new(:id => args["@rid"], - :name => args["name"], - :description => args["description"], - :thumbnail => args["thumbnail"], - :created_at => args["created_at"], - :id_dspace => args["id_dspace"], - :type => args["type"], - :bitstreams => args["bitstreams"], - :metadata => args["metadata"], - :last_modified => args["last_modified"]) - lo.likes = args.has_key?("in_Likes") ? args["in_Likes"].size : 0 - lo.views = args.has_key?("in_Views") ? args["in_Views"].size : 0 + # cache object when build + cache_key = args["@rid"] + '/' + args["last_modified"] + lo = Rails.cache.fetch(cache_key, expires_in: 12.hours) do + likes = args.has_key?("in_Likes") ? args["in_Likes"].size : 0 + views = args.has_key?("in_Views") ? args["in_Views"].size : 0 + LearningObject.new( + id: args["@rid"], + name: args["name"], + description: args["description"], + thumbnail: args["thumbnail"], + created_at: args["created_at"], + id_dspace: args["id_dspace"], + type: args["type"], + bitstreams: args["bitstreams"], + metadata: args["metadata"], + last_modified: args["last_modified"], + likes: likes, + views: views + ) + end end lo end