Class: SpreeCmCommissioner::Exports::OperatorGuestJsonGzip

Inherits:
SpreeCmCommissioner::Export show all
Defined in:
app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb

Instance Method Summary collapse

Methods inherited from SpreeCmCommissioner::Export

#enqueue_export, #exported_file_name, #exported_file_url, #set_uuid

Instance Method Details

#exportObject

override



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'app/models/spree_cm_commissioner/exports/operator_guest_json_gzip.rb', line 9

def export
  update(status: :progress)

  guests = SpreeCmCommissioner::GuestSearcherQuery.new(event_id: exportable_id).call
  hash = SpreeCmCommissioner::V2::Operator::GuestSerializer.new(
    guests,
    { include: resource_includes }
  ).serializable_hash

  file_name = "exports_operator_guest_#{id}.json.gz"
  json_gzip = ActiveSupport::Gzip.compress(JSON.generate(hash))

  exported_file.attach(
    io: StringIO.new(json_gzip),
    filename: file_name,
    content_type: 'application/gzip'
  )

  update(
    file_size_bytes: json_gzip.bytesize,
    guests_count: guests.size,
    status: :done
  )
rescue StandardError => e
  CmAppLogger.error(label: "#{self.class.name}#export", data: { export_id: id, error: e.message, backtrace: e.backtrace })
  update(status: :failed)
end