class <%= create_migration_class_name(model_table_name) %> < ActiveRecord::Migration<%= migration_version %>

def change
  create_table :<%= model_table_name %> do |t|
    t.string :model_id, null: false
    t.string :name, null: false
    t.string :provider, null: false
    t.string :family
    t.datetime :model_created_at
    t.integer :context_window
    t.integer :max_output_tokens
    t.date :knowledge_cutoff

<% if postgresql? %>

t.jsonb :modalities, default: {}
t.jsonb :capabilities, default: []
t.jsonb :pricing, default: {}
t.jsonb :metadata, default: {}

<% elsif mysql? %>

t.json :modalities
t.json :capabilities
t.json :pricing
t.json :metadata

<% else %>

t.json :modalities, default: {}
t.json :capabilities, default: []
t.json :pricing, default: {}
t.json :metadata, default: {}

<% end %>

t.timestamps

t.index [ :provider, :model_id ], unique: true
t.index :provider
t.index :family

<% if postgresql? -%>

t.index :capabilities, using: :gin
t.index :modalities, using: :gin

<% end -%>

  end
end

end