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-04-13 09:28:45 -04:00
ActiveRecord :: Schema [ 7 . 2 ] . define ( version : 2024_04_11_102931 ) 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-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-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-02-02 23:09:35 +00:00
create_table " account_credits " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2024-03-19 14:34:35 -05:00
create_table " account_cryptos " , 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 23:09:35 +00:00
create_table " account_depositories " , 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 " account_investments " , 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 " account_loans " , 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 " account_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 " account_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
create_table " account_properties " , 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 " account_vehicles " , 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-02-27 12:43:49 -05:00
t . decimal " balance " , precision : 19 , scale : 4 , default : " 0.0 "
t . string " currency " , default : " USD "
2024-04-13 09:28:45 -04:00
t . virtual " classification " , type : :string , as : " \n CASE \n WHEN ((accountable_type)::text = ANY (ARRAY[('Account::Loan'::character varying)::text, ('Account::Credit'::character varying)::text, ('Account::OtherLiability'::character varying)::text])) THEN 'liability'::text \n ELSE 'asset'::text \n END " , stored : true
2024-03-07 10:55:51 -05:00
t . boolean " is_active " , default : true , null : false
2024-03-11 16:32:13 -04:00
t . enum " status " , default : " ok " , null : false , enum_type : " account_status "
t . jsonb " sync_warnings " , default : " [] " , null : false
t . jsonb " sync_errors " , default : " [] " , null : false
2024-04-04 23:00:12 +02:00
t . date " last_sync_date "
2024-02-02 23:09:35 +00:00
t . index [ " accountable_type " ] , name : " index_accounts_on_accountable_type "
2024-02-02 09:05:04 -06:00
t . index [ " family_id " ] , name : " index_accounts_on_family_id "
end
2024-02-10 16:18:56 -06:00
create_table " exchange_rates " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " base_currency " , null : false
t . string " converted_currency " , null : false
t . decimal " rate "
t . date " date "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-03-21 13:39:10 -04:00
t . index [ " base_currency " , " converted_currency " , " date " ] , name : " index_exchange_rates_on_base_converted_date_unique " , unique : true
2024-02-10 16:18:56 -06:00
t . index [ " base_currency " ] , name : " index_exchange_rates_on_base_currency "
t . index [ " converted_currency " ] , name : " index_exchange_rates_on_converted_currency "
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 "
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
t . index [ " active_job_id " , " created_at " ] , name : " index_good_job_executions_on_active_job_id_and_created_at "
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 "
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
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
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) "
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-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-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-03-07 19:15:50 +01:00
create_table " transaction_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_transaction_categories_on_family_id "
end
2024-02-23 21:34:33 -05:00
create_table " transactions " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . string " name "
t . date " date " , null : false
t . decimal " amount " , precision : 19 , scale : 4 , null : false
t . string " currency " , default : " USD " , null : false
t . uuid " account_id " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2024-03-07 19:15:50 +01:00
t . uuid " category_id "
2024-03-10 21:38:31 +00:00
t . boolean " excluded " , default : false
t . text " notes "
2024-02-23 21:34:33 -05:00
t . index [ " account_id " ] , name : " index_transactions_on_account_id "
2024-03-07 19:15:50 +01:00
t . index [ " category_id " ] , name : " index_transactions_on_category_id "
2024-02-23 21:34:33 -05:00
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-04 23:00:12 +02:00
t . datetime " last_login_at "
2024-04-13 09:28:45 -04:00
t . string " last_prompted_upgrade_commit_sha "
t . string " last_alerted_upgrade_commit_sha "
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-02-20 09:07:55 -05:00
create_table " valuations " , id : :uuid , default : - > { " gen_random_uuid() " } , force : :cascade do | t |
t . uuid " account_id " , null : false
t . date " date " , null : false
t . decimal " value " , 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
t . index [ " account_id " , " date " ] , name : " index_valuations_on_account_id_and_date " , unique : true
t . index [ " account_id " ] , name : " index_valuations_on_account_id "
end
2024-02-14 13:02:11 -05:00
add_foreign_key " account_balances " , " accounts " , on_delete : :cascade
2024-02-02 09:05:04 -06:00
add_foreign_key " accounts " , " families "
2024-03-07 19:15:50 +01:00
add_foreign_key " transaction_categories " , " families "
2024-02-23 21:34:33 -05:00
add_foreign_key " transactions " , " accounts " , on_delete : :cascade
2024-04-04 17:29:50 -04:00
add_foreign_key " transactions " , " transaction_categories " , column : " category_id " , on_delete : :nullify
2024-02-02 09:05:04 -06:00
add_foreign_key " users " , " families "
2024-02-20 09:07:55 -05:00
add_foreign_key " valuations " , " accounts " , on_delete : :cascade
2024-02-02 09:05:04 -06:00
end