2014-08-01 03:07:16 -07: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.
#
2022-01-11 17:24:38 -08:00
# 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.
2014-08-01 03:07:16 -07:00
#
# It's strongly recommended that you check this file into your version control system.
2023-05-26 11:39:53 -07:00
ActiveRecord :: Schema . define ( version : 2023_05_26_181715 ) do
2014-10-27 22:36:38 -07:00
# These are extensions that must be enabled in order to support this database
enable_extension " plpgsql "
2020-04-19 12:12:22 -07:00
create_table " announcements " , force : :cascade do | t |
t . text " content " , null : false
t . string " link_text "
t . string " link_href "
t . datetime " starts_at " , null : false
t . datetime " ends_at " , null : false
t . bigint " user_id " , null : false
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " user_id " ] , name : " index_announcements_on_user_id "
end
2022-06-14 08:09:10 -07:00
create_table " anonymous_blocks " , force : :cascade do | t |
2022-12-26 17:26:06 -08:00
t . bigint " user_id "
2022-06-14 08:09:10 -07:00
t . string " identifier "
2022-12-26 17:51:07 -08:00
t . bigint " question_id "
2022-06-14 08:09:10 -07:00
t . datetime " created_at " , precision : 6 , null : false
t . datetime " updated_at " , precision : 6 , null : false
2022-12-26 17:26:06 -08:00
t . bigint " target_user_id "
2022-06-14 08:09:10 -07:00
t . index [ " identifier " ] , name : " index_anonymous_blocks_on_identifier "
t . index [ " question_id " ] , name : " index_anonymous_blocks_on_question_id "
2022-12-26 17:26:06 -08:00
t . index [ " target_user_id " ] , name : " index_anonymous_blocks_on_target_user_id "
2022-06-14 08:09:10 -07:00
t . index [ " user_id " ] , name : " index_anonymous_blocks_on_user_id "
end
2020-07-04 11:12:53 -07:00
create_table " answers " , id : :bigint , default : - > { " gen_timestamp_id('answers'::text) " } , force : :cascade do | t |
2020-04-19 09:10:31 -07:00
t . text " content "
2020-07-04 11:12:53 -07:00
t . bigint " question_id "
2020-04-19 09:10:31 -07:00
t . integer " comment_count " , default : 0 , null : false
2020-07-04 11:12:53 -07:00
t . bigint " user_id "
2014-10-27 22:36:38 -07:00
t . datetime " created_at "
t . datetime " updated_at "
2020-04-19 09:10:31 -07:00
t . integer " smile_count " , default : 0 , null : false
2023-01-28 15:56:47 -08:00
t . datetime " pinned_at "
2023-02-18 06:32:29 -08:00
t . index [ " created_at " ] , name : " index_answers_on_created_at " , order : :desc
2020-05-09 03:07:18 -07:00
t . index [ " question_id " ] , name : " index_answers_on_question_id "
2020-04-19 09:10:31 -07:00
t . index [ " user_id " , " created_at " ] , name : " index_answers_on_user_id_and_created_at "
2023-01-28 15:56:47 -08:00
t . index [ " user_id " , " pinned_at " ] , name : " index_answers_on_user_id_and_pinned_at "
2014-10-27 22:36:38 -07:00
end
2022-07-05 13:31:15 -07:00
create_table " appendables " , force : :cascade do | t |
t . string " type " , null : false
t . bigint " user_id " , null : false
t . bigint " parent_id " , null : false
t . string " parent_type " , null : false
t . text " content "
t . datetime " created_at " , precision : 6 , null : false
t . datetime " updated_at " , precision : 6 , null : false
t . index [ " parent_id " , " parent_type " ] , name : " index_appendables_on_parent_id_and_parent_type "
t . index [ " user_id " , " created_at " ] , name : " index_appendables_on_user_id_and_created_at "
end
2020-07-04 11:12:53 -07:00
create_table " comments " , id : :bigint , default : - > { " gen_timestamp_id('comments'::text) " } , force : :cascade do | t |
2020-04-19 09:10:31 -07:00
t . string " content "
2020-07-04 11:12:53 -07:00
t . bigint " answer_id "
t . bigint " user_id "
2014-10-27 22:36:38 -07:00
t . datetime " created_at "
t . datetime " updated_at "
2020-04-19 09:10:31 -07:00
t . integer " smile_count " , default : 0 , null : false
2020-05-09 03:07:18 -07:00
t . index [ " answer_id " ] , name : " index_comments_on_answer_id "
2020-04-19 09:10:31 -07:00
t . index [ " user_id " , " created_at " ] , name : " index_comments_on_user_id_and_created_at "
2014-10-27 22:36:38 -07:00
end
2020-05-25 09:04:54 -07:00
create_table " inboxes " , id : :serial , force : :cascade do | t |
2020-07-04 11:12:53 -07:00
t . bigint " user_id "
t . bigint " question_id "
2020-05-25 09:04:54 -07:00
t . boolean " new "
2015-01-10 14:29:04 -08:00
t . datetime " created_at "
t . datetime " updated_at "
2022-04-15 12:45:19 -07:00
t . index [ " question_id " ] , name : " index_inboxes_on_question_id "
2020-05-25 09:04:54 -07:00
t . index [ " user_id " ] , name : " index_inboxes_on_user_id "
2015-01-10 14:29:04 -08:00
end
2020-05-25 09:04:54 -07:00
create_table " list_members " , id : :serial , force : :cascade do | t |
t . integer " list_id " , null : false
2020-07-04 11:12:53 -07:00
t . bigint " user_id " , null : false
2015-01-08 04:16:13 -08:00
t . datetime " created_at "
t . datetime " updated_at "
2020-05-25 09:04:54 -07:00
t . index [ " list_id " , " user_id " ] , name : " index_list_members_on_list_id_and_user_id " , unique : true
2015-01-08 04:16:13 -08:00
end
2020-05-25 09:04:54 -07:00
create_table " lists " , id : :serial , force : :cascade do | t |
2020-07-04 11:12:53 -07:00
t . bigint " user_id " , null : false
2020-05-25 09:04:54 -07:00
t . string " name "
t . string " display_name "
t . boolean " private " , default : true
2014-11-10 14:45:36 -08:00
t . datetime " created_at "
t . datetime " updated_at "
2020-05-25 09:04:54 -07:00
t . index [ " user_id " , " name " ] , name : " index_lists_on_user_id_and_name " , unique : true
2014-11-10 14:45:36 -08:00
end
2022-01-02 06:30:04 -08:00
create_table " mute_rules " , id : :bigint , default : - > { " gen_timestamp_id('mute_rules'::text) " } , force : :cascade do | t |
2022-11-06 05:59:56 -08:00
t . bigint " user_id "
2021-12-22 10:21:09 -08:00
t . string " muted_phrase "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " user_id " ] , name : " index_mute_rules_on_user_id "
end
2020-04-19 09:10:31 -07:00
create_table " notifications " , id : :serial , force : :cascade do | t |
t . string " target_type "
2020-07-04 11:12:53 -07:00
t . bigint " target_id "
t . bigint " recipient_id "
2020-04-19 09:10:31 -07:00
t . boolean " new "
2014-12-13 10:30:10 -08:00
t . datetime " created_at "
t . datetime " updated_at "
2022-07-21 12:22:00 -07:00
t . string " type " , null : false
2021-12-28 05:56:23 -08:00
t . index [ " new " ] , name : " index_notifications_on_new "
t . index [ " recipient_id " ] , name : " index_notifications_on_recipient_id "
2022-07-21 12:22:00 -07:00
t . index [ " type " ] , name : " index_notifications_on_type "
2014-12-13 10:30:10 -08:00
end
2021-12-19 07:51:04 -08:00
create_table " profiles " , force : :cascade do | t |
t . bigint " user_id "
t . string " display_name "
2021-12-19 14:51:06 -08:00
t . string " description " , default : " " , null : false
t . string " location " , default : " " , null : false
t . string " website " , default : " " , null : false
t . string " motivation_header " , default : " " , null : false
2021-12-19 07:51:04 -08:00
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2022-06-21 05:50:51 -07:00
t . string " anon_display_name "
2023-02-02 21:54:50 -08:00
t . boolean " allow_long_questions " , default : true
2021-12-19 07:51:04 -08:00
t . index [ " user_id " ] , name : " index_profiles_on_user_id "
end
2020-07-04 11:12:53 -07:00
create_table " questions " , id : :bigint , default : - > { " gen_timestamp_id('questions'::text) " } , force : :cascade do | t |
2020-04-19 09:10:31 -07:00
t . string " content "
t . boolean " author_is_anonymous "
2022-06-14 07:11:00 -07:00
t . string " author_identifier "
2020-07-04 11:12:53 -07:00
t . bigint " user_id "
2014-10-27 22:36:38 -07:00
t . datetime " created_at "
t . datetime " updated_at "
2020-04-19 09:10:31 -07:00
t . integer " answer_count " , default : 0 , null : false
2021-08-11 07:56:58 -07:00
t . boolean " direct " , default : false , null : false
2020-04-19 09:10:31 -07:00
t . index [ " user_id " , " created_at " ] , name : " index_questions_on_user_id_and_created_at "
2014-10-27 22:36:38 -07:00
end
2020-04-19 09:10:31 -07:00
create_table " relationships " , id : :serial , force : :cascade do | t |
2020-07-04 11:12:53 -07:00
t . bigint " source_id "
t . bigint " target_id "
2014-11-30 05:06:05 -08:00
t . datetime " created_at "
t . datetime " updated_at "
2021-12-31 13:19:21 -08:00
t . string " type " , null : false
2020-04-19 09:10:31 -07:00
t . index [ " source_id " , " target_id " ] , name : " index_relationships_on_source_id_and_target_id " , unique : true
t . index [ " source_id " ] , name : " index_relationships_on_source_id "
t . index [ " target_id " ] , name : " index_relationships_on_target_id "
2021-12-31 13:19:21 -08:00
t . index [ " type " ] , name : " index_relationships_on_type "
2014-11-30 05:06:05 -08:00
end
2020-04-19 09:10:31 -07:00
create_table " reports " , id : :serial , force : :cascade do | t |
t . string " type " , null : false
2020-07-04 11:12:53 -07:00
t . bigint " target_id " , null : false
t . bigint " user_id " , null : false
2014-12-27 05:35:09 -08:00
t . datetime " created_at "
t . datetime " updated_at "
2020-04-19 09:10:31 -07:00
t . boolean " deleted " , default : false
t . string " reason "
2020-05-09 03:07:18 -07:00
t . index [ " type " , " target_id " ] , name : " index_reports_on_type_and_target_id "
t . index [ " user_id " , " created_at " ] , name : " index_reports_on_user_id_and_created_at "
2014-12-27 05:35:09 -08:00
end
2020-04-19 13:35:58 -07:00
create_table " roles " , force : :cascade do | t |
t . string " name "
t . string " resource_type "
t . bigint " resource_id "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
t . index [ " name " , " resource_type " , " resource_id " ] , name : " index_roles_on_name_and_resource_type_and_resource_id "
2023-01-23 14:36:38 -08:00
t . index [ " resource_type " , " resource_id " ] , name : " index_roles_on_resource_type_and_resource_id "
2020-04-19 13:35:58 -07:00
end
2022-09-09 09:29:40 -07:00
create_table " rpush_apps " , force : :cascade do | t |
t . string " name " , null : false
t . string " environment "
t . text " certificate "
t . string " password "
t . integer " connections " , default : 1 , null : false
t . datetime " created_at " , precision : 6 , null : false
t . datetime " updated_at " , precision : 6 , null : false
t . string " type " , null : false
t . string " auth_key "
t . string " client_id "
t . string " client_secret "
t . string " access_token "
t . datetime " access_token_expiration "
t . text " apn_key "
t . string " apn_key_id "
t . string " team_id "
t . string " bundle_id "
t . boolean " feedback_enabled " , default : true
end
create_table " rpush_feedback " , force : :cascade do | t |
t . string " device_token "
t . datetime " failed_at " , null : false
t . datetime " created_at " , precision : 6 , null : false
t . datetime " updated_at " , precision : 6 , null : false
t . integer " app_id "
t . index [ " device_token " ] , name : " index_rpush_feedback_on_device_token "
end
create_table " rpush_notifications " , force : :cascade do | t |
t . integer " badge "
t . string " device_token "
t . string " sound "
t . text " alert "
t . text " data "
t . integer " expiry " , default : 86400
t . boolean " delivered " , default : false , null : false
t . datetime " delivered_at "
t . boolean " failed " , default : false , null : false
t . datetime " failed_at "
t . integer " error_code "
t . text " error_description "
t . datetime " deliver_after "
t . datetime " created_at " , precision : 6 , null : false
t . datetime " updated_at " , precision : 6 , null : false
t . boolean " alert_is_json " , default : false , null : false
t . string " type " , null : false
t . string " collapse_key "
t . boolean " delay_while_idle " , default : false , null : false
t . text " registration_ids "
t . integer " app_id " , null : false
t . integer " retries " , default : 0
t . string " uri "
t . datetime " fail_after "
t . boolean " processing " , default : false , null : false
t . integer " priority "
t . text " url_args "
t . string " category "
t . boolean " content_available " , default : false , null : false
t . text " notification "
t . boolean " mutable_content " , default : false , null : false
t . string " external_device_id "
t . string " thread_id "
t . boolean " dry_run " , default : false , null : false
t . boolean " sound_is_json " , default : false
t . index [ " delivered " , " failed " , " processing " , " deliver_after " , " created_at " ] , name : " index_rpush_notifications_multi " , where : " ((NOT delivered) AND (NOT failed)) "
end
2020-04-19 09:10:31 -07:00
create_table " subscriptions " , id : :serial , force : :cascade do | t |
2020-07-04 11:12:53 -07:00
t . bigint " user_id " , null : false
t . bigint " answer_id " , null : false
2020-04-19 09:10:31 -07:00
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2020-05-09 03:07:18 -07:00
t . index [ " user_id " , " answer_id " ] , name : " index_subscriptions_on_user_id_and_answer_id "
2015-04-21 15:31:51 -07:00
end
2020-04-19 09:10:31 -07:00
create_table " themes " , id : :serial , force : :cascade do | t |
2020-07-04 11:12:53 -07:00
t . bigint " user_id " , null : false
2020-04-19 09:10:31 -07:00
t . integer " primary_color " , default : 6174129
t . integer " primary_text " , default : 16777215
2020-05-04 16:49:01 -07:00
t . integer " danger_color " , default : 14431557
2020-04-19 09:10:31 -07:00
t . integer " danger_text " , default : 16777215
2020-05-04 16:49:01 -07:00
t . integer " success_color " , default : 2664261
2020-04-19 09:10:31 -07:00
t . integer " success_text " , default : 16777215
2020-05-04 16:49:01 -07:00
t . integer " warning_color " , default : 16761095
2020-05-07 10:28:26 -07:00
t . integer " warning_text " , default : 2697513
2020-05-04 16:49:01 -07:00
t . integer " info_color " , default : 1548984
2020-04-19 09:10:31 -07:00
t . integer " info_text " , default : 16777215
2020-05-04 16:49:01 -07:00
t . integer " dark_color " , default : 3422784
t . integer " dark_text " , default : 15658734
t . integer " raised_background " , default : 16777215
t . integer " background_color " , default : 15789556
t . integer " body_text " , default : 0
t . integer " muted_text " , default : 7107965
2020-04-19 09:10:31 -07:00
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
2020-05-04 16:49:01 -07:00
t . integer " input_color " , default : 15789556 , null : false
2020-04-19 09:10:31 -07:00
t . integer " input_text " , default : 0 , null : false
2020-05-04 16:49:01 -07:00
t . integer " raised_accent " , default : 16250871
t . integer " light_color " , default : 16316922
t . integer " light_text " , default : 0
2022-11-14 14:11:09 -08:00
t . integer " input_placeholder " , default : 7107965 , null : false
2023-01-23 14:36:38 -08:00
t . integer " raised_text " , default : 0 , null : false
t . integer " raised_accent_text " , default : 0 , null : false
2020-04-19 09:10:31 -07:00
t . index [ " user_id " , " created_at " ] , name : " index_themes_on_user_id_and_created_at "
2015-09-16 14:59:47 -07:00
end
2020-11-01 08:55:31 -08:00
create_table " totp_recovery_codes " , force : :cascade do | t |
t . bigint " user_id "
t . string " code " , limit : 8
t . index [ " user_id " , " code " ] , name : " index_totp_recovery_codes_on_user_id_and_code "
end
2021-08-14 07:07:12 -07:00
create_table " user_bans " , force : :cascade do | t |
t . bigint " user_id "
t . string " reason "
t . datetime " expires_at "
t . bigint " banned_by_id "
t . datetime " created_at " , null : false
t . datetime " updated_at " , null : false
end
2020-07-04 11:12:53 -07:00
create_table " users " , id : :bigint , default : - > { " gen_timestamp_id('users'::text) " } , force : :cascade do | t |
2020-04-19 09:10:31 -07:00
t . string " email " , default : " " , null : false
t . string " encrypted_password " , default : " " , null : false
t . string " reset_password_token "
2014-08-01 03:07:16 -07:00
t . datetime " reset_password_sent_at "
t . datetime " remember_created_at "
2020-04-19 09:10:31 -07:00
t . integer " sign_in_count " , default : 0 , null : false
2014-08-01 03:07:16 -07:00
t . datetime " current_sign_in_at "
t . datetime " last_sign_in_at "
2020-04-19 09:10:31 -07:00
t . string " current_sign_in_ip "
t . string " last_sign_in_ip "
2014-08-01 03:07:16 -07:00
t . datetime " created_at "
t . datetime " updated_at "
2020-04-19 09:10:31 -07:00
t . string " screen_name "
t . integer " asked_count " , default : 0 , null : false
t . integer " answered_count " , default : 0 , null : false
t . integer " commented_count " , default : 0 , null : false
t . integer " smiled_count " , default : 0 , null : false
t . string " profile_picture_file_name "
t . boolean " profile_picture_processing "
2020-05-17 12:14:40 -07:00
t . integer " profile_picture_x "
t . integer " profile_picture_y "
t . integer " profile_picture_w "
t . integer " profile_picture_h "
2020-04-19 09:10:31 -07:00
t . boolean " privacy_allow_anonymous_questions " , default : true
t . boolean " privacy_allow_public_timeline " , default : true
t . boolean " privacy_allow_stranger_answers " , default : true
t . boolean " privacy_show_in_search " , default : true
t . integer " comment_smiled_count " , default : 0 , null : false
t . string " profile_header_file_name "
t . boolean " profile_header_processing "
2020-05-17 12:14:40 -07:00
t . integer " profile_header_x "
t . integer " profile_header_y "
t . integer " profile_header_w "
t . integer " profile_header_h "
2020-04-19 09:10:31 -07:00
t . string " locale " , default : " en "
t . string " confirmation_token "
2015-07-21 08:55:28 -07:00
t . datetime " confirmed_at "
t . datetime " confirmation_sent_at "
2020-04-19 09:10:31 -07:00
t . string " unconfirmed_email "
t . boolean " show_foreign_themes " , default : true , null : false
t . string " export_url "
t . boolean " export_processing " , default : false , null : false
2016-01-05 09:03:39 -08:00
t . datetime " export_created_at "
2020-10-18 01:39:46 -07:00
t . string " otp_secret_key "
2020-12-24 17:07:37 -08:00
t . integer " otp_module " , default : 0 , null : false
2022-11-06 05:59:56 -08:00
t . boolean " privacy_lock_inbox " , default : false
2022-11-16 13:31:49 -08:00
t . boolean " privacy_require_user " , default : false
2022-11-18 14:29:47 -08:00
t . boolean " privacy_hide_social_graph " , default : false
2022-12-26 22:19:10 -08:00
t . boolean " privacy_noindex " , default : false
2023-02-05 09:01:21 -08:00
t . boolean " sharing_enabled " , default : false
t . boolean " sharing_autoclose " , default : false
t . string " sharing_custom_url "
2023-02-25 06:46:11 -08:00
t . datetime " notifications_updated_at "
t . datetime " inbox_updated_at "
2020-04-19 09:10:31 -07:00
t . index [ " confirmation_token " ] , name : " index_users_on_confirmation_token " , unique : true
t . index [ " email " ] , name : " index_users_on_email " , unique : true
t . index [ " reset_password_token " ] , name : " index_users_on_reset_password_token " , unique : true
t . index [ " screen_name " ] , name : " index_users_on_screen_name " , unique : true
2014-08-01 03:07:16 -07:00
end
2020-04-19 13:35:58 -07:00
create_table " users_roles " , id : false , force : :cascade do | t |
t . bigint " user_id "
t . bigint " role_id "
t . index [ " role_id " ] , name : " index_users_roles_on_role_id "
t . index [ " user_id " , " role_id " ] , name : " index_users_roles_on_user_id_and_role_id "
t . index [ " user_id " ] , name : " index_users_roles_on_user_id "
end
2022-09-11 11:10:21 -07:00
create_table " web_push_subscriptions " , force : :cascade do | t |
t . bigint " user_id " , null : false
t . json " subscription "
t . datetime " created_at " , precision : 6 , null : false
t . datetime " updated_at " , precision : 6 , null : false
2022-12-27 15:22:51 -08:00
t . integer " failures " , default : 0
2022-09-11 11:10:21 -07:00
t . index [ " user_id " ] , name : " index_web_push_subscriptions_on_user_id "
end
2021-12-25 14:58:04 -08:00
add_foreign_key " profiles " , " users "
2014-08-01 03:07:16 -07:00
end