diff --git a/db/migrate/20250225135843_add_rules.rb b/db/migrate/20250225135843_add_rules.rb new file mode 100644 index 00000000..28cf8e01 --- /dev/null +++ b/db/migrate/20250225135843_add_rules.rb @@ -0,0 +1,25 @@ +class AddRules < ActiveRecord::Migration[7.2] + def change + create_table :rules, id: :uuid do |t| + t.references :family, null: false, foreign_key: true, type: :uuid + + t.date :effective_date, null: false + t.boolean :active, null: false, default: true + t.timestamps + end + + create_table :rule_triggers do |t| + t.references :rule, null: false, foreign_key: true, type: :uuid + + t.string :trigger_type, null: false + t.timestamps + end + + create_table :rule_actions do |t| + t.references :rule, null: false, foreign_key: true, type: :uuid + + t.string :action_type, null: false + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 04be6dc3..aedba1e9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -468,6 +468,31 @@ ActiveRecord::Schema[7.2].define(version: 2025_03_19_212839) do t.index ["outflow_transaction_id"], name: "index_rejected_transfers_on_outflow_transaction_id" end + create_table "rule_actions", force: :cascade do |t| + t.uuid "rule_id", null: false + t.string "action_type", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["rule_id"], name: "index_rule_actions_on_rule_id" + end + + create_table "rule_triggers", force: :cascade do |t| + t.uuid "rule_id", null: false + t.string "trigger_type", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["rule_id"], name: "index_rule_triggers_on_rule_id" + end + + create_table "rules", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| + t.uuid "family_id", null: false + t.date "effective_date", null: false + t.boolean "active", default: true, null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["family_id"], name: "index_rules_on_family_id" + end + create_table "securities", id: :uuid, default: -> { "gen_random_uuid()" }, force: :cascade do |t| t.string "ticker", null: false t.string "name" @@ -661,6 +686,9 @@ ActiveRecord::Schema[7.2].define(version: 2025_03_19_212839) do add_foreign_key "plaid_items", "families" add_foreign_key "rejected_transfers", "account_transactions", column: "inflow_transaction_id" add_foreign_key "rejected_transfers", "account_transactions", column: "outflow_transaction_id" + add_foreign_key "rule_actions", "rules" + add_foreign_key "rule_triggers", "rules" + add_foreign_key "rules", "families" add_foreign_key "security_prices", "securities" add_foreign_key "sessions", "impersonation_sessions", column: "active_impersonator_session_id" add_foreign_key "sessions", "users"