57 lines
1.2 KiB
Ruby
57 lines
1.2 KiB
Ruby
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
|