diff --git a/app/controllers/learning_objects_controller.rb b/app/controllers/learning_objects_controller.rb index 2217721f1267bdf39b40d4fa1b13f9977c47667d..af0edaa22a858eb0d18e65100145a74a8f982b46 100644 --- a/app/controllers/learning_objects_controller.rb +++ b/app/controllers/learning_objects_controller.rb @@ -1,7 +1,7 @@ class LearningObjectsController < ApplicationController include Reportable - before_action :set_learning_object, only: [:show, :edit, :update, :destroy, :like] + before_action :set_learning_object, only: [:show, :edit, :update, :destroy, :like, :bookmark] after_action :increment_learning_object_views, only: [:show] before_action :authenticate_user!, except: [:index, :show, :like] @@ -86,7 +86,14 @@ class LearningObjectsController < ApplicationController learning_object_repository.report current_user, @learning_object, message, description end - def bookmark + def bookmarks + bookmarks = current_user.bookmarks + bookmarks.add @learning_object + collection_repository.save bookmarks + + if request.xhr? + render json: {id: params[:id]} + end end private diff --git a/app/repositories/orient_db/collection_repository.rb b/app/repositories/orient_db/collection_repository.rb index 63b51407f01b147648c821366956a08d30e9e1a7..6a725450a4c5f54cb0936dd50c913ba14762a770 100644 --- a/app/repositories/orient_db/collection_repository.rb +++ b/app/repositories/orient_db/collection_repository.rb @@ -6,6 +6,13 @@ module OrientDb Collection.new(map_object_hash(args)) end + def save(collection = Collection.new) + collection.learning_objects.each do |learning_object| + query = sprintf("update %s add learning_objects = %s", collection.id, learning_object.id) + connection.command query + end + end + def create_bookmarks_collection(user) bookmarks = Bookmarks.new(owner: user) create bookmarks @@ -30,12 +37,13 @@ module OrientDb end def all(user) - objects = build_objects get_edges_end('BelongsTo', 'in', user.rid) + query = sprintf("select * from (select expand(in('BelongsTo')) from %s) where name<>'Bookmarks'", user.rid) + objects = build_objects connection.query(query) end def bookmarks(user) - # TODO: change bookmarks query - result = all user + query = sprintf("select * from (select expand(in('BelongsTo')) from %s) where name='Bookmarks'", user.rid) + result = build_objects(connection.query(query)) if !result.empty? return result.first end