4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/generators/decision_agent/install/templates/ab_testing_migration.rb', line 4
def change
create_table :ab_test_models do |t|
t.string :name, null: false
t.string :champion_version_id, null: false
t.string :challenger_version_id, null: false
t.text :traffic_split, null: false
t.datetime :start_date
t.datetime :end_date
t.string :status, null: false, default: "scheduled"
t.timestamps
end
add_index :ab_test_models, :status
add_index :ab_test_models, :start_date
add_index :ab_test_models, i[status start_date], name: "index_ab_tests_on_status_and_start_date"
create_table :ab_test_assignment_models do |t|
t.references :ab_test_model, null: false, foreign_key: true, index: true
t.string :user_id
t.string :variant, null: false
t.string :version_id, null: false
t.datetime :timestamp, null: false, default: -> { "CURRENT_TIMESTAMP" }
t.string :decision_result
t.float :confidence
t.text :context
t.timestamps
end
add_index :ab_test_assignment_models, :user_id
add_index :ab_test_assignment_models, :variant
add_index :ab_test_assignment_models, :timestamp
add_index :ab_test_assignment_models, i[ab_test_model_id variant], name: "index_assignments_on_test_and_variant"
add_index :ab_test_assignment_models, :decision_result, where: "decision_result IS NOT NULL", name: "index_assignments_with_decisions"
end
|