Class: ApiMaker::GenerateReactNativeApiService

Inherits:
ApplicationService
  • Object
show all
Defined in:
app/services/api_maker/generate_react_native_api_service.rb

Instance Method Summary collapse

Methods inherited from ApplicationService

#api_maker_json

Instance Method Details

#check_if_root_folder_definedObject



14
15
16
17
18
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 14

def check_if_root_folder_defined
  raise "No root folder detected" if root_folder.blank?

  Dir.mkdir(model_path) unless Dir.exist?(model_path)
end

#copy_base_modelObject



51
52
53
54
55
56
57
58
59
60
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 51

def copy_base_model
  files = %w[
    api.js base-model.js cable-connection-pool.js cable-subscription.js cable-subscription-pool.js
    collection.js commands-pool.js devise.js event-listener.jsx error-logger.js form-data-to-object.js logger.js
    model-name.js models-response-reader.js result.js event-connection.jsx
  ]
  path = File.join(__dir__, "..", "..", "..", "lib", "api_maker", "javascript")

  copy_base_files(files, path, root_folder)
end

#create_model_filesObject



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 24

def create_model_files
  model_generator_service.models.each do |model|
    next if model_generator_service.ignore_model?(model)

    model_content_response = ApiMaker::ModelContentGeneratorService.execute!(model: model)

    if model_content_response.success?
      File.open(model_file(model), "w") { |fp| fp.write(model_content_response.result) }
    else
      puts model_content_response.errors.join(". ")
    end
  end
end

#create_root_folderObject



20
21
22
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 20

def create_root_folder
  Dir.mkdir(root_folder) unless Dir.exist?(root_folder)
end

#executeObject



2
3
4
5
6
7
8
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 2

def execute
  check_if_root_folder_defined
  create_root_folder
  create_model_files

  ServicePattern::Response.new(success: true)
end

#model_file(model) ⇒ Object



42
43
44
45
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 42

def model_file(model)
  resource_class = ApiMaker::MemoryStorage.current.resource_for_model(model)
  File.join(model_path, "#{resource_class.short_name.underscore.dasherize}.js")
end

#model_generator_serviceObject



38
39
40
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 38

def model_generator_service
  @model_generator_service ||= ApiMaker::ModelsGeneratorService.new
end

#model_pathObject



47
48
49
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 47

def model_path
  @model_path ||= File.join(root_folder, "models")
end

#root_folderObject



10
11
12
# File 'app/services/api_maker/generate_react_native_api_service.rb', line 10

def root_folder
  @root_folder ||= ApiMaker::Configuration.current.react_native_path
end