module JSONAPI::ActiveStorageSupport
def active_storage_attachment?(association_name, model_class = nil)
def active_storage_attachment?(association_name, model_class = nil) resolved = model_class || resolve_model_class_for_attachment self.class.active_storage_attachment?(association_name, resolved) end
def append_only_enabled?(attachment_name, resource_class)
def append_only_enabled?(attachment_name, resource_class) ActiveStorage::Deserialization.append_only_enabled?(attachment_name, resource_class) end
def attach_active_storage_files(record, attachment_params, resource_class: nil)
def attach_active_storage_files(record, attachment_params, resource_class: nil) ActiveStorage::Deserialization.attach_files(record, attachment_params, definition: resource_class) end
def extract_active_storage_params_from_hash(params_hash, model_class)
def extract_active_storage_params_from_hash(params_hash, model_class) ActiveStorage::Deserialization.extract_params_from_hash(params_hash, model_class) end
def filter_active_storage_from_includes(includes_hash, current_model_class)
def filter_active_storage_from_includes(includes_hash, current_model_class) ActiveStorage::Detection.filter_from_includes(includes_hash, current_model_class) end
def filter_polymorphic_from_includes(includes_hash, current_model_class)
def filter_polymorphic_from_includes(includes_hash, current_model_class) ActiveStorage::Detection.filter_polymorphic_from_includes(includes_hash, current_model_class) end
def find_blob_by_signed_id(signed_id)
def find_blob_by_signed_id(signed_id) ActiveStorage::Deserialization.find_blob_by_signed_id(signed_id) end
def find_relationship_definition(attachment_name, resource_class)
def find_relationship_definition(attachment_name, resource_class) ActiveStorage::Deserialization.find_relationship_definition(attachment_name, resource_class) end
def process_active_storage_attachment(attrs, association_name, id_or_ids, singular:)
def process_active_storage_attachment(attrs, association_name, id_or_ids, singular:) ActiveStorage::Deserialization.process_attachment(attrs, association_name, id_or_ids, singular:) end
def purge_on_nil_enabled?(attachment_name, resource_class)
def purge_on_nil_enabled?(attachment_name, resource_class) ActiveStorage::Deserialization.purge_on_nil_enabled?(attachment_name, resource_class) end
def resolve_model_class_for_attachment
def resolve_model_class_for_attachment return send(:model_class) if respond_to?(:model_class, true) return send(:resource_model_class) if respond_to?(:resource_model_class, true) return send(:resource).class if respond_to?(:resource, true) && send(:resource).respond_to?(:class) raise NotImplementedError, "Must implement resource_model_class or provide model_class parameter" end
def resource_model_class
def resource_model_class raise NotImplementedError, "Must implement resource_model_class or override active_storage_attachment?" end
def serialize_active_storage_relationship(attachment_name, record)
def serialize_active_storage_relationship(attachment_name, record) ActiveStorage::Serialization.serialize_relationship(attachment_name, record) end
def serialize_blob_identifier(blob)
def serialize_blob_identifier(blob) ActiveStorage::Serialization.serialize_blob_identifier(blob) end