28 lines
719 B
Ruby
28 lines
719 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require "json"
|
||
|
|
||
|
require "use_case/base"
|
||
|
|
||
|
module UseCase
|
||
|
module DataExport
|
||
|
class Base < UseCase::Base
|
||
|
# the user that is being exported
|
||
|
option :user
|
||
|
|
||
|
def call = files
|
||
|
|
||
|
# returns a hash with `{ "file_name" => "file_contents\n" }`
|
||
|
def files = raise NotImplementedError
|
||
|
|
||
|
# helper method that returns the column names of `model` as symbols
|
||
|
def column_names(model) = model.column_names.map(&:to_sym)
|
||
|
|
||
|
# helper method that generates the content of a json file
|
||
|
#
|
||
|
# it ensures the final newline exists, as the exporter only uses File#write
|
||
|
def json_file!(**hash) = "#{JSON.pretty_generate(hash.as_json)}\n"
|
||
|
end
|
||
|
end
|
||
|
end
|