Skip to content

Commit 7623f88

Browse files
committed
add feedback delete operation and route
1 parent 2f69649 commit 7623f88

4 files changed

Lines changed: 37 additions & 2 deletions

File tree

app/controllers/api/feedback_controller.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@ def set_read
4242
end
4343
end
4444

45+
def destroy
46+
result = Feedback::Delete.call(feedback_id: params[:id])
47+
48+
if result.success?
49+
head :no_content
50+
else
51+
render json: { error: result[:error] }, status: :unprocessable_entity
52+
end
53+
end
54+
4555
private
4656

4757
def project

app/models/ability.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def define_school_owner_abilities(school:)
6969
can(%i[read create create_batch update destroy], :school_student)
7070
can(%i[create create_copy], Lesson, school_id: school.id)
7171
can(%i[read update destroy], Lesson, school_id: school.id, visibility: %w[teachers students public])
72+
can(%i[read destroy], Feedback, school_id: school.id)
7273
can(%i[exchange_code], :google_auth)
7374
end
7475

@@ -98,7 +99,7 @@ def define_school_teacher_abilities(user:, school:)
9899
).pluck(:id)
99100
can(%i[read], Project, remixed_from_id: teacher_project_ids)
100101
can(%i[show_status unsubmit return complete], SchoolProject, project: { remixed_from_id: teacher_project_ids })
101-
can(%i[read create], Feedback, school_project: { project: { remixed_from_id: teacher_project_ids } })
102+
can(%i[read create destroy], Feedback, school_project: { project: { remixed_from_id: teacher_project_ids } })
102103
can(%i[exchange_code], :google_auth)
103104
end
104105

config/routes.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
end
4949
resources :remixes, only: %i[index], controller: 'projects/remixes'
5050
resource :images, only: %i[show create], controller: 'projects/images'
51-
resources :feedback, only: %i[index create], controller: 'feedback' do
51+
resources :feedback, only: %i[index create destroy], controller: 'feedback' do
5252
put :read, on: :member, to: 'feedback#set_read'
5353
end
5454
end

lib/concepts/feedback/delete.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# frozen_string_literal: true
2+
3+
class Feedback
4+
class Delete
5+
class << self
6+
def call(feedback_id:)
7+
response = OperationResponse.new
8+
delete_feedback(feedback_id)
9+
response
10+
rescue StandardError => e
11+
Sentry.capture_exception(e)
12+
response[:error] = "Error deleting feedback: #{e}"
13+
response
14+
end
15+
16+
private
17+
18+
def delete_feedback(feedback_id)
19+
feedback = Feedback.find(feedback_id)
20+
feedback.destroy!
21+
end
22+
end
23+
end
24+
end

0 commit comments

Comments
 (0)