Class: CreateCodeSunsetTables

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/code_sunset/migration/templates/create_code_sunset_tables.rb

Instance Method Summary collapse

Instance Method Details

#change ⇒ Object



2
3
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/generators/code_sunset/migration/templates/create_code_sunset_tables.rb', line 2

def change
  create_table :code_sunset_features do |t|
    t.string :key, null: false
    t.string :owner
    t.text :description
    t.string :status
    t.integer :sunset_after_days, null: false, default: 90
    t.integer :remove_after_days_unused, null: false, default: 60
    t.timestamps
  end

  add_index :code_sunset_features, :key, unique: true
  add_index :code_sunset_features, :status

  create_table :code_sunset_events do |t|
    t.string :feature_key, null: false
    t.datetime :occurred_at, null: false
    t.bigint :user_id
    t.bigint :org_id
    t.string :hashed_user_id
    t.string :hashed_org_id
    t.string :request_id
    t.string :source
    t.string :request_path
    t.string :controller
    t.string :action
    t.string :job_class
    t.string :app_env, null: false
    t.string :app_version
    t.string :plan
    t.boolean :internal_org
    t.boolean :paid_org
    t.jsonb :metadata, null: false, default: {}
    t.timestamps
  end

  add_index :code_sunset_events, :feature_key
  add_index :code_sunset_events, :occurred_at
  add_index :code_sunset_events, [:feature_key, :occurred_at]
  add_index :code_sunset_events, :user_id
  add_index :code_sunset_events, :org_id
  add_index :code_sunset_events, :hashed_user_id
  add_index :code_sunset_events, :hashed_org_id
  add_index :code_sunset_events, :app_env
  add_index :code_sunset_events, :plan
  add_index :code_sunset_events, :metadata, using: :gin

  create_table :code_sunset_daily_rollups do |t|
    t.string :feature_key, null: false
    t.string :app_env
    t.date :day, null: false
    t.integer :hits_count, null: false, default: 0
    t.integer :unique_users_count, null: false, default: 0
    t.integer :unique_orgs_count, null: false, default: 0
    t.datetime :last_seen_at
    t.timestamps
  end

  add_index :code_sunset_daily_rollups, [:feature_key, :app_env, :day], unique: true, name: "index_code_sunset_rollups_on_feature_env_day"
  add_index :code_sunset_daily_rollups, :day

  create_table :code_sunset_alert_deliveries do |t|
    t.string :feature_key, null: false
    t.string :status, null: false
    t.string :alert_kind, null: false
    t.datetime :delivered_at, null: false
    t.jsonb :payload, null: false, default: {}
    t.timestamps
  end

  add_index :code_sunset_alert_deliveries, [:feature_key, :status, :alert_kind, :delivered_at], name: "index_code_sunset_alerts_on_feature_status_kind_time"
  add_index :code_sunset_alert_deliveries, :delivered_at
end