Much base work started
This commit is contained in:
26
app/models/concerns/processable.rb
Normal file
26
app/models/concerns/processable.rb
Normal file
@@ -0,0 +1,26 @@
|
||||
module Processable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
scope :processing_pending, -> { where("video_metadata->>'duration' IS NULL") }
|
||||
end
|
||||
|
||||
def processed?
|
||||
duration.present?
|
||||
end
|
||||
|
||||
def processing_pending?
|
||||
!processed? && processing_errors.blank?
|
||||
end
|
||||
|
||||
def mark_processing_failed!(error_message)
|
||||
self.processing_errors = [error_message]
|
||||
save!
|
||||
end
|
||||
|
||||
def retry_processing!
|
||||
self.processing_errors = []
|
||||
save!
|
||||
# VideoProcessorJob.perform_later(id) - will be implemented later
|
||||
end
|
||||
end
|
||||
11
app/models/concerns/searchable.rb
Normal file
11
app/models/concerns/searchable.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
module Searchable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
class_methods do
|
||||
def search(query)
|
||||
return all if query.blank?
|
||||
|
||||
where("title LIKE ?", "%#{sanitize_sql_like(query)}%")
|
||||
end
|
||||
end
|
||||
end
|
||||
19
app/models/concerns/streamable.rb
Normal file
19
app/models/concerns/streamable.rb
Normal file
@@ -0,0 +1,19 @@
|
||||
module Streamable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
def stream_url
|
||||
storage_location.adapter.stream_url(self)
|
||||
end
|
||||
|
||||
def streamable?
|
||||
duration.present? && storage_location.enabled? && storage_location.adapter.readable?
|
||||
end
|
||||
|
||||
def stream_type
|
||||
case source_type
|
||||
when "s3" then :presigned
|
||||
when "local" then :direct
|
||||
else :proxy
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user