2024-02-02 09:05:04 -06:00
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# This file is the source Rails uses to define your schema when running `bin/rails
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
# be faster and is potentially less error prone than running all of your
# migrations from scratch. Old migrations may fail to apply correctly if those
# migrations use external dependencies or application code.
#
# It's strongly recommended that you check this file into your version control system.
2024-12-17 09:58:08 -05:00
ActiveRecord :: Schema [ 7 . 2 ] . define ( version : 2024_12_17_141716 ) do
2024-02-02 09:05:04 -06:00
# These are extensions that must be enabled in order to support this database
enable_extension " pgcrypto "
enable_extension " plpgsql "
2024-03-11 16:32:13 -04:00
# Custom types defined in this database.
# Note that some types may not work with other database engines. Be careful if changing database.
create_enum " account_status " , [ " ok " , " syncing " , " error " ]
2024-05-17 09:09:32 -04:00
create_enum " import_status " , [ " pending " , " importing " , " complete " , " failed " ]
2024-03-11 16:32:13 -04:00
2024-02-14 13:02:11 -05:00
create_table " account_balances " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " account_id " , null : false
t . date " date " , null : false
t . decimal " balance " , precision : 19 , scale : 4 , null : false
t . string " currency " , default : " USD " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-12-10 17:41:20 -05:00
t . decimal " cash_balance " , precision : 19 , scale : 4 , default : " 0.0 "
2024-03-21 13:39:10 -04:00
t . index [ " account_id " , " date " , " currency " ] , name : " index_account_balances_on_account_id_date_currency_unique " , unique : true
2024-02-14 13:02:11 -05:00
t . index [ " account_id " ] , name : " index_account_balances_on_account_id "
end
2024-07-01 10:49:43 -04:00
create_table " account_entries " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
2024-06-24 11:58:39 -04:00
t . uuid " account_id " , null : false
2024-07-01 10:49:43 -04:00
t . string " entryable_type "
t . uuid " entryable_id "
t . decimal " amount " , precision : 19 , scale : 4
t . string " currency "
t . date " date "
t . string " name "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . uuid " transfer_id "
t . boolean " marked_as_transfer " , default : false , null : false
2024-10-01 10:47:59 -04:00
t . uuid " import_id "
2024-10-09 14:59:18 -04:00
t . text " notes "
t . boolean " excluded " , default : false
2024-11-15 13:49:37 -05:00
t . string " plaid_id "
2024-12-13 17:22:27 -05:00
t . datetime " enriched_at "
2024-07-01 10:49:43 -04:00
t . index [ " account_id " ] , name : " index_account_entries_on_account_id "
2024-10-01 10:47:59 -04:00
t . index [ " import_id " ] , name : " index_account_entries_on_import_id "
2024-07-01 10:49:43 -04:00
t . index [ " transfer_id " ] , name : " index_account_entries_on_transfer_id "
end
2024-07-16 09:26:49 -04:00
create_table " account_holdings " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " account_id " , null : false
t . uuid " security_id " , null : false
t . date " date "
t . decimal " qty " , precision : 19 , scale : 4
t . decimal " price " , precision : 19 , scale : 4
t . decimal " amount " , precision : 19 , scale : 4
t . string " currency "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " account_id " , " security_id " , " date " , " currency " ] , name : " idx_on_account_id_security_id_date_currency_234024c8e3 " , unique : true
t . index [ " account_id " ] , name : " index_account_holdings_on_account_id "
t . index [ " security_id " ] , name : " index_account_holdings_on_security_id "
end
create_table " account_trades " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " security_id " , null : false
t . decimal " qty " , precision : 19 , scale : 4
t . decimal " price " , precision : 19 , scale : 4
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-08-09 11:22:57 -04:00
t . string " currency "
2024-07-16 09:26:49 -04:00
t . index [ " security_id " ] , name : " index_account_trades_on_security_id "
end
2024-07-01 10:49:43 -04:00
create_table " account_transactions " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
2024-06-24 11:58:39 -04:00
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . uuid " category_id "
t . uuid " merchant_id "
t . index [ " category_id " ] , name : " index_account_transactions_on_category_id "
t . index [ " merchant_id " ] , name : " index_account_transactions_on_merchant_id "
end
2024-06-20 13:32:44 -04:00
create_table " account_transfers " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2024-06-21 16:23:28 -04:00
create_table " account_valuations " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2024-02-02 09:05:04 -06:00
create_table " accounts " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " subtype "
t . uuid " family_id " , null : false
t . string " name "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-02-02 23:09:35 +00:00
t . string " accountable_type "
t . uuid " accountable_id "
2024-07-17 08:57:17 -04:00
t . decimal " balance " , precision : 19 , scale : 4
t . string " currency "
2024-03-07 10:55:51 -05:00
t . boolean " is_active " , default : true , null : false
2024-11-22 20:28:10 +00:00
t . virtual " classification " , type : :string , as : " \n CASE \n WHEN ((accountable_type)::text = ANY (ARRAY[('Loan'::character varying)::text, ('CreditCard'::character varying)::text, ('OtherLiability'::character varying)::text])) THEN 'liability'::text \n ELSE 'asset'::text \n END " , stored : true
2024-10-01 10:47:59 -04:00
t . uuid " import_id "
2024-11-15 13:49:37 -05:00
t . uuid " plaid_account_id "
t . boolean " scheduled_for_deletion " , default : false
t . datetime " last_synced_at "
2024-12-10 17:41:20 -05:00
t . decimal " cash_balance " , precision : 19 , scale : 4 , default : " 0.0 "
2024-10-17 15:45:13 -05:00
t . index [ " accountable_id " , " accountable_type " ] , name : " index_accounts_on_accountable_id_and_accountable_type "
2024-02-02 23:09:35 +00:00
t . index [ " accountable_type " ] , name : " index_accounts_on_accountable_type "
2024-10-17 15:45:13 -05:00
t . index [ " family_id " , " accountable_type " ] , name : " index_accounts_on_family_id_and_accountable_type "
t . index [ " family_id " , " id " ] , name : " index_accounts_on_family_id_and_id "
2024-02-02 09:05:04 -06:00
t . index [ " family_id " ] , name : " index_accounts_on_family_id "
2024-10-01 10:47:59 -04:00
t . index [ " import_id " ] , name : " index_accounts_on_import_id "
2024-11-15 13:49:37 -05:00
t . index [ " plaid_account_id " ] , name : " index_accounts_on_plaid_account_id "
2024-02-02 09:05:04 -06:00
end
2024-04-30 18:38:33 +01:00
create_table " active_storage_attachments " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name " , null : false
t . string " record_type " , null : false
t . uuid " record_id " , null : false
t . uuid " blob_id " , null : false
t . datetime " created_at " , null : false
t . index [ " blob_id " ] , name : " index_active_storage_attachments_on_blob_id "
t . index [ " record_type " , " record_id " , " name " , " blob_id " ] , name : " index_active_storage_attachments_uniqueness " , unique : true
end
create_table " active_storage_blobs " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " key " , null : false
t . string " filename " , null : false
t . string " content_type "
t . text " metadata "
t . string " service_name " , null : false
t . bigint " byte_size " , null : false
t . string " checksum "
t . datetime " created_at " , null : false
t . index [ " key " ] , name : " index_active_storage_blobs_on_key " , unique : true
end
create_table " active_storage_variant_records " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " blob_id " , null : false
t . string " variation_digest " , null : false
t . index [ " blob_id " , " variation_digest " ] , name : " index_active_storage_variant_records_uniqueness " , unique : true
end
2024-08-23 08:47:08 -04:00
create_table " addresses " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " addressable_type "
t . uuid " addressable_id "
t . string " line1 "
t . string " line2 "
t . string " county "
t . string " locality "
t . string " region "
t . string " country "
t . integer " postal_code "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " addressable_type " , " addressable_id " ] , name : " index_addresses_on_addressable "
end
2024-06-20 08:15:09 -04:00
create_table " categories " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name " , null : false
t . string " color " , default : " # 6172F3 " , null : false
t . string " internal_category "
t . uuid " family_id " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " family_id " ] , name : " index_categories_on_family_id "
end
2024-06-20 07:26:25 -04:00
create_table " credit_cards " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-10-08 17:16:37 -04:00
t . decimal " available_credit " , precision : 10 , scale : 2
t . decimal " minimum_payment " , precision : 10 , scale : 2
t . decimal " apr " , precision : 10 , scale : 2
t . date " expiration_date "
t . decimal " annual_fee " , precision : 10 , scale : 2
2024-06-20 07:26:25 -04:00
end
create_table " cryptos " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
create_table " depositories " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2024-02-10 16:18:56 -06:00
create_table " exchange_rates " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
2024-07-08 09:04:59 -04:00
t . string " from_currency " , null : false
t . string " to_currency " , null : false
2024-02-10 16:18:56 -06:00
t . decimal " rate "
t . date " date "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-07-08 09:04:59 -04:00
t . index [ " from_currency " , " to_currency " , " date " ] , name : " index_exchange_rates_on_base_converted_date_unique " , unique : true
t . index [ " from_currency " ] , name : " index_exchange_rates_on_from_currency "
t . index [ " to_currency " ] , name : " index_exchange_rates_on_to_currency "
2024-02-10 16:18:56 -06:00
end
2024-02-02 09:05:04 -06:00
create_table " families " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-02-10 16:18:56 -06:00
t . string " currency " , default : " USD "
2024-10-02 14:02:17 -04:00
t . string " locale " , default : " en "
2024-10-08 14:37:47 -05:00
t . string " stripe_plan_id "
t . string " stripe_customer_id "
t . string " stripe_subscription_status " , default : " incomplete "
2024-10-23 11:20:55 -04:00
t . string " date_format " , default : " %m-%d-%Y "
t . string " country " , default : " US "
2024-11-15 13:49:37 -05:00
t . datetime " last_synced_at "
2024-12-10 17:41:20 -05:00
t . string " timezone "
2024-12-17 09:58:08 -05:00
t . boolean " data_enrichment_enabled " , default : false
2024-02-10 16:18:56 -06:00
end
create_table " good_job_batches " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . text " description "
t . jsonb " serialized_properties "
t . text " on_finish "
t . text " on_success "
t . text " on_discard "
t . text " callback_queue_name "
t . integer " callback_priority "
t . datetime " enqueued_at "
t . datetime " discarded_at "
t . datetime " finished_at "
end
create_table " good_job_executions " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . uuid " active_job_id " , null : false
t . text " job_class "
t . text " queue_name "
t . jsonb " serialized_params "
t . datetime " scheduled_at "
t . datetime " finished_at "
t . text " error "
t . integer " error_event " , limit : 2
2024-07-09 20:23:19 +02:00
t . text " error_backtrace " , array : true
t . uuid " process_id "
t . interval " duration "
2024-02-10 16:18:56 -06:00
t . index [ " active_job_id " , " created_at " ] , name : " index_good_job_executions_on_active_job_id_and_created_at "
2024-07-09 20:23:19 +02:00
t . index [ " process_id " , " created_at " ] , name : " index_good_job_executions_on_process_id_and_created_at "
2024-02-10 16:18:56 -06:00
end
create_table " good_job_processes " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . jsonb " state "
2024-07-09 20:23:19 +02:00
t . integer " lock_type " , limit : 2
2024-02-10 16:18:56 -06:00
end
create_table " good_job_settings " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . text " key "
t . jsonb " value "
t . index [ " key " ] , name : " index_good_job_settings_on_key " , unique : true
end
create_table " good_jobs " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . text " queue_name "
t . integer " priority "
t . jsonb " serialized_params "
t . datetime " scheduled_at "
t . datetime " performed_at "
t . datetime " finished_at "
t . text " error "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . uuid " active_job_id "
t . text " concurrency_key "
t . text " cron_key "
t . uuid " retried_good_job_id "
t . datetime " cron_at "
t . uuid " batch_id "
t . uuid " batch_callback_id "
t . boolean " is_discrete "
t . integer " executions_count "
t . text " job_class "
t . integer " error_event " , limit : 2
t . text " labels " , array : true
2024-07-09 20:23:19 +02:00
t . uuid " locked_by_id "
t . datetime " locked_at "
2024-02-10 16:18:56 -06:00
t . index [ " active_job_id " , " created_at " ] , name : " index_good_jobs_on_active_job_id_and_created_at "
t . index [ " batch_callback_id " ] , name : " index_good_jobs_on_batch_callback_id " , where : " (batch_callback_id IS NOT NULL) "
t . index [ " batch_id " ] , name : " index_good_jobs_on_batch_id " , where : " (batch_id IS NOT NULL) "
t . index [ " concurrency_key " ] , name : " index_good_jobs_on_concurrency_key_when_unfinished " , where : " (finished_at IS NULL) "
t . index [ " cron_key " , " created_at " ] , name : " index_good_jobs_on_cron_key_and_created_at_cond " , where : " (cron_key IS NOT NULL) "
t . index [ " cron_key " , " cron_at " ] , name : " index_good_jobs_on_cron_key_and_cron_at_cond " , unique : true , where : " (cron_key IS NOT NULL) "
t . index [ " finished_at " ] , name : " index_good_jobs_jobs_on_finished_at " , where : " ((retried_good_job_id IS NULL) AND (finished_at IS NOT NULL)) "
t . index [ " labels " ] , name : " index_good_jobs_on_labels " , where : " (labels IS NOT NULL) " , using : :gin
2024-07-09 20:23:19 +02:00
t . index [ " locked_by_id " ] , name : " index_good_jobs_on_locked_by_id " , where : " (locked_by_id IS NOT NULL) "
2024-02-10 16:18:56 -06:00
t . index [ " priority " , " created_at " ] , name : " index_good_job_jobs_for_candidate_lookup " , where : " (finished_at IS NULL) "
t . index [ " priority " , " created_at " ] , name : " index_good_jobs_jobs_on_priority_created_at_when_unfinished " , order : { priority : " DESC NULLS LAST " } , where : " (finished_at IS NULL) "
2024-07-09 20:23:19 +02:00
t . index [ " priority " , " scheduled_at " ] , name : " index_good_jobs_on_priority_scheduled_at_unfinished_unlocked " , where : " ((finished_at IS NULL) AND (locked_by_id IS NULL)) "
2024-02-10 16:18:56 -06:00
t . index [ " queue_name " , " scheduled_at " ] , name : " index_good_jobs_on_queue_name_and_scheduled_at " , where : " (finished_at IS NULL) "
t . index [ " scheduled_at " ] , name : " index_good_jobs_on_scheduled_at " , where : " (finished_at IS NULL) "
2024-02-02 09:05:04 -06:00
end
2024-10-17 15:45:13 -05:00
create_table " impersonation_session_logs " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " impersonation_session_id " , null : false
t . string " controller "
t . string " action "
t . text " path "
t . string " method "
t . string " ip_address "
t . text " user_agent "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " impersonation_session_id " ] , name : " index_impersonation_session_logs_on_impersonation_session_id "
end
create_table " impersonation_sessions " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " impersonator_id " , null : false
t . uuid " impersonated_id " , null : false
t . string " status " , default : " pending " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " impersonated_id " ] , name : " index_impersonation_sessions_on_impersonated_id "
t . index [ " impersonator_id " ] , name : " index_impersonation_sessions_on_impersonator_id "
end
2024-10-01 10:47:59 -04:00
create_table " import_mappings " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " type " , null : false
t . string " key "
t . string " value "
t . boolean " create_when_empty " , default : true
t . uuid " import_id " , null : false
t . string " mappable_type "
t . uuid " mappable_id "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " import_id " ] , name : " index_import_mappings_on_import_id "
t . index [ " mappable_type " , " mappable_id " ] , name : " index_import_mappings_on_mappable "
end
create_table " import_rows " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " import_id " , null : false
t . string " account "
t . string " date "
t . string " qty "
t . string " ticker "
t . string " price "
t . string " amount "
t . string " currency "
t . string " name "
t . string " category "
t . string " tags "
t . string " entity_type "
t . text " notes "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " import_id " ] , name : " index_import_rows_on_import_id "
end
2024-05-17 09:09:32 -04:00
create_table " imports " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . jsonb " column_mappings "
t . enum " status " , default : " pending " , enum_type : " import_status "
2024-08-19 14:25:07 +01:00
t . string " raw_file_str "
2024-05-17 09:09:32 -04:00
t . string " normalized_csv_str "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-08-16 20:00:16 +02:00
t . string " col_sep " , default : " , "
2024-10-01 10:47:59 -04:00
t . uuid " family_id " , null : false
t . uuid " original_account_id "
t . string " type " , null : false
t . string " date_col_label " , default : " date "
t . string " amount_col_label " , default : " amount "
t . string " name_col_label " , default : " name "
t . string " category_col_label " , default : " category "
t . string " tags_col_label " , default : " tags "
t . string " account_col_label " , default : " account "
t . string " qty_col_label " , default : " qty "
t . string " ticker_col_label " , default : " ticker "
t . string " price_col_label " , default : " price "
t . string " entity_type_col_label " , default : " type "
t . string " notes_col_label " , default : " notes "
t . string " currency_col_label " , default : " currency "
t . string " date_format " , default : " %m/%d/%Y "
t . string " signage_convention " , default : " inflows_positive "
t . string " error "
t . index [ " family_id " ] , name : " index_imports_on_family_id "
2024-05-17 09:09:32 -04:00
end
2024-06-20 07:26:25 -04:00
create_table " investments " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2024-11-01 10:23:27 -05:00
create_table " invitations " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " email "
t . string " role "
t . string " token "
t . uuid " family_id " , null : false
t . uuid " inviter_id " , null : false
t . datetime " accepted_at "
t . datetime " expires_at "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-11-08 16:58:35 +01:00
t . index [ " email " , " family_id " ] , name : " index_invitations_on_email_and_family_id " , unique : true
2024-11-01 10:23:27 -05:00
t . index [ " email " ] , name : " index_invitations_on_email "
t . index [ " family_id " ] , name : " index_invitations_on_family_id "
t . index [ " inviter_id " ] , name : " index_invitations_on_inviter_id "
t . index [ " token " ] , name : " index_invitations_on_token " , unique : true
end
2024-02-02 17:49:28 -06:00
create_table " invite_codes " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " token " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-02-02 23:06:31 -06:00
t . index [ " token " ] , name : " index_invite_codes_on_token " , unique : true
2024-02-02 17:49:28 -06:00
end
2024-08-16 12:13:48 -04:00
create_table " issues " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " issuable_type "
t . uuid " issuable_id "
t . string " type "
t . integer " severity "
t . datetime " last_observed_at "
t . datetime " resolved_at "
t . jsonb " data "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " issuable_type " , " issuable_id " ] , name : " index_issues_on_issuable "
end
2024-06-20 07:26:25 -04:00
create_table " loans " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-10-08 17:16:37 -04:00
t . string " rate_type "
2024-11-22 20:28:10 +00:00
t . decimal " interest_rate " , precision : 10 , scale : 3
2024-10-08 17:16:37 -04:00
t . integer " term_months "
2024-06-20 07:26:25 -04:00
end
2024-06-20 08:38:59 -04:00
create_table " merchants " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name " , null : false
t . string " color " , default : " # e99537 " , null : false
t . uuid " family_id " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-12-13 17:22:27 -05:00
t . string " icon_url "
t . datetime " enriched_at "
2024-06-20 08:38:59 -04:00
t . index [ " family_id " ] , name : " index_merchants_on_family_id "
end
2024-06-20 07:26:25 -04:00
create_table " other_assets " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
create_table " other_liabilities " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2024-11-15 13:49:37 -05:00
create_table " plaid_accounts " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " plaid_item_id " , null : false
t . string " plaid_id "
t . string " plaid_type "
t . string " plaid_subtype "
t . decimal " current_balance " , precision : 19 , scale : 4
t . decimal " available_balance " , precision : 19 , scale : 4
t . string " currency "
t . string " name "
t . string " mask "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " plaid_item_id " ] , name : " index_plaid_accounts_on_plaid_item_id "
end
create_table " plaid_items " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " family_id " , null : false
t . string " access_token "
t . string " plaid_id "
t . string " name "
t . string " next_cursor "
t . boolean " scheduled_for_deletion " , default : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . string " available_products " , default : [ ] , array : true
t . string " billed_products " , default : [ ] , array : true
t . datetime " last_synced_at "
t . index [ " family_id " ] , name : " index_plaid_items_on_family_id "
end
2024-06-20 07:26:25 -04:00
create_table " properties " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-08-23 08:47:08 -04:00
t . integer " year_built "
t . integer " area_value "
t . string " area_unit "
2024-06-20 07:26:25 -04:00
end
2024-07-16 09:26:49 -04:00
create_table " securities " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
2024-08-01 19:43:23 -04:00
t . string " ticker "
2024-07-16 09:26:49 -04:00
t . string " name "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-10-24 16:36:50 -05:00
t . string " country_code "
2024-10-25 13:09:02 -05:00
t . string " exchange_mic "
t . string " exchange_acronym "
2024-11-27 16:01:50 -05:00
t . string " logo_url "
2024-10-24 16:36:50 -05:00
t . index [ " country_code " ] , name : " index_securities_on_country_code "
2024-10-25 13:09:02 -05:00
t . index [ " ticker " , " exchange_mic " ] , name : " index_securities_on_ticker_and_exchange_mic " , unique : true
2024-07-16 09:26:49 -04:00
end
create_table " security_prices " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
2024-08-01 19:43:23 -04:00
t . string " ticker "
2024-07-16 09:26:49 -04:00
t . date " date "
t . decimal " price " , precision : 19 , scale : 4
t . string " currency " , default : " USD "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-10-29 15:37:59 -04:00
t . uuid " security_id "
t . index [ " security_id " ] , name : " index_security_prices_on_security_id "
2024-07-16 09:26:49 -04:00
end
2024-10-03 14:42:22 -04:00
create_table " sessions " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " user_id " , null : false
t . string " user_agent "
t . string " ip_address "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-10-18 11:26:58 -05:00
t . uuid " active_impersonator_session_id "
2024-10-24 11:02:27 -04:00
t . datetime " subscribed_at "
2024-10-18 11:26:58 -05:00
t . index [ " active_impersonator_session_id " ] , name : " index_sessions_on_active_impersonator_session_id "
2024-10-03 14:42:22 -04:00
t . index [ " user_id " ] , name : " index_sessions_on_user_id "
end
2024-04-13 09:28:45 -04:00
create_table " settings " , force : :cascade do | t |
t . string " var " , null : false
t . text " value "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " var " ] , name : " index_settings_on_var " , unique : true
end
2024-10-22 14:30:57 -05:00
create_table " stock_exchanges " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name " , null : false
t . string " acronym "
t . string " mic " , null : false
t . string " country " , null : false
t . string " country_code " , null : false
2024-10-30 09:23:44 -04:00
t . string " city "
2024-10-22 14:30:57 -05:00
t . string " website "
2024-10-30 09:23:44 -04:00
t . string " timezone_name "
t . string " timezone_abbr "
2024-10-22 14:30:57 -05:00
t . string " timezone_abbr_dst "
2024-10-30 09:23:44 -04:00
t . string " currency_code "
t . string " currency_symbol "
t . string " currency_name "
2024-10-22 14:30:57 -05:00
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " country " ] , name : " index_stock_exchanges_on_country "
t . index [ " country_code " ] , name : " index_stock_exchanges_on_country_code "
t . index [ " currency_code " ] , name : " index_stock_exchanges_on_currency_code "
end
2024-11-15 13:49:37 -05:00
create_table " syncs " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " syncable_type " , null : false
t . uuid " syncable_id " , null : false
t . datetime " last_ran_at "
t . date " start_date "
t . string " status " , default : " pending "
t . string " error "
t . jsonb " data "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " syncable_type " , " syncable_id " ] , name : " index_syncs_on_syncable "
end
2024-05-23 08:09:33 -04:00
create_table " taggings " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " tag_id " , null : false
t . string " taggable_type "
t . uuid " taggable_id "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " tag_id " ] , name : " index_taggings_on_tag_id "
t . index [ " taggable_type " , " taggable_id " ] , name : " index_taggings_on_taggable "
end
create_table " tags " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name "
t . string " color " , default : " # e99537 " , null : false
t . uuid " family_id " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " family_id " ] , name : " index_tags_on_family_id "
end
2024-02-02 09:05:04 -06:00
create_table " users " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " family_id " , null : false
t . string " first_name "
t . string " last_name "
t . string " email "
t . string " password_digest "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-04-13 09:28:45 -04:00
t . string " last_prompted_upgrade_commit_sha "
t . string " last_alerted_upgrade_commit_sha "
2024-10-18 17:18:54 -04:00
t . string " role " , default : " member " , null : false
2024-04-30 16:40:31 +01:00
t . boolean " active " , default : true , null : false
2024-10-23 11:20:55 -04:00
t . datetime " onboarded_at "
2024-03-25 20:59:49 +01:00
t . index [ " email " ] , name : " index_users_on_email " , unique : true
2024-02-02 09:05:04 -06:00
t . index [ " family_id " ] , name : " index_users_on_family_id "
end
2024-06-20 07:26:25 -04:00
create_table " vehicles " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-08-23 09:33:42 -04:00
t . integer " year "
t . integer " mileage_value "
t . string " mileage_unit "
t . string " make "
t . string " model "
2024-06-20 07:26:25 -04:00
end
2024-02-14 13:02:11 -05:00
add_foreign_key " account_balances " , " accounts " , on_delete : :cascade
2024-07-01 10:49:43 -04:00
add_foreign_key " account_entries " , " account_transfers " , column : " transfer_id "
add_foreign_key " account_entries " , " accounts "
2024-10-01 10:47:59 -04:00
add_foreign_key " account_entries " , " imports "
2024-07-16 09:26:49 -04:00
add_foreign_key " account_holdings " , " accounts "
add_foreign_key " account_holdings " , " securities "
add_foreign_key " account_trades " , " securities "
2024-06-24 11:58:39 -04:00
add_foreign_key " account_transactions " , " categories " , on_delete : :nullify
add_foreign_key " account_transactions " , " merchants "
2024-02-02 09:05:04 -06:00
add_foreign_key " accounts " , " families "
2024-10-01 10:47:59 -04:00
add_foreign_key " accounts " , " imports "
2024-11-15 13:49:37 -05:00
add_foreign_key " accounts " , " plaid_accounts "
2024-04-30 18:38:33 +01:00
add_foreign_key " active_storage_attachments " , " active_storage_blobs " , column : " blob_id "
add_foreign_key " active_storage_variant_records " , " active_storage_blobs " , column : " blob_id "
2024-06-20 08:15:09 -04:00
add_foreign_key " categories " , " families "
2024-10-17 15:45:13 -05:00
add_foreign_key " impersonation_session_logs " , " impersonation_sessions "
add_foreign_key " impersonation_sessions " , " users " , column : " impersonated_id "
add_foreign_key " impersonation_sessions " , " users " , column : " impersonator_id "
2024-10-01 10:47:59 -04:00
add_foreign_key " import_rows " , " imports "
add_foreign_key " imports " , " families "
2024-11-01 10:23:27 -05:00
add_foreign_key " invitations " , " families "
add_foreign_key " invitations " , " users " , column : " inviter_id "
2024-06-20 08:38:59 -04:00
add_foreign_key " merchants " , " families "
2024-11-15 13:49:37 -05:00
add_foreign_key " plaid_accounts " , " plaid_items "
add_foreign_key " plaid_items " , " families "
2024-10-29 15:37:59 -04:00
add_foreign_key " security_prices " , " securities "
2024-10-18 11:26:58 -05:00
add_foreign_key " sessions " , " impersonation_sessions " , column : " active_impersonator_session_id "
2024-10-03 14:42:22 -04:00
add_foreign_key " sessions " , " users "
2024-05-23 08:09:33 -04:00
add_foreign_key " taggings " , " tags "
add_foreign_key " tags " , " families "
2024-02-02 09:05:04 -06:00
add_foreign_key " users " , " families "
end