2025-01-14 13:30:52 -03:00
|
|
|
# frozen_string_literal: true
|
|
|
|
class BackfillPostEmbeddings < ActiveRecord::Migration[7.2]
|
2025-01-14 14:42:40 -03:00
|
|
|
disable_ddl_transaction!
|
|
|
|
|
2025-01-14 13:30:52 -03:00
|
|
|
def up
|
2025-01-14 17:13:34 -03:00
|
|
|
if table_exists?(:ai_post_embeddings)
|
|
|
|
# Copy data from old tables to new tables in batches.
|
2025-01-14 13:30:52 -03:00
|
|
|
|
2025-01-14 17:13:34 -03:00
|
|
|
loop do
|
|
|
|
count = execute(<<~SQL).cmd_tuples
|
|
|
|
INSERT INTO ai_posts_embeddings (post_id, model_id, model_version, strategy_id, strategy_version, digest, embeddings, created_at, updated_at)
|
|
|
|
SELECT source.*
|
|
|
|
FROM (
|
|
|
|
SELECT old_table.*
|
|
|
|
FROM ai_post_embeddings old_table
|
|
|
|
LEFT JOIN ai_posts_embeddings target ON (
|
|
|
|
target.model_id = old_table.model_id AND
|
|
|
|
target.strategy_id = old_table.strategy_id AND
|
|
|
|
target.post_id = old_table.post_id
|
|
|
|
)
|
|
|
|
WHERE target.post_id IS NULL
|
|
|
|
LIMIT 10000
|
|
|
|
) source
|
|
|
|
SQL
|
2025-01-14 14:42:40 -03:00
|
|
|
|
2025-01-14 17:13:34 -03:00
|
|
|
break if count == 0
|
|
|
|
end
|
2025-01-14 13:30:52 -03:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def down
|
|
|
|
raise ActiveRecord::IrreversibleMigration
|
|
|
|
end
|
|
|
|
end
|