dawarich/app/models/export.rb
Eugene Burmakin 2088b769d7 Add tests
2025-06-26 19:24:40 +02:00

39 lines
994 B
Ruby

# frozen_string_literal: true
class Export < ApplicationRecord
belongs_to :user
enum :status, { created: 0, processing: 1, completed: 2, failed: 3 }
enum :file_format, { json: 0, gpx: 1, archive: 2 }
enum :file_type, { points: 0, user_data: 1 }
validates :name, presence: true
has_one_attached :file
after_commit -> { ExportJob.perform_later(id) }, on: :create, unless: -> { user_data? || archive? }
after_commit -> { remove_attached_file }, on: :destroy
def process!
Exports::Create.new(export: self).call
end
def migrate_to_new_storage
file.attach(io: File.open("public/#{url}"), filename: name)
update!(url: nil)
File.delete("public/#{url}")
rescue StandardError => e
Rails.logger.debug("Error migrating export #{id}: #{e.message}")
end
private
def remove_attached_file
file.purge_later
File.delete("public/#{url}")
rescue StandardError => e
Rails.logger.debug("Error removing export #{id}: #{e.message}")
end
end