Class: LlmMetaClient::Generators::ScaffoldGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Rails::Generators::Migration
Defined in:
lib/generators/llm_meta_client/scaffold/scaffold_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.next_migration_number(dirname) ⇒ Object



10
11
12
13
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 10

def self.next_migration_number(dirname)
  next_migration_number = current_migration_number(dirname) + 1
  ActiveRecord::Migration.next_migration_number(next_migration_number)
end

Instance Method Details

#add_migrationsObject



61
62
63
64
65
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 61

def add_migrations
  migration_template "db/migrate/create_chats.rb", "db/migrate/create_chats.rb"
  migration_template "db/migrate/create_messages.rb", "db/migrate/create_messages.rb"
  migration_template "db/migrate/migrate_llm_uuid_to_prompt_executions.rb", "db/migrate/migrate_llm_uuid_to_prompt_executions.rb"
end

#configure_asset_pathsObject



105
106
107
108
109
110
111
112
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 105

def configure_asset_paths
  inject_into_class "config/application.rb", "Application", <<-RUBY
    # Add asset paths for prompt_navigator gem
    config.assets.paths << Rails.root.join("../prompt_navigator/app/assets/stylesheets")
    # Add asset paths for chat_manager gem
    config.assets.paths << Rails.root.join("../chat_manager/app/assets/stylesheets")
  RUBY
end

#configure_importmapObject



93
94
95
96
97
98
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 93

def configure_importmap
  append_to_file "config/importmap.rb", <<~RUBY
    pin "controllers/history_controller", to: "controllers/history_controller.js"
    pin "popover", to: "popover.js"
  RUBY
end

#configure_routesObject



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 67

def configure_routes
  route <<-RUBY
    root "chats#new"

    resources :chats, only: [ :new, :create, :edit, :update, :show ] do
      collection do
        delete :clear
        post :start_new
        get :download_all_csv
      end
      member do
        patch :update_title
        get :download_csv
      end
      resource :stream, only: [ :show ], controller: "chat_streams"
    end
    resources :prompts, only: [ :show ]

    namespace :api do
      resources :mcp_servers, only: [ :index ], param: :uuid do
        get :tools, on: :member
      end
    end
  RUBY
end

#create_controllersObject



20
21
22
23
24
25
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 20

def create_controllers
  template "app/controllers/chats_controller.rb"
  template "app/controllers/chat_streams_controller.rb"
  template "app/controllers/prompts_controller.rb"
  template "app/controllers/api/mcp_servers_controller.rb"
end

#create_initializerObject



57
58
59
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 57

def create_initializer
  template "config/initializers/llm_service.rb"
end

#create_javascriptObject



47
48
49
50
51
52
53
54
55
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 47

def create_javascript
  template "app/javascript/controllers/llm_selector_controller.js"
  template "app/javascript/controllers/chats_form_controller.js"
  template "app/javascript/controllers/chat_title_edit_controller.js"
  template "app/javascript/controllers/tool_selector_controller.js"
  template "app/javascript/controllers/generation_settings_controller.js"
  template "app/javascript/controllers/message_stream_controller.js"
  copy_file "app/javascript/popover.js"
end

#create_modelsObject



15
16
17
18
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 15

def create_models
  template "app/models/chat.rb"
  template "app/models/message.rb"
end

#create_viewsObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 27

def create_views
  template "app/views/chats/new.html.erb"
  template "app/views/chats/edit.html.erb"
  template "app/views/chats/create.turbo_stream.erb"
  template "app/views/chats/update.turbo_stream.erb"
  template "app/views/chats/_message.html.erb"
  template "app/views/chats/_streaming_message.html.erb"
  template "app/views/chats/_tool_call_message.html.erb"
  template "app/views/chats/_chat_sidebar.html.erb"
  template "app/views/chats/_messages_list.html.erb"
  template "app/views/shared/_family_field.html.erb"
  template "app/views/shared/_api_key_field.html.erb"
  template "app/views/shared/_model_field.html.erb"
  template "app/views/shared/_tool_selector_field.html.erb"
  template "app/views/shared/_generation_settings_field.html.erb"
  template "app/views/layouts/application.html.erb"
  template "app/views/layouts/_header.html.erb"
  template "app/views/layouts/_sidebar.html.erb"
end

#inject_helpersObject



100
101
102
103
# File 'lib/generators/llm_meta_client/scaffold/scaffold_generator.rb', line 100

def inject_helpers
  inject_into_class "app/controllers/application_controller.rb", "ApplicationController", "  include LlmMetaClient::Helpers\n"
  inject_into_module "app/helpers/application_helper.rb", "ApplicationHelper", "  include LlmMetaClient::Helpers\n"
end