Initial commit
This commit is contained in:
56
app/models/analysis_notification.rb
Normal file
56
app/models/analysis_notification.rb
Normal file
@@ -0,0 +1,56 @@
|
||||
class AnalysisNotification
|
||||
def self.build(type, job_id)
|
||||
case type.to_s
|
||||
when "audio"
|
||||
AudioAnalysisNotification.new(job_id)
|
||||
when "video"
|
||||
VideoAnalysisNotification.new(job_id)
|
||||
end
|
||||
end
|
||||
|
||||
class VideoAnalysisNotification
|
||||
attr_reader :job_id
|
||||
|
||||
def initialize(job_id)
|
||||
@job_id = job_id
|
||||
end
|
||||
|
||||
def video
|
||||
# TODO: add index for analysis_uid
|
||||
@video ||= Video.find_by!(analysis_uid: job_id)
|
||||
end
|
||||
|
||||
def success!
|
||||
video.analysis_success!
|
||||
ProjectsChannel.broadcast_video_analysis_update(video)
|
||||
end
|
||||
|
||||
def failure!
|
||||
video.analysis_failure!
|
||||
ProjectsChannel.broadcast_video_analysis_update(video)
|
||||
end
|
||||
end
|
||||
|
||||
class AudioAnalysisNotification
|
||||
attr_reader :job_id
|
||||
|
||||
def initialize(job_id)
|
||||
@job_id = job_id
|
||||
end
|
||||
|
||||
def video
|
||||
# TODO: add index for audio_analysis_uid
|
||||
@video ||= Video.find_by!(audio_analysis_uid: job_id)
|
||||
end
|
||||
|
||||
def success!
|
||||
video.audio_analysis_success!
|
||||
ProjectsChannel.broadcast_video_analysis_update(video)
|
||||
end
|
||||
|
||||
def failure!
|
||||
video.audio_analysis_failure!
|
||||
ProjectsChannel.broadcast_video_analysis_update(video)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user